ephemeral_response 0.2.0 → 0.2.1
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/History.markdown +12 -4
- data/README.markdown +14 -1
- data/VERSION +1 -1
- data/lib/ephemeral_response.rb +10 -1
- data/lib/ephemeral_response/configuration.rb +6 -1
- data/lib/ephemeral_response/fixture.rb +2 -2
- data/spec/ephemeral_response/configuration_spec.rb +38 -6
- data/spec/ephemeral_response/fixture_spec.rb +35 -3
- data/spec/ephemeral_response_spec.rb +21 -0
- metadata +3 -3
data/History.markdown
CHANGED
@@ -1,7 +1,15 @@
|
|
1
1
|
History
|
2
2
|
=======
|
3
3
|
|
4
|
-
0.2.
|
4
|
+
0.2.1 / 2010-06-24
|
5
|
+
--------------
|
6
|
+
|
7
|
+
#### Enhancements
|
8
|
+
|
9
|
+
* Periods no longer replaced with slashes in fixture names.
|
10
|
+
* Added skip_expiration option allowing fixtures to never expire.
|
11
|
+
|
12
|
+
0.2.0 / 2010-06-23
|
5
13
|
--------------
|
6
14
|
|
7
15
|
#### Enhancements
|
@@ -10,9 +18,9 @@ History
|
|
10
18
|
* Varying POST data and query strings create new fixtures. Previously, GET /
|
11
19
|
and GET /?foo=bar resulted in the same fixture.
|
12
20
|
* Ability to reset configuration with EphemeralResponse::Configuration.reset
|
13
|
-
* Ability to white list certain hosts. Responses will not be saved for
|
21
|
+
* Ability to white list certain hosts. Responses will not be saved for requests
|
14
22
|
made to hosts in the white list.
|
15
|
-
Use EphemeralResponse::Configuration.
|
23
|
+
Use EphemeralResponse::Configuration.white\_list = "localhost"
|
16
24
|
* Ephemeral response prints to the Net/HTTP debugger when establishing a
|
17
|
-
connection.
|
25
|
+
connection. Set http.set\_debug\_output = $stdout to see when Ephemeral
|
18
26
|
Response connects to a host.
|
data/README.markdown
CHANGED
@@ -79,6 +79,19 @@ the local server.
|
|
79
79
|
|
80
80
|
EphemeralResponse::Configuration.white_list = "localhost", "smackaho.st"
|
81
81
|
|
82
|
+
Never let fixtures expire by setting skip\_expiration to true.
|
83
|
+
|
84
|
+
EphemeralResponse::Configuration.skip_expiration = true
|
85
|
+
|
86
|
+
All together now!
|
87
|
+
|
88
|
+
EphemeralResponse.configure do |config|
|
89
|
+
config.fixture_directory = "test/fixtures/ephemeral_response"
|
90
|
+
config.expiration = lambda { one_day * 30 }
|
91
|
+
config.white_list = 'localhost'
|
92
|
+
config.skip_expiration = true
|
93
|
+
end
|
94
|
+
|
82
95
|
## Similar Projects
|
83
96
|
* [Net Recorder](http://github.com/chrisyoung/netrecorder)
|
84
97
|
* [Stalefish](http://github.com/jsmestad/stale_fish)
|
@@ -96,4 +109,4 @@ the local server.
|
|
96
109
|
|
97
110
|
## Copyright
|
98
111
|
|
99
|
-
Copyright (c) 2010 Sandro Turriate. See
|
112
|
+
Copyright (c) 2010 Sandro Turriate. See MIT\_LICENSE for details.
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.2.
|
1
|
+
0.2.1
|
data/lib/ephemeral_response.rb
CHANGED
@@ -7,7 +7,7 @@ require 'ephemeral_response/configuration'
|
|
7
7
|
require 'ephemeral_response/fixture'
|
8
8
|
|
9
9
|
module EphemeralResponse
|
10
|
-
VERSION = "0.2.
|
10
|
+
VERSION = "0.2.1".freeze
|
11
11
|
|
12
12
|
def self.activate
|
13
13
|
deactivate
|
@@ -23,4 +23,13 @@ module EphemeralResponse
|
|
23
23
|
alias_method(:request, :request_without_ephemeral_response) if method_defined?(:request_without_ephemeral_response)
|
24
24
|
end
|
25
25
|
end
|
26
|
+
|
27
|
+
def self.fixtures
|
28
|
+
Fixture.fixtures
|
29
|
+
end
|
30
|
+
|
31
|
+
def self.configure
|
32
|
+
yield Configuration if block_given?
|
33
|
+
Configuration
|
34
|
+
end
|
26
35
|
end
|
@@ -2,7 +2,7 @@ module EphemeralResponse
|
|
2
2
|
module Configuration
|
3
3
|
extend self
|
4
4
|
|
5
|
-
attr_writer :fixture_directory
|
5
|
+
attr_writer :fixture_directory, :skip_expiration
|
6
6
|
|
7
7
|
def fixture_directory
|
8
8
|
@fixture_directory || "spec/fixtures/ephemeral_response"
|
@@ -23,6 +23,11 @@ module EphemeralResponse
|
|
23
23
|
@expiration = nil
|
24
24
|
@fixture_directory = nil
|
25
25
|
@white_list = nil
|
26
|
+
@skip_expiration = nil
|
27
|
+
end
|
28
|
+
|
29
|
+
def skip_expiration
|
30
|
+
@skip_expiration || false
|
26
31
|
end
|
27
32
|
|
28
33
|
def white_list
|
@@ -60,7 +60,7 @@ module EphemeralResponse
|
|
60
60
|
end
|
61
61
|
|
62
62
|
def expired?
|
63
|
-
(created_at + Configuration.expiration) < Time.now
|
63
|
+
!Configuration.skip_expiration && (created_at + Configuration.expiration) < Time.now
|
64
64
|
end
|
65
65
|
|
66
66
|
def file_name
|
@@ -76,7 +76,7 @@ module EphemeralResponse
|
|
76
76
|
end
|
77
77
|
|
78
78
|
def normalized_name
|
79
|
-
[uri.host, method, fs_path].compact.join("_").gsub(/[
|
79
|
+
[uri.host, method, fs_path].compact.join("_").gsub(/[\/]/, '-')
|
80
80
|
end
|
81
81
|
|
82
82
|
def fs_path
|
@@ -39,21 +39,41 @@ describe EphemeralResponse::Configuration do
|
|
39
39
|
end
|
40
40
|
|
41
41
|
describe "#reset" do
|
42
|
-
it "resets expiration
|
43
|
-
subject.fixture_directory = "test/fixtures/ephemeral_response"
|
42
|
+
it "resets expiration" do
|
44
43
|
subject.expiration = 1
|
45
|
-
subject.white_list = 'localhost'
|
46
|
-
subject.fixture_directory.should == "test/fixtures/ephemeral_response"
|
47
44
|
subject.expiration.should == 1
|
48
|
-
subject.
|
45
|
+
subject.reset
|
46
|
+
|
47
|
+
subject.expiration.should == 86400
|
48
|
+
end
|
49
49
|
|
50
|
+
it "resets fixture_directory" do
|
51
|
+
subject.fixture_directory = "test/fixtures/ephemeral_response"
|
52
|
+
subject.fixture_directory.should == "test/fixtures/ephemeral_response"
|
50
53
|
subject.reset
|
51
54
|
|
52
55
|
subject.fixture_directory.should == "spec/fixtures/ephemeral_response"
|
53
|
-
|
56
|
+
end
|
57
|
+
|
58
|
+
it "resets white_list" do
|
59
|
+
subject.white_list = 'localhost'
|
60
|
+
subject.white_list.should == ['localhost']
|
61
|
+
subject.reset
|
62
|
+
|
54
63
|
subject.white_list.should == []
|
55
64
|
end
|
56
65
|
|
66
|
+
it "resets skip_expiration" do
|
67
|
+
subject.skip_expiration = true
|
68
|
+
subject.skip_expiration.should == true
|
69
|
+
subject.reset
|
70
|
+
|
71
|
+
subject.skip_expiration.should == false
|
72
|
+
end
|
73
|
+
|
74
|
+
it "resets expiration, fixture directory, expiration, and white list to the defaults" do
|
75
|
+
end
|
76
|
+
|
57
77
|
it "resets white list after the default has been modified" do
|
58
78
|
subject.white_list << "localhost"
|
59
79
|
subject.reset
|
@@ -84,4 +104,16 @@ describe EphemeralResponse::Configuration do
|
|
84
104
|
subject.white_list.should == ['localhost', 'smackaho.st']
|
85
105
|
end
|
86
106
|
end
|
107
|
+
|
108
|
+
describe "#skip_expiration" do
|
109
|
+
it "sets skip_expiration to true" do
|
110
|
+
subject.skip_expiration = true
|
111
|
+
subject.skip_expiration.should == true
|
112
|
+
end
|
113
|
+
|
114
|
+
it "sets skip_expiration to false" do
|
115
|
+
subject.skip_expiration = false
|
116
|
+
subject.skip_expiration.should == false
|
117
|
+
end
|
118
|
+
end
|
87
119
|
end
|
@@ -276,19 +276,51 @@ describe EphemeralResponse::Fixture do
|
|
276
276
|
it "chops off the starting slash when accessing '/'" do
|
277
277
|
uri = URI.parse("http://example.com/")
|
278
278
|
fixture = EphemeralResponse::Fixture.new(uri, request)
|
279
|
-
fixture.file_name.should =~ /example
|
279
|
+
fixture.file_name.should =~ /example.com_GET_[\w]{7}.yml/
|
280
280
|
end
|
281
281
|
|
282
282
|
it "chops off the starting slash when accessing '/index.html'" do
|
283
283
|
uri = URI.parse("http://example.com/index.html")
|
284
284
|
fixture = EphemeralResponse::Fixture.new(uri, request)
|
285
|
-
fixture.file_name.should =~ /example
|
285
|
+
fixture.file_name.should =~ /example.com_GET_index.html_[\w]{7}.yml/
|
286
286
|
end
|
287
287
|
|
288
288
|
it "looks like on longer paths" do
|
289
289
|
uri = URI.parse("http://example.com/users/1/photos/1.html")
|
290
290
|
fixture = EphemeralResponse::Fixture.new(uri, request)
|
291
|
-
fixture.file_name.should =~ /example
|
291
|
+
fixture.file_name.should =~ /example.com_GET_users-1-photos-1.html_[\w]{7}.yml/
|
292
|
+
end
|
293
|
+
|
294
|
+
describe "#expired?" do
|
295
|
+
before do
|
296
|
+
fixture
|
297
|
+
end
|
298
|
+
|
299
|
+
context "when expiration isn't skipped" do
|
300
|
+
context "when the expiration time has elapsed" do
|
301
|
+
it "returns true" do
|
302
|
+
Time.travel("2030-01-01") do
|
303
|
+
fixture.should be_expired
|
304
|
+
end
|
305
|
+
end
|
306
|
+
end
|
307
|
+
|
308
|
+
context "when the expiration time has not elapsed" do
|
309
|
+
it "returns false" do
|
310
|
+
fixture.should_not be_expired
|
311
|
+
end
|
312
|
+
end
|
313
|
+
end
|
314
|
+
|
315
|
+
context "when expiration is skipped" do
|
316
|
+
it "returns false" do
|
317
|
+
fixture
|
318
|
+
EphemeralResponse::Configuration.skip_expiration = true
|
319
|
+
Time.travel("2030-01-01") do
|
320
|
+
fixture.should_not be_expired
|
321
|
+
end
|
322
|
+
end
|
323
|
+
end
|
292
324
|
end
|
293
325
|
|
294
326
|
end
|
@@ -35,4 +35,25 @@ describe EphemeralResponse do
|
|
35
35
|
Net::HTTP.instance_methods.should_not include('uri')
|
36
36
|
end
|
37
37
|
end
|
38
|
+
|
39
|
+
describe ".fixtures" do
|
40
|
+
it "returns the registered fixtures" do
|
41
|
+
EphemeralResponse.fixtures.should == EphemeralResponse::Fixture.fixtures
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
describe ".configure" do
|
46
|
+
it "yields the configuration object when a block is passed" do
|
47
|
+
EphemeralResponse.configure {|c| c.expiration = 1}
|
48
|
+
EphemeralResponse::Configuration.expiration.should == 1
|
49
|
+
end
|
50
|
+
|
51
|
+
it "returns the configuration object after yielding" do
|
52
|
+
EphemeralResponse.configure {}.should == EphemeralResponse::Configuration
|
53
|
+
end
|
54
|
+
|
55
|
+
it "returns the configuration object when no block is present" do
|
56
|
+
EphemeralResponse.configure.should == EphemeralResponse::Configuration
|
57
|
+
end
|
58
|
+
end
|
38
59
|
end
|
metadata
CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
|
|
5
5
|
segments:
|
6
6
|
- 0
|
7
7
|
- 2
|
8
|
-
-
|
9
|
-
version: 0.2.
|
8
|
+
- 1
|
9
|
+
version: 0.2.1
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- Sandro Turriate
|
@@ -14,7 +14,7 @@ autorequire:
|
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
16
|
|
17
|
-
date: 2010-06-
|
17
|
+
date: 2010-06-24 00:00:00 -04:00
|
18
18
|
default_executable:
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|