diff options
| -rw-r--r-- | app/controllers/v1/configs_controller.rb | 9 | ||||
| -rw-r--r-- | features/authentication.feature | 24 | ||||
| -rw-r--r-- | features/config.feature | 17 | ||||
| -rw-r--r-- | features/step_definitions/api_steps.rb | 5 | ||||
| -rw-r--r-- | features/step_definitions/auth_steps.rb | 6 | 
5 files changed, 60 insertions, 1 deletions
diff --git a/app/controllers/v1/configs_controller.rb b/app/controllers/v1/configs_controller.rb index a43861b..b11b0a9 100644 --- a/app/controllers/v1/configs_controller.rb +++ b/app/controllers/v1/configs_controller.rb @@ -1,8 +1,17 @@  class V1::ConfigsController < ApplicationController +  CONFIGS = { +    services: { +      soledad: "/1/configs/soledad-service.json", +      eip: "/1/configs/eip-service.json", +      smtp: "/1/configs/smtp-service.json" +    } +  } +    before_filter :require_login    def index +    render json: CONFIGS    end    def show diff --git a/features/authentication.feature b/features/authentication.feature new file mode 100644 index 0000000..52b562f --- /dev/null +++ b/features/authentication.feature @@ -0,0 +1,24 @@ +Feature: Authentication + +  Authentication is handled with SRP. Once the SRP handshake has been successful a token will be transmitted. This token is used to authenticate further requests. + +  In the scenarios MY_AUTH_TOKEN will serve as a placeholder for the actual token received. + +  Background: +    Given I set headers: +      | Accept        | application/json | +      | Content-Type  | application/json | + +  Scenario: Submitting a valid token +    Given I authenticated +    And I set headers: +      | Authorization | Token token="MY_AUTH_TOKEN" | +    When I send a GET request to "/1/configs.json" +    Then the response status should be "200" + +  Scenario: Submitting an invalid token +    Given I authenticated +    And I set headers: +      | Authorization | Token token="InvalidToken" | +    When I send a GET request to "/1/configs.json" +    Then the response status should be "401" diff --git a/features/config.feature b/features/config.feature index 2d237f2..f53d0bf 100644 --- a/features/config.feature +++ b/features/config.feature @@ -37,3 +37,20 @@ Feature: Download Provider Configuration        """        {"error": "Please log in to perform that action."}        """ + +  Scenario: Fetch list of available configs +    Given I authenticated +    And I set headers: +      | Authorization | Token token="MY_AUTH_TOKEN" | +    When I send a GET request to "/1/configs.json" +    Then the response status should be "200" +    And the response should be: +      """ +      { +        "services": { +          "soledad": "/1/configs/soledad-service.json", +          "eip": "/1/configs/eip-service.json", +          "smtp": "/1/configs/smtp-service.json" +        } +      } +      """ diff --git a/features/step_definitions/api_steps.rb b/features/step_definitions/api_steps.rb index 0e52f7a..3a24d68 100644 --- a/features/step_definitions/api_steps.rb +++ b/features/step_definitions/api_steps.rb @@ -14,7 +14,10 @@ if defined?(Rack)  end  Given /^I set headers:$/ do |headers| -  headers.rows_hash.each {|k,v| header k, v } +  headers.rows_hash.each do |key,value| +    value.sub!('MY_AUTH_TOKEN', @my_auth_token.to_s) if @my_auth_token +    header key, value +  end  end  Given /^I send and accept (XML|JSON)$/ do |type| diff --git a/features/step_definitions/auth_steps.rb b/features/step_definitions/auth_steps.rb new file mode 100644 index 0000000..00d9004 --- /dev/null +++ b/features/step_definitions/auth_steps.rb @@ -0,0 +1,6 @@ + +Given /^I authenticated$/ do +  @user = FactoryGirl.create(:user) +  @my_auth_token = Token.create user_id: @user.id +end +  | 
