summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--app/controllers/v1/configs_controller.rb9
-rw-r--r--features/authentication.feature24
-rw-r--r--features/config.feature17
-rw-r--r--features/step_definitions/api_steps.rb5
-rw-r--r--features/step_definitions/auth_steps.rb6
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
+