summaryrefslogtreecommitdiff
path: root/features/step_definitions
diff options
context:
space:
mode:
authorazul <azul@leap.se>2014-07-17 12:16:07 +0200
committerazul <azul@leap.se>2014-07-17 12:16:07 +0200
commitade74d8a9091ae607586d7b287a0579a2ee7af8e (patch)
tree74273b8ba7e35d0fb3c96aa79e63c93086d15146 /features/step_definitions
parent952bc18e8333ca5c3e6e16f8059f84a1414d5f6f (diff)
parente86cccb4b89540f3bd403110d051b2723be781b9 (diff)
Merge pull request #176 from azul/feature/api-authenticated-configs
API: Authenticated access to config settings
Diffstat (limited to 'features/step_definitions')
-rw-r--r--features/step_definitions/.gitkeep0
-rw-r--r--features/step_definitions/api_steps.rb131
-rw-r--r--features/step_definitions/auth_steps.rb6
-rw-r--r--features/step_definitions/config_steps.rb6
4 files changed, 143 insertions, 0 deletions
diff --git a/features/step_definitions/.gitkeep b/features/step_definitions/.gitkeep
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/features/step_definitions/.gitkeep
diff --git a/features/step_definitions/api_steps.rb b/features/step_definitions/api_steps.rb
new file mode 100644
index 0000000..a4f369c
--- /dev/null
+++ b/features/step_definitions/api_steps.rb
@@ -0,0 +1,131 @@
+if defined?(Rack)
+
+ # Monkey patch Rack::MockResponse to work properly with response debugging
+ class Rack::MockResponse
+ def to_str
+ body
+ end
+ end
+
+ World(Rack::Test::Methods)
+
+end
+
+Given /^I set headers:$/ do |headers|
+ 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|
+ header 'Accept', "application/#{type.downcase}"
+ header 'Content-Type', "application/#{type.downcase}"
+end
+
+Given /^I send and accept HTML$/ do
+ header 'Accept', "text/html"
+ header 'Content-Type', "application/x-www-form-urlencoded"
+end
+
+When /^I authenticate as the user "([^"]*)" with the password "([^"]*)"$/ do |user, pass|
+ authorize user, pass
+end
+
+When /^I digest\-authenticate as the user "(.*?)" with the password "(.*?)"$/ do |user, pass|
+ digest_authorize user, pass
+end
+
+When /^I send a (GET|POST|PUT|DELETE) request (?:for|to) "([^"]*)"(?: with the following:)?$/ do |*args|
+ request_type = args.shift
+ path = args.shift
+ input = args.shift
+
+ request_opts = {method: request_type.downcase.to_sym}
+
+ unless input.nil?
+ if input.class == Cucumber::Ast::Table
+ request_opts[:params] = input.rows_hash
+ else
+ request_opts[:input] = input
+ end
+ end
+
+ request path, request_opts
+end
+
+Then /^show me the (unparsed)?\s?response$/ do |unparsed|
+ if unparsed == 'unparsed'
+ puts last_response.body
+ elsif last_response.headers['Content-Type'] =~ /json/
+ json_response = JSON.parse(last_response.body)
+ puts JSON.pretty_generate(json_response)
+ else
+ puts last_response.headers
+ puts last_response.body
+ end
+end
+
+Then /^the response status should be "([^"]*)"$/ do |status|
+ if self.respond_to? :should
+ last_response.status.should == status.to_i
+ else
+ assert_equal status.to_i, last_response.status
+ end
+end
+
+Then /^the response should (not)?\s?have "([^"]*)"$/ do |negative, key|
+ json = JSON.parse(last_response.body)
+ if self.respond_to?(:should)
+ if negative.present?
+ json[key].should be_blank
+ else
+ json[key].should be_present
+ end
+ else
+ if negative.present?
+ assert json[key].blank?
+ else
+ assert json[key].present?
+ end
+ end
+end
+
+
+Then /^the response should (not)?\s?have "([^"]*)" with(?: the text)? "([^"]*)"$/ do |negative, key, text|
+ json = JSON.parse(last_response.body)
+ if self.respond_to?(:should)
+ if negative.present?
+ json[key].should_not == text
+ else
+ results.should == text
+ end
+ else
+ if negative.present?
+ assert ! json[key] == text
+ else
+ assert_equal text, json[key]
+ end
+ end
+end
+
+Then /^the response should be:$/ do |json|
+ expected = JSON.parse(json)
+ actual = JSON.parse(last_response.body)
+
+ if self.respond_to?(:should)
+ actual.should == expected
+ else
+ assert_equal expected, actual
+ end
+end
+
+Then /^the response should have "([^"]*)" with a length of (\d+)$/ do |json_path, length|
+ json = JSON.parse(last_response.body)
+ results = JsonPath.new(json_path).on(json)
+ if self.respond_to?(:should)
+ results.length.should == length.to_i
+ else
+ assert_equal length.to_i, results.length
+ end
+end
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
+
diff --git a/features/step_definitions/config_steps.rb b/features/step_definitions/config_steps.rb
new file mode 100644
index 0000000..50ae829
--- /dev/null
+++ b/features/step_definitions/config_steps.rb
@@ -0,0 +1,6 @@
+Given /the provider config is:$/ do |config|
+ @tempfile = Tempfile.new('provider.json')
+ @tempfile.write config
+ @tempfile.close
+ StaticConfigController::PROVIDER_JSON = @tempfile.path
+end