anmo 0.0.2 → 0.0.3
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/features/api.feature +16 -0
- data/features/step_definitions/api_steps.rb +8 -0
- data/lib/anmo/application.rb +6 -0
- data/lib/anmo/version.rb +1 -1
- data/test/anmo/application_test.rb +22 -8
- metadata +21 -21
data/features/api.feature
CHANGED
@@ -63,6 +63,22 @@ Feature: API
|
|
63
63
|
And I request the uri "http://localhost:8787/some/object"
|
64
64
|
Then I see the response code 123
|
65
65
|
|
66
|
+
Scenario: Save object with specific method
|
67
|
+
Given an anmo server
|
68
|
+
When I execute the code
|
69
|
+
"""
|
70
|
+
Anmo.server = "http://localhost:8787"
|
71
|
+
Anmo.create_request({
|
72
|
+
:path => "/some/object",
|
73
|
+
:body => "some data",
|
74
|
+
:method => :put
|
75
|
+
})
|
76
|
+
"""
|
77
|
+
And I issue a put request to the uri "http://localhost:8787/some/object"
|
78
|
+
Then I see the response body "some data"
|
79
|
+
And I issue a get request to the uri "http://localhost:8787/some/object"
|
80
|
+
Then I see the response code 404
|
81
|
+
|
66
82
|
Scenario: Request without required headers 404s
|
67
83
|
Given an anmo server
|
68
84
|
When I execute the code
|
@@ -33,6 +33,14 @@ Given /^an anmo server$/ do
|
|
33
33
|
end
|
34
34
|
end
|
35
35
|
|
36
|
+
Then /^I issue a get request to the uri "([^"]*)"$/ do |uri|
|
37
|
+
@response = HTTParty.get(uri)
|
38
|
+
end
|
39
|
+
|
40
|
+
When /^I issue a put request to the uri "([^"]*)"$/ do |uri|
|
41
|
+
@response = HTTParty.put(uri)
|
42
|
+
end
|
43
|
+
|
36
44
|
When /^I request the uri "([^"]*)"$/ do |uri|
|
37
45
|
@response = HTTParty.get(uri)
|
38
46
|
end
|
data/lib/anmo/application.rb
CHANGED
@@ -39,6 +39,12 @@ module Anmo
|
|
39
39
|
def find_stored_request actual_request
|
40
40
|
found_request = @stored_requests.find {|r| r["path"] == actual_request.path_info}
|
41
41
|
if found_request
|
42
|
+
if found_request["method"]
|
43
|
+
if actual_request.request_method != found_request["method"].upcase
|
44
|
+
return
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
42
48
|
required_headers = found_request["required_headers"] || []
|
43
49
|
required_headers.each do |name, value|
|
44
50
|
if actual_request.env[convert_header_name_to_rack_style_name(name)] != value
|
data/lib/anmo/version.rb
CHANGED
@@ -13,13 +13,15 @@ module Anmo
|
|
13
13
|
Application.new
|
14
14
|
end
|
15
15
|
|
16
|
-
def save_object path, body, status, required_headers
|
16
|
+
def save_object path, body, status, required_headers, method
|
17
17
|
options = {
|
18
18
|
:path => path,
|
19
19
|
:body => body,
|
20
20
|
:status => status,
|
21
21
|
:required_headers => required_headers
|
22
22
|
}
|
23
|
+
options[:method] = method if method
|
24
|
+
|
23
25
|
put "__CREATE__", options.to_json
|
24
26
|
end
|
25
27
|
|
@@ -30,7 +32,7 @@ module Anmo
|
|
30
32
|
end
|
31
33
|
|
32
34
|
def test_stores_mock_data
|
33
|
-
save_object "/this/is/the/path.object", "please save this", nil, nil
|
35
|
+
save_object "/this/is/the/path.object", "please save this", nil, nil, nil
|
34
36
|
assert_equal 201, last_response.status
|
35
37
|
|
36
38
|
get "/this/is/the/path.object"
|
@@ -39,13 +41,13 @@ module Anmo
|
|
39
41
|
end
|
40
42
|
|
41
43
|
def test_stores_status_code
|
42
|
-
save_object "/monkeys", nil, 123, nil
|
44
|
+
save_object "/monkeys", nil, 123, nil, nil
|
43
45
|
get "/monkeys"
|
44
46
|
assert_equal 123, last_response.status
|
45
47
|
end
|
46
48
|
|
47
49
|
def test_allows_deleting_all_objects
|
48
|
-
save_object "/this/is/the/path.object", "please save this", nil, nil
|
50
|
+
save_object "/this/is/the/path.object", "please save this", nil, nil, nil
|
49
51
|
|
50
52
|
get "/this/is/the/path.object"
|
51
53
|
first_response = last_response
|
@@ -62,13 +64,13 @@ module Anmo
|
|
62
64
|
end
|
63
65
|
|
64
66
|
def test_404s_if_request_does_not_have_required_headers
|
65
|
-
save_object "/oh/hai", nil, nil, {"ruby" => "hipsters", "meh" => "bleh"}
|
67
|
+
save_object "/oh/hai", nil, nil, {"ruby" => "hipsters", "meh" => "bleh"}, nil
|
66
68
|
get "/oh/hai"
|
67
69
|
assert_equal 404, last_response.status
|
68
70
|
end
|
69
71
|
|
70
72
|
def test_returns_value_if_request_has_required_headers
|
71
|
-
save_object "/oh/hai", "the content", nil, {"lol-ruby" => "hipsters", "meh" => "bleh"}
|
73
|
+
save_object "/oh/hai", "the content", nil, {"lol-ruby" => "hipsters", "meh" => "bleh"}, nil
|
72
74
|
header "lol-ruby", "hipsters"
|
73
75
|
header "meh", "bleh"
|
74
76
|
get "/oh/hai"
|
@@ -76,9 +78,21 @@ module Anmo
|
|
76
78
|
assert_equal "the content", last_response.body
|
77
79
|
end
|
78
80
|
|
81
|
+
def test_404s_if_request_does_not_have_correct_method
|
82
|
+
save_object "/meh", "content", nil, nil, :delete
|
83
|
+
get "/meh"
|
84
|
+
assert_equal 404, last_response.status
|
85
|
+
end
|
86
|
+
|
87
|
+
def test_returns_vaue_if_request_has_correct_method
|
88
|
+
save_object "/meh", "content", nil, nil, :delete
|
89
|
+
delete "/meh"
|
90
|
+
assert_equal 200, last_response.status
|
91
|
+
end
|
92
|
+
|
79
93
|
def test_returns_the_last_added_object_first
|
80
|
-
save_object "/oh/hai", "the first content", nil, nil
|
81
|
-
save_object "/oh/hai", "the second content", nil, nil
|
94
|
+
save_object "/oh/hai", "the first content", nil, nil, nil
|
95
|
+
save_object "/oh/hai", "the second content", nil, nil, nil
|
82
96
|
get "/oh/hai"
|
83
97
|
assert_equal "the second content", last_response.body
|
84
98
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: anmo
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -13,7 +13,7 @@ date: 2012-03-16 00:00:00.000000000Z
|
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rack
|
16
|
-
requirement: &
|
16
|
+
requirement: &70289931482860 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: '0'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *70289931482860
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: thin
|
27
|
-
requirement: &
|
27
|
+
requirement: &70289931482440 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: '0'
|
33
33
|
type: :runtime
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *70289931482440
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: rake
|
38
|
-
requirement: &
|
38
|
+
requirement: &70289931482020 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ! '>='
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: '0'
|
44
44
|
type: :development
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *70289931482020
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: minitest
|
49
|
-
requirement: &
|
49
|
+
requirement: &70289931481600 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ! '>='
|
@@ -54,10 +54,10 @@ dependencies:
|
|
54
54
|
version: '0'
|
55
55
|
type: :development
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *70289931481600
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
59
|
name: rack-test
|
60
|
-
requirement: &
|
60
|
+
requirement: &70289931481180 !ruby/object:Gem::Requirement
|
61
61
|
none: false
|
62
62
|
requirements:
|
63
63
|
- - ! '>='
|
@@ -65,10 +65,10 @@ dependencies:
|
|
65
65
|
version: '0'
|
66
66
|
type: :development
|
67
67
|
prerelease: false
|
68
|
-
version_requirements: *
|
68
|
+
version_requirements: *70289931481180
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: cucumber
|
71
|
-
requirement: &
|
71
|
+
requirement: &70289931480760 !ruby/object:Gem::Requirement
|
72
72
|
none: false
|
73
73
|
requirements:
|
74
74
|
- - ! '>='
|
@@ -76,10 +76,10 @@ dependencies:
|
|
76
76
|
version: '0'
|
77
77
|
type: :development
|
78
78
|
prerelease: false
|
79
|
-
version_requirements: *
|
79
|
+
version_requirements: *70289931480760
|
80
80
|
- !ruby/object:Gem::Dependency
|
81
81
|
name: rspec
|
82
|
-
requirement: &
|
82
|
+
requirement: &70289931480340 !ruby/object:Gem::Requirement
|
83
83
|
none: false
|
84
84
|
requirements:
|
85
85
|
- - ! '>='
|
@@ -87,10 +87,10 @@ dependencies:
|
|
87
87
|
version: '0'
|
88
88
|
type: :development
|
89
89
|
prerelease: false
|
90
|
-
version_requirements: *
|
90
|
+
version_requirements: *70289931480340
|
91
91
|
- !ruby/object:Gem::Dependency
|
92
92
|
name: guard
|
93
|
-
requirement: &
|
93
|
+
requirement: &70289931479920 !ruby/object:Gem::Requirement
|
94
94
|
none: false
|
95
95
|
requirements:
|
96
96
|
- - ! '>='
|
@@ -98,10 +98,10 @@ dependencies:
|
|
98
98
|
version: '0'
|
99
99
|
type: :development
|
100
100
|
prerelease: false
|
101
|
-
version_requirements: *
|
101
|
+
version_requirements: *70289931479920
|
102
102
|
- !ruby/object:Gem::Dependency
|
103
103
|
name: httparty
|
104
|
-
requirement: &
|
104
|
+
requirement: &70289931479500 !ruby/object:Gem::Requirement
|
105
105
|
none: false
|
106
106
|
requirements:
|
107
107
|
- - ! '>='
|
@@ -109,10 +109,10 @@ dependencies:
|
|
109
109
|
version: '0'
|
110
110
|
type: :development
|
111
111
|
prerelease: false
|
112
|
-
version_requirements: *
|
112
|
+
version_requirements: *70289931479500
|
113
113
|
- !ruby/object:Gem::Dependency
|
114
114
|
name: guard-shell
|
115
|
-
requirement: &
|
115
|
+
requirement: &70289931479080 !ruby/object:Gem::Requirement
|
116
116
|
none: false
|
117
117
|
requirements:
|
118
118
|
- - ! '>='
|
@@ -120,7 +120,7 @@ dependencies:
|
|
120
120
|
version: '0'
|
121
121
|
type: :development
|
122
122
|
prerelease: false
|
123
|
-
version_requirements: *
|
123
|
+
version_requirements: *70289931479080
|
124
124
|
description: ''
|
125
125
|
email:
|
126
126
|
- andrew.vos@gmail.com
|