anmo 0.0.3 → 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
@@ -129,3 +129,18 @@ Feature: API
129
129
  """
130
130
  And I request the uri "http://localhost:8787/some/object"
131
131
  Then I see the response code 404
132
+
133
+ Scenario: Store all requests
134
+ Given an anmo server
135
+ When I request the uri "http://localhost:8787/some/object"
136
+ Then that request should be stored
137
+
138
+ Scenario: Delete all requests
139
+ Given an anmo server
140
+ When I request the uri "http://localhost:8787/some/object"
141
+ And I execute the code
142
+ """
143
+ Anmo.server = "http://localhost:8787"
144
+ Anmo.delete_all_requests
145
+ """
146
+ Then there should be no stored requests
@@ -24,6 +24,7 @@ Given /^an anmo server$/ do
24
24
  Thread.new do
25
25
  Anmo.launch_server
26
26
  end
27
+
27
28
  timeout 5 do
28
29
  response = nil
29
30
  while response.nil?
@@ -42,6 +43,7 @@ When /^I issue a put request to the uri "([^"]*)"$/ do |uri|
42
43
  end
43
44
 
44
45
  When /^I request the uri "([^"]*)"$/ do |uri|
46
+ @requested_uri = uri
45
47
  @response = HTTParty.get(uri)
46
48
  end
47
49
 
@@ -57,3 +59,11 @@ end
57
59
  Then /^I see the response code (\d+)$/ do |code|
58
60
  @response.code.should == code.to_i
59
61
  end
62
+
63
+ Then /^that request should be stored$/ do
64
+ Anmo.requests.last["PATH_INFO"].should == @requested_uri.gsub("http://localhost:8787", "")
65
+ end
66
+
67
+ Then /^there should be no stored requests$/ do
68
+ Anmo.requests.size.should == 0
69
+ end
@@ -18,4 +18,13 @@ module Anmo
18
18
  def self.delete_all
19
19
  HTTParty.put("#{server}/__DELETE_ALL__")
20
20
  end
21
+
22
+ def self.requests
23
+ json = HTTParty.get("#{server}/__REQUESTS__")
24
+ JSON.parse(json.body)
25
+ end
26
+
27
+ def self.delete_all_requests
28
+ HTTParty.get("#{server}/__DELETE_ALL_REQUESTS__")
29
+ end
21
30
  end
@@ -10,11 +10,24 @@ module Anmo
10
10
  process_create_request request
11
11
  elsif request.path_info == "/__DELETE_ALL__"
12
12
  process_delete_all_request request
13
+ elsif request.path_info == "/__REQUESTS__"
14
+ process_requests_request request
15
+ elsif request.path_info == "/__DELETE_ALL_REQUESTS__"
16
+ process_delete_all_requests_request
13
17
  else
18
+ Application.requests << request.env
14
19
  process_normal_request request
15
20
  end
16
21
  end
17
22
 
23
+ def self.requests
24
+ @@requests ||= []
25
+ end
26
+
27
+ def self.delete_all_requests
28
+ @@requests = nil
29
+ end
30
+
18
31
  private
19
32
 
20
33
  def process_create_request request
@@ -36,6 +49,15 @@ module Anmo
36
49
  end
37
50
  end
38
51
 
52
+ def process_requests_request request
53
+ [200, {"Content-Type" => "application/json"}, JSON.dump(Application.requests)]
54
+ end
55
+
56
+ def process_delete_all_requests_request
57
+ Application.delete_all_requests
58
+ [200, {}, ""]
59
+ end
60
+
39
61
  def find_stored_request actual_request
40
62
  found_request = @stored_requests.find {|r| r["path"] == actual_request.path_info}
41
63
  if found_request
@@ -1,3 +1,3 @@
1
1
  module Anmo
2
- VERSION = "0.0.3"
2
+ VERSION = "0.0.4"
3
3
  end
@@ -13,6 +13,10 @@ module Anmo
13
13
  Application.new
14
14
  end
15
15
 
16
+ def setup
17
+ Anmo::Application.delete_all_requests
18
+ end
19
+
16
20
  def save_object path, body, status, required_headers, method
17
21
  options = {
18
22
  :path => path,
@@ -96,5 +100,34 @@ module Anmo
96
100
  get "/oh/hai"
97
101
  assert_equal "the second content", last_response.body
98
102
  end
103
+
104
+ def test_stores_all_requests
105
+ get "/hello"
106
+ get "/hai"
107
+ assert_equal 2, Anmo::Application.requests.size
108
+ assert_equal "/hello", Anmo::Application.requests.first["PATH_INFO"]
109
+ assert_equal "/hai", Anmo::Application.requests.last["PATH_INFO"]
110
+ end
111
+
112
+ def test_does_not_store_create_or_delete_requests
113
+ save_object "/oh/hai", "the first content", nil, nil, nil
114
+ put "__DELETE_ALL__"
115
+ assert_equal 0, Anmo::Application::requests.size
116
+ end
117
+
118
+ def test_returns_requests_as_json
119
+ get "/hello"
120
+ get "/__REQUESTS__"
121
+ json = JSON.parse(last_response.body)
122
+ assert_equal 1, json.size
123
+ assert_equal "/hello", json.first["PATH_INFO"]
124
+ end
125
+
126
+ def test_deletes_all_requests
127
+ get "/hello"
128
+ assert_equal 1, Anmo::Application::requests.size
129
+ get "/__DELETE_ALL_REQUESTS__"
130
+ assert_equal 0, Anmo::Application::requests.size
131
+ end
99
132
  end
100
133
  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.3
4
+ version: 0.0.4
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: &70289931482860 !ruby/object:Gem::Requirement
16
+ requirement: &70166513703820 !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: *70289931482860
24
+ version_requirements: *70166513703820
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: thin
27
- requirement: &70289931482440 !ruby/object:Gem::Requirement
27
+ requirement: &70166513703400 !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: *70289931482440
35
+ version_requirements: *70166513703400
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: rake
38
- requirement: &70289931482020 !ruby/object:Gem::Requirement
38
+ requirement: &70166513702980 !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: *70289931482020
46
+ version_requirements: *70166513702980
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: minitest
49
- requirement: &70289931481600 !ruby/object:Gem::Requirement
49
+ requirement: &70166513702560 !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: *70289931481600
57
+ version_requirements: *70166513702560
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: rack-test
60
- requirement: &70289931481180 !ruby/object:Gem::Requirement
60
+ requirement: &70166513702140 !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: *70289931481180
68
+ version_requirements: *70166513702140
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: cucumber
71
- requirement: &70289931480760 !ruby/object:Gem::Requirement
71
+ requirement: &70166513701720 !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: *70289931480760
79
+ version_requirements: *70166513701720
80
80
  - !ruby/object:Gem::Dependency
81
81
  name: rspec
82
- requirement: &70289931480340 !ruby/object:Gem::Requirement
82
+ requirement: &70166513701300 !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: *70289931480340
90
+ version_requirements: *70166513701300
91
91
  - !ruby/object:Gem::Dependency
92
92
  name: guard
93
- requirement: &70289931479920 !ruby/object:Gem::Requirement
93
+ requirement: &70166513700880 !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: *70289931479920
101
+ version_requirements: *70166513700880
102
102
  - !ruby/object:Gem::Dependency
103
103
  name: httparty
104
- requirement: &70289931479500 !ruby/object:Gem::Requirement
104
+ requirement: &70166513700460 !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: *70289931479500
112
+ version_requirements: *70166513700460
113
113
  - !ruby/object:Gem::Dependency
114
114
  name: guard-shell
115
- requirement: &70289931479080 !ruby/object:Gem::Requirement
115
+ requirement: &70166513700040 !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: *70289931479080
123
+ version_requirements: *70166513700040
124
124
  description: ''
125
125
  email:
126
126
  - andrew.vos@gmail.com