riot-gear 0.0.5 → 0.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.5
1
+ 0.0.6
@@ -3,12 +3,7 @@ require 'httparty'
3
3
 
4
4
  module Riot
5
5
  module Gear
6
- module Http
7
-
8
- # Setup the scenario via a GET requst to the provided path. Feel free to include a query string
9
- def get(*args)
10
- hookup { @smoke_response = topic.get(*args) }
11
- end
6
+ module PersistCookie
12
7
 
13
8
  def persist_cookie(cookie_name)
14
9
  hookup do
@@ -16,9 +11,10 @@ module Riot
16
11
  topic.cookies({cookie_name => cookie_value["value"]})
17
12
  end
18
13
  end
19
- end
20
- end # Http
14
+ end # persist_cookie
15
+
16
+ end # PersistCookie
21
17
  end # Gear
22
18
  end # Riot
23
19
 
24
- Riot::Context.instance_eval { include Riot::Gear::Http }
20
+ Riot::Context.instance_eval { include Riot::Gear::PersistCookie }
@@ -8,6 +8,7 @@ module Riot
8
8
  def call(context)
9
9
  setup_faux_class(context)
10
10
  setup_helpers(context)
11
+ proxy_action_methods(context)
11
12
  proxy_httparty_hookups(context)
12
13
  middleware.call(context)
13
14
  end
@@ -27,26 +28,40 @@ module Riot
27
28
  context.helper(:response) { @smoke_response }
28
29
  end # setup_faux_class
29
30
 
30
- def action_methods
31
- [:get, :post, :put, :delete, :head, :options]
31
+ #
32
+ # Method proxying. This is the meat of the DSL.
33
+
34
+ def actionable_methods; [:get, :post, :put, :delete, :head]; end
35
+
36
+ def proxy_action_methods(context)
37
+ proxy_class_methods_to_context(context, actionable_methods) do |situation, result|
38
+ situation.instance_eval { @smoke_response = result }
39
+ end
32
40
  end
33
41
 
34
- def proxy_methods
42
+ def proxiable_methods
35
43
  methods = HTTParty::ClassMethods.instance_methods.map { |m| m.to_s.to_sym }
36
- methods - action_methods - [:default_options]
44
+ methods - actionable_methods - [:options, :default_options]
37
45
  end
38
46
 
39
- # Basically, we're just passing standard HTTParty setup methods onto situation via hookups. Except
40
- # for the important action methods.
41
47
  def proxy_httparty_hookups(context)
42
- proxy_methods.each do |httparty_method|
43
- (class << context; self; end).__send__(:define_method, httparty_method) do |*args|
48
+ proxy_class_methods_to_context(context, proxiable_methods)
49
+ end
50
+
51
+ # Basically, we're just passing standard HTTParty setup methods onto situation via hookups
52
+ def proxy_class_methods_to_context(context, methods, &proxy_block)
53
+ methods.each do |method_name|
54
+ (class << context; self; end).__send__(:define_method, method_name) do |*args|
44
55
  hookup do
45
- topic.__send__(httparty_method, *args)
56
+ result = topic.__send__(method_name, *args)
57
+ yield(self, result) if proxy_block
46
58
  end
47
- end
48
- end # proxy_methods.each
49
- end # proxy_httparty_hookups
59
+ end # class << context
60
+ end # methods.each
61
+ end # proxy_class_methods_to_context
62
+
63
+ #
64
+ # Helpful helpers
50
65
 
51
66
  def setup_helpers(context)
52
67
  helper_json_path(context)
