tcr 0.1.2 → 0.1.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.
- checksums.yaml +4 -4
- data/README.md +20 -0
- data/lib/tcr/cassette.rb +6 -0
- data/lib/tcr/configuration.rb +2 -1
- data/lib/tcr/errors.rb +1 -0
- data/lib/tcr/recordable_tcp_socket.rb +2 -2
- data/lib/tcr/version.rb +1 -1
- data/lib/tcr.rb +1 -0
- data/spec/fixtures/multitest-extra-smtp.json +46 -0
- data/spec/tcr_spec.rb +18 -0
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a28e8b95a4b4ab94f8ecd81e18b8b137c08c553e
|
4
|
+
data.tar.gz: 90533c5bfc680269ddbe4c0d5a13f0f832c8dff2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8bcf3b85f896c8d82de587c95e7b3af669f8a298ca774ad0c74714168d79e9309af624253e545d4d46fdc2be976f9b21f7544db215087ccc27f1ea1afec1f96d
|
7
|
+
data.tar.gz: 808b5ea5528e599b4f6729c1992a002d4dc15b78e0a712d3d455db2e85b93c30d9bba9b96364c2d5e087cb631d204fee59405569f92cad361bdb013d38f1371a
|
data/README.md
CHANGED
@@ -67,6 +67,26 @@ TCR.turned_off do
|
|
67
67
|
end
|
68
68
|
```
|
69
69
|
|
70
|
+
To make sure all external calls really happened use `hit_all` option:
|
71
|
+
|
72
|
+
```ruby
|
73
|
+
class TCRTest < Test::Unit::TestCase
|
74
|
+
def test_example_dot_com
|
75
|
+
TCR.use_cassette('mandrill_smtp', hit_all: true) do
|
76
|
+
# There are previously recorded external calls.
|
77
|
+
# ExtraSessionsError will be raised as a result.
|
78
|
+
end
|
79
|
+
end
|
80
|
+
end
|
81
|
+
```
|
82
|
+
|
83
|
+
You can also use the configuration option:
|
84
|
+
|
85
|
+
```ruby
|
86
|
+
TCR.configure do |c|
|
87
|
+
c.hit_all = true
|
88
|
+
end
|
89
|
+
```
|
70
90
|
## Contributing
|
71
91
|
|
72
92
|
1. Fork it
|
data/lib/tcr/cassette.rb
CHANGED
data/lib/tcr/configuration.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
module TCR
|
2
2
|
class Configuration
|
3
|
-
attr_accessor :cassette_library_dir, :hook_tcp_ports, :block_for_reads, :format
|
3
|
+
attr_accessor :cassette_library_dir, :hook_tcp_ports, :block_for_reads, :format, :hit_all
|
4
4
|
|
5
5
|
def initialize
|
6
6
|
reset_defaults!
|
@@ -11,6 +11,7 @@ module TCR
|
|
11
11
|
@hook_tcp_ports = []
|
12
12
|
@block_for_reads = false
|
13
13
|
@format = "json"
|
14
|
+
@hit_all = false
|
14
15
|
end
|
15
16
|
end
|
16
17
|
end
|
data/lib/tcr/errors.rb
CHANGED
@@ -87,7 +87,7 @@ module TCR
|
|
87
87
|
def _write(method, data)
|
88
88
|
if live
|
89
89
|
@socket.__send__(method, data)
|
90
|
-
recording << ["write", data]
|
90
|
+
recording << ["write", data.to_s.force_encoding("UTF-8")]
|
91
91
|
else
|
92
92
|
direction, data = recording.shift
|
93
93
|
_ensure_direction("write", direction)
|
@@ -103,7 +103,7 @@ module TCR
|
|
103
103
|
|
104
104
|
if live
|
105
105
|
data = @socket.__send__(method, *args)
|
106
|
-
recording << ["read", data]
|
106
|
+
recording << ["read", data.to_s.force_encoding("UTF-8")]
|
107
107
|
else
|
108
108
|
_block_for_read_data if blocking && TCR.configuration.block_for_reads
|
109
109
|
raise EOFError if recording.empty?
|
data/lib/tcr/version.rb
CHANGED
data/lib/tcr.rb
CHANGED
@@ -0,0 +1,46 @@
|
|
1
|
+
[
|
2
|
+
[
|
3
|
+
[
|
4
|
+
"read",
|
5
|
+
"220 smtp.mandrillapp.com ESMTP\r\n"
|
6
|
+
],
|
7
|
+
[
|
8
|
+
"write",
|
9
|
+
"EHLO localhost\r\n"
|
10
|
+
],
|
11
|
+
[
|
12
|
+
"read",
|
13
|
+
"250-relay-5.us-east-1.relay-prod\r\n250-PIPELINING\r\n250-SIZE 26214400\r\n250-STARTTLS\r\n250-AUTH PLAIN LOGIN\r\n250-ENHANCEDSTATUSCODES\r\n250 8BITMIME\r\n"
|
14
|
+
],
|
15
|
+
[
|
16
|
+
"write",
|
17
|
+
"QUIT\r\n"
|
18
|
+
],
|
19
|
+
[
|
20
|
+
"read",
|
21
|
+
"221 2.0.0 Bye\r\n"
|
22
|
+
]
|
23
|
+
],
|
24
|
+
[
|
25
|
+
[
|
26
|
+
"read",
|
27
|
+
"220 mail.smtp2go.com ESMTP Exim 4.86 Wed, 02 Mar 2016 02:55:19 +0000\r\n"
|
28
|
+
],
|
29
|
+
[
|
30
|
+
"write",
|
31
|
+
"EHLO localhost\r\n"
|
32
|
+
],
|
33
|
+
[
|
34
|
+
"read",
|
35
|
+
"250-mail.smtp2go.com Hello localhost [50.160.254.134]\r\n250-SIZE 52428800\r\n250-8BITMIME\r\n250-DSN\r\n250-PIPELINING\r\n250-AUTH CRAM-MD5 PLAIN LOGIN\r\n250-STARTTLS\r\n250-PRDR\r\n250 HELP\r\n"
|
36
|
+
],
|
37
|
+
[
|
38
|
+
"write",
|
39
|
+
"QUIT\r\n"
|
40
|
+
],
|
41
|
+
[
|
42
|
+
"read",
|
43
|
+
"221 mail.smtp2go.com closing connection\r\n"
|
44
|
+
]
|
45
|
+
]
|
46
|
+
]
|
data/spec/tcr_spec.rb
CHANGED
@@ -33,6 +33,10 @@ describe TCR do
|
|
33
33
|
it "defaults to erroring on read/write mismatch access" do
|
34
34
|
TCR.configuration.block_for_reads.should be_falsey
|
35
35
|
end
|
36
|
+
|
37
|
+
it "defaults to hit all to false" do
|
38
|
+
TCR.configuration.hit_all.should be_falsey
|
39
|
+
end
|
36
40
|
end
|
37
41
|
|
38
42
|
describe ".configure" do
|
@@ -53,6 +57,12 @@ describe TCR do
|
|
53
57
|
TCR.configure { |c| c.block_for_reads = true }
|
54
58
|
}.to change{ TCR.configuration.block_for_reads }.from(false).to(true)
|
55
59
|
end
|
60
|
+
|
61
|
+
it "configures to check if all sesstions was hit" do
|
62
|
+
expect {
|
63
|
+
TCR.configure { |c| c.hit_all = true }
|
64
|
+
}.to change{ TCR.configuration.hit_all }.from(false).to(true)
|
65
|
+
end
|
56
66
|
end
|
57
67
|
|
58
68
|
it "raises an error if you connect to a hooked port without using a cassette" do
|
@@ -332,6 +342,14 @@ describe TCR do
|
|
332
342
|
end
|
333
343
|
}.to raise_error(TCR::NoMoreSessionsError)
|
334
344
|
end
|
345
|
+
|
346
|
+
it "raises an error if you try to playback less sessions than you previously recorded" do
|
347
|
+
expect {
|
348
|
+
TCR.use_cassette("spec/fixtures/multitest-extra-smtp", hit_all: true) do
|
349
|
+
smtp = Net::SMTP.start("smtp.mandrillapp.com", 2525)
|
350
|
+
end
|
351
|
+
}.to raise_error(TCR::ExtraSessionsError)
|
352
|
+
end
|
335
353
|
end
|
336
354
|
end
|
337
355
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: tcr
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Rob Forman
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-03-
|
11
|
+
date: 2017-03-31 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rspec
|
@@ -91,6 +91,7 @@ files:
|
|
91
91
|
- spec/fixtures/google_https.json
|
92
92
|
- spec/fixtures/google_imap.json
|
93
93
|
- spec/fixtures/mandrill_smtp.json
|
94
|
+
- spec/fixtures/multitest-extra-smtp.json
|
94
95
|
- spec/fixtures/multitest-smtp.json
|
95
96
|
- spec/fixtures/multitest.json
|
96
97
|
- spec/fixtures/smtp-success.json
|
@@ -127,6 +128,7 @@ test_files:
|
|
127
128
|
- spec/fixtures/google_https.json
|
128
129
|
- spec/fixtures/google_imap.json
|
129
130
|
- spec/fixtures/mandrill_smtp.json
|
131
|
+
- spec/fixtures/multitest-extra-smtp.json
|
130
132
|
- spec/fixtures/multitest-smtp.json
|
131
133
|
- spec/fixtures/multitest.json
|
132
134
|
- spec/fixtures/smtp-success.json
|