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 + |