data/riot-gear.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{riot-gear}
8
- s.version = "0.0.5"
8
+ s.version = "0.0.6"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Justin 'Gus' Knowlden"]
12
- s.date = %q{2010-07-08}
12
+ s.date = %q{2010-07-09}
13
13
  s.description = %q{Riot + HTTParty smoke testing framework. You'd use it for integration testing with real HTTP requests and responses}
14
14
  s.email = %q{gus@gusg.us}
15
15
  s.extra_rdoc_files = [
@@ -25,11 +25,14 @@ Gem::Specification.new do |s|
25
25
  "lib/riot/gear/context/asserts_header.rb",
26
26
  "lib/riot/gear/context/asserts_json.rb",
27
27
  "lib/riot/gear/context/asserts_status.rb",
28
- "lib/riot/gear/context/http.rb",
28
+ "lib/riot/gear/context/persist_cookie.rb",
29
29
  "lib/riot/gear/middleware.rb",
30
30
  "lib/riot/gear/middleware/riotparty.rb",
31
31
  "riot-gear.gemspec",
32
+ "test/actions/delete_test.rb",
32
33
  "test/actions/get_test.rb",
34
+ "test/actions/post_test.rb",
35
+ "test/actions/put_test.rb",
33
36
  "test/helpers/cookie_values_test.rb",
34
37
  "test/helpers/json_path_test.rb",
35
38
  "test/riotparty_proxy_methods_test.rb",
@@ -42,7 +45,10 @@ Gem::Specification.new do |s|
42
45
  s.rubygems_version = %q{1.3.7}
43
46
  s.summary = %q{Riot + HTTParty smoke testing framework}
44
47
  s.test_files = [
45
- "test/actions/get_test.rb",
48
+ "test/actions/delete_test.rb",
49
+ "test/actions/get_test.rb",
50
+ "test/actions/post_test.rb",
51
+ "test/actions/put_test.rb",
46
52
  "test/helpers/cookie_values_test.rb",
47
53
  "test/helpers/json_path_test.rb",
48
54
  "test/riotparty_proxy_methods_test.rb",
@@ -0,0 +1,48 @@
1
+ require 'teststrap'
2
+
3
+ context "Sending a DELETE request" do
4
+ teardown { reset_webmock }
5
+
6
+ asserts("not defining a base_uri") do
7
+ Riot::Context.new("foo") { delete "/foo" }.run(Riot::SilentReporter.new)
8
+ end.raises(HTTParty::UnsupportedURIScheme)
9
+
10
+ context "with a base-uri" do
11
+ context "without params" do
12
+ hookup do
13
+ stub_request(:delete, 'http://test.local/foo').with(:body => {"foo" => "bar"}.to_json).
14
+ to_return(:body => "Foo", :status => 200)
15
+ end
16
+
17
+ base_uri "http://test.local"
18
+ delete "/foo", :body => {"foo" => "bar"}.to_json
19
+
20
+ asserts("status code") { response.code }.equals(200)
21
+ asserts("response body") { response.body }.equals("Foo")
22
+ end # without params
23
+
24
+ context "with params" do
25
+ hookup do
26
+ stub_request(:delete, 'http://test.local/foo?bar=baz').
27
+ with(:body => {"goo" => "car"}.to_json).
28
+ to_return(:body => "", :status => 203)
29
+ end
30
+
31
+ context "through default_params" do
32
+ base_uri "http://test.local"
33
+ default_params({"bar" => "baz"})
34
+ delete "/foo", :body => {"goo" => "car"}.to_json
35
+
36
+ asserts("status code") { response.code }.equals(203)
37
+ end # through default_params
38
+
39
+ context "through query string" do
40
+ base_uri "http://test.local"
41
+ delete "/foo?bar=baz", :body => {"goo" => "car"}.to_json
42
+
43
+ asserts("status code") { response.code }.equals(203)
44
+ end # through query string
45
+ end # with params
46
+ end # with a base-uri
47
+
48
+ end # Sending a DELETE request
@@ -20,28 +20,24 @@ context "Sending a GET request" do
20
20
  asserts("response body") { response.body }.equals("Foo")
21
21
  end # without params
22
22
 
23
- context "with default params" do
24
- hookup do
25
- stub_request(:get, 'http://test.local/foo?bar=baz').to_return(:body => "", :status => 201)
26
- end
23
+ context "with params" do
24
+ hookup { stub_request(:get, 'http://test.local/foo?bar=baz').to_return(:body => "", :status => 201) }
27
25
 
28
- base_uri "http://test.local"
29
- default_params({"bar" => "baz"})
30
- get "/foo"
26
+ context "through default_params" do
27
+ base_uri "http://test.local"
28
+ default_params({"bar" => "baz"})
29
+ get "/foo"
31
30
 
32
- asserts("status code") { response.code }.equals(201)
33
- end # with default params
31
+ asserts("status code") { response.code }.equals(201)
32
+ end # through default_params
34
33
 
35
- context "with inline params" do
36
- hookup do
37
- stub_request(:get, 'http://test.local/foo?bar=baz').to_return(:body => "", :status => 201)
38
- end
39
-
40
- base_uri "http://test.local"
41
- get "/foo?bar=baz"
34
+ context "through query string" do
35
+ base_uri "http://test.local"
36
+ get "/foo?bar=baz"
42
37
 
43
- asserts("status code") { response.code }.equals(201)
44
- end # with inline params
38
+ asserts("status code") { response.code }.equals(201)
39
+ end # through query string
40
+ end # with params
45
41
  end # with a base-uri
46
42
 
47
43
  end # Sending a GET request
@@ -0,0 +1,48 @@
1
+ require 'teststrap'
2
+
3
+ context "Sending a POST request" do
4
+ teardown { reset_webmock }
5
+
6
+ asserts("not defining a base_uri") do
7
+ Riot::Context.new("foo") { post "/foo" }.run(Riot::SilentReporter.new)
8
+ end.raises(HTTParty::UnsupportedURIScheme)
9
+
10
+ context "with a base-uri" do
11
+ context "without params" do
12
+ hookup do
13
+ stub_request(:post, 'http://test.local/foo').with(:body => {"foo" => "bar"}.to_json).
14
+ to_return(:body => "Foo", :status => 200)
15
+ end
16
+
17
+ base_uri "http://test.local"
18
+ post "/foo", :body => {"foo" => "bar"}.to_json
19
+
20
+ asserts("status code") { response.code }.equals(200)
21
+ asserts("response body") { response.body }.equals("Foo")
22
+ end # without params
23
+
24
+ context "with params" do
25
+ hookup do
26
+ stub_request(:post, 'http://test.local/foo?bar=baz').
27
+ with(:body => {"goo" => "car"}.to_json).
28
+ to_return(:body => "", :status => 201)
29
+ end
30
+
31
+ context "through default_params" do
32
+ base_uri "http://test.local"
33
+ default_params({"bar" => "baz"})
34
+ post "/foo", :body => {"goo" => "car"}.to_json
35
+
36
+ asserts("status code") { response.code }.equals(201)
37
+ end # through default_params
38
+
39
+ context "through query string" do
40
+ base_uri "http://test.local"
41
+ post "/foo?bar=baz", :body => {"goo" => "car"}.to_json
42
+
43
+ asserts("status code") { response.code }.equals(201)
44
+ end # through query string
45
+ end # with params
46
+ end # with a base-uri
47
+
48
+ end # Sending a POST request
@@ -0,0 +1,48 @@
1
+ require 'teststrap'
2
+
3
+ context "Sending a PUT request" do
4
+ teardown { reset_webmock }
5
+
6
+ asserts("not defining a base_uri") do
7
+ Riot::Context.new("foo") { put "/foo" }.run(Riot::SilentReporter.new)
8
+ end.raises(HTTParty::UnsupportedURIScheme)
9
+
10
+ context "with a base-uri" do
11
+ context "without params" do
12
+ hookup do
13
+ stub_request(:put, 'http://test.local/foo').with(:body => {"foo" => "bar"}.to_json).
14
+ to_return(:body => "Foo", :status => 200)
15
+ end
16
+
17
+ base_uri "http://test.local"
18
+ put "/foo", :body => {"foo" => "bar"}.to_json
19
+
20
+ asserts("status code") { response.code }.equals(200)
21
+ asserts("response body") { response.body }.equals("Foo")
22
+ end # without params
23
+
24
+ context "with params" do
25
+ hookup do
26
+ stub_request(:put, 'http://test.local/foo?bar=baz').
27
+ with(:body => {"goo" => "car"}.to_json).
28
+ to_return(:body => "", :status => 203)
29
+ end
30
+
31
+ context "through default_params" do
32
+ base_uri "http://test.local"
33
+ default_params({"bar" => "baz"})
34
+ put "/foo", :body => {"goo" => "car"}.to_json
35
+
36
+ asserts("status code") { response.code }.equals(203)
37
+ end # through default_params
38
+
39
+ context "through query string" do
40
+ base_uri "http://test.local"
41
+ put "/foo?bar=baz", :body => {"goo" => "car"}.to_json
42
+
43
+ asserts("status code") { response.code }.equals(203)
44
+ end # through query string
45
+ end # with params
46
+ end # with a base-uri
47
+
48
+ end # Sending a PUT request
data/test/teststrap.rb CHANGED
@@ -3,6 +3,7 @@ require 'pathname'
3
3
  $:.unshift((Pathname(__FILE__).dirname + ".." + "lib").to_s)
4
4
 
5
5
  require 'rubygems'
6
+ require 'json'
6
7
  require 'riot'
7
8
  require 'webmock'
8
9
  Riot::Situation.instance_eval { include WebMock }
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: riot-gear
3
3
  version: !ruby/object:Gem::Version
4
- hash: 21
4
+ hash: 19
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 0
9
- - 5
10
- version: 0.0.5
9
+ - 6
10
+ version: 0.0.6
11
11
  platform: ruby
12
12
  authors:
13
13
  - Justin 'Gus' Knowlden
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2010-07-08 00:00:00 -05:00
18
+ date: 2010-07-09 00:00:00 -05:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
@@ -78,11 +78,14 @@ files:
78
78
  - lib/riot/gear/context/asserts_header.rb
79
79
  - lib/riot/gear/context/asserts_json.rb
80
80
  - lib/riot/gear/context/asserts_status.rb
81
- - lib/riot/gear/context/http.rb
81
+ - lib/riot/gear/context/persist_cookie.rb
82
82
  - lib/riot/gear/middleware.rb
83
83
  - lib/riot/gear/middleware/riotparty.rb
84
84
  - riot-gear.gemspec
85
+ - test/actions/delete_test.rb
85
86
  - test/actions/get_test.rb
87
+ - test/actions/post_test.rb
88
+ - test/actions/put_test.rb
86
89
  - test/helpers/cookie_values_test.rb
87
90
  - test/helpers/json_path_test.rb
88
91
  - test/riotparty_proxy_methods_test.rb
@@ -123,7 +126,10 @@ signing_key:
123
126
  specification_version: 3
124
127
  summary: Riot + HTTParty smoke testing framework
125
128
  test_files:
129
+ - test/actions/delete_test.rb
126
130
  - test/actions/get_test.rb
131
+ - test/actions/post_test.rb
132
+ - test/actions/put_test.rb
127
133
  - test/helpers/cookie_values_test.rb
128
134
  - test/helpers/json_path_test.rb
129
135
  - test/riotparty_proxy_methods_test.rb