riak-client 2.0.0 → 2.1.0
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.markdown +55 -12
- data/RELEASE_NOTES.md +20 -1
- data/lib/riak.rb +1 -0
- data/lib/riak/client.rb +2 -1
- data/lib/riak/client/beefcake/crdt/counter_loader.rb +18 -0
- data/lib/riak/client/beefcake/crdt/map_loader.rb +64 -0
- data/lib/riak/client/beefcake/crdt/set_loader.rb +18 -0
- data/lib/riak/client/beefcake/crdt_loader.rb +16 -59
- data/lib/riak/client/beefcake/crdt_operator.rb +2 -1
- data/lib/riak/client/instrumentation.rb +19 -0
- data/lib/riak/crdt/base.rb +16 -0
- data/lib/riak/errors/backend_creation.rb +9 -0
- data/lib/riak/instrumentation.rb +6 -0
- data/lib/riak/version.rb +1 -1
- data/riak-client.gemspec +3 -2
- data/spec/integration/riak/counters_spec.rb +1 -1
- data/spec/integration/riak/crdt_spec.rb +68 -23
- data/spec/integration/riak/protobuffs_backends_spec.rb +1 -1
- data/spec/integration/riak/threading_spec.rb +4 -4
- data/spec/integration/yokozuna/index_spec.rb +5 -5
- data/spec/integration/yokozuna/queries_spec.rb +15 -16
- data/spec/integration/yokozuna/schema_spec.rb +2 -2
- data/spec/riak/beefcake_protobuffs_backend/crdt_operator_spec.rb +8 -8
- data/spec/riak/beefcake_protobuffs_backend/object_methods_spec.rb +1 -1
- data/spec/riak/beefcake_protobuffs_backend_spec.rb +8 -8
- data/spec/riak/bucket_spec.rb +38 -38
- data/spec/riak/client_spec.rb +26 -27
- data/spec/riak/core_ext/to_param_spec.rb +2 -2
- data/spec/riak/counter_spec.rb +11 -11
- data/spec/riak/crdt/counter_spec.rb +4 -2
- data/spec/riak/crdt/inner_counter_spec.rb +1 -1
- data/spec/riak/crdt/inner_flag_spec.rb +4 -4
- data/spec/riak/crdt/inner_map_spec.rb +3 -3
- data/spec/riak/crdt/inner_register_spec.rb +5 -5
- data/spec/riak/crdt/inner_set_spec.rb +1 -1
- data/spec/riak/crdt/map_spec.rb +2 -2
- data/spec/riak/crdt/set_spec.rb +4 -2
- data/spec/riak/crdt/shared_examples.rb +15 -15
- data/spec/riak/crdt/typed_collection_spec.rb +16 -22
- data/spec/riak/escape_spec.rb +10 -10
- data/spec/riak/feature_detection_spec.rb +1 -1
- data/spec/riak/index_collection_spec.rb +7 -4
- data/spec/riak/instrumentation_spec.rb +124 -0
- data/spec/riak/link_spec.rb +12 -12
- data/spec/riak/list_buckets_spec.rb +2 -2
- data/spec/riak/map_reduce/filter_builder_spec.rb +5 -5
- data/spec/riak/map_reduce/phase_spec.rb +20 -20
- data/spec/riak/map_reduce_spec.rb +50 -50
- data/spec/riak/multiget_spec.rb +5 -5
- data/spec/riak/node_spec.rb +3 -3
- data/spec/riak/robject_spec.rb +46 -45
- data/spec/riak/search_spec.rb +11 -11
- data/spec/riak/secondary_index_spec.rb +9 -9
- data/spec/riak/stamp_spec.rb +5 -5
- data/spec/riak/walk_spec_spec.rb +30 -30
- data/spec/spec_helper.rb +6 -0
- data/spec/support/certs/ca.crt +19 -20
- data/spec/support/certs/client.crl +13 -0
- data/spec/support/certs/client.crt +68 -69
- data/spec/support/certs/client.csr +18 -0
- data/spec/support/certs/client.key +25 -25
- data/spec/support/certs/server.crl +11 -11
- data/spec/support/certs/server.crt +68 -69
- data/spec/support/certs/server.key +25 -25
- data/spec/support/unified_backend_examples.rb +33 -33
- metadata +31 -5
data/spec/riak/search_spec.rb
CHANGED
@@ -10,17 +10,17 @@ describe "Search features" do
|
|
10
10
|
end
|
11
11
|
|
12
12
|
describe "searching" do
|
13
|
-
it "
|
13
|
+
it "searches the default index" do
|
14
14
|
expect(@pb).to receive(:search).with(nil, "foo", {}).and_return({})
|
15
15
|
@client.search("foo")
|
16
16
|
end
|
17
17
|
|
18
|
-
it "
|
18
|
+
it "searches the default index with additional options" do
|
19
19
|
expect(@pb).to receive(:search).with(nil, 'foo', 'rows' => 30).and_return({})
|
20
20
|
@client.search("foo", 'rows' => 30)
|
21
21
|
end
|
22
22
|
|
23
|
-
it "
|
23
|
+
it "searches the specified index" do
|
24
24
|
expect(@pb).to receive(:search).with('search', 'foo', {}).and_return({})
|
25
25
|
@client.search("search", "foo")
|
26
26
|
end
|
@@ -41,7 +41,7 @@ describe "Search features" do
|
|
41
41
|
@bucket.instance_variable_set(:@props, {"precommit" => [{"mod" => "riak_search_kv_hook", "fun" => "precommit"}], "search" => true})
|
42
42
|
end
|
43
43
|
|
44
|
-
it "
|
44
|
+
it "detects whether the indexing hook is installed" do
|
45
45
|
load_without_index_hook
|
46
46
|
expect(@bucket.is_indexed?).to be_falsey
|
47
47
|
|
@@ -50,13 +50,13 @@ describe "Search features" do
|
|
50
50
|
end
|
51
51
|
|
52
52
|
describe "enabling indexing" do
|
53
|
-
it "
|
53
|
+
it "adds the index hook when not present" do
|
54
54
|
load_without_index_hook
|
55
55
|
expect(@bucket).to receive(:props=).with({"precommit" => [Riak::Bucket::SEARCH_PRECOMMIT_HOOK], "search" => true})
|
56
56
|
@bucket.enable_index!
|
57
57
|
end
|
58
58
|
|
59
|
-
it "
|
59
|
+
it "doesn't modify the precommit when the hook is present" do
|
60
60
|
load_with_index_hook
|
61
61
|
expect(@bucket).not_to receive(:props=)
|
62
62
|
@bucket.enable_index!
|
@@ -64,13 +64,13 @@ describe "Search features" do
|
|
64
64
|
end
|
65
65
|
|
66
66
|
describe "disabling indexing" do
|
67
|
-
it "
|
67
|
+
it "removes the index hook when present" do
|
68
68
|
load_with_index_hook
|
69
69
|
expect(@bucket).to receive(:props=).with({"precommit" => [], "search" => false})
|
70
70
|
@bucket.disable_index!
|
71
71
|
end
|
72
72
|
|
73
|
-
it "
|
73
|
+
it "doesn't modify the precommit when the hook is missing" do
|
74
74
|
load_without_index_hook
|
75
75
|
expect(@bucket).not_to receive(:props=)
|
76
76
|
@bucket.disable_index!
|
@@ -85,17 +85,17 @@ describe "Search features" do
|
|
85
85
|
end
|
86
86
|
|
87
87
|
describe "using a search query as inputs" do
|
88
|
-
it "
|
88
|
+
it "accepts a bucket name and query" do
|
89
89
|
@mr.search("foo", "bar OR baz")
|
90
90
|
expect(@mr.inputs).to eq({:module => "riak_search", :function => "mapred_search", :arg => ["foo", "bar OR baz"]})
|
91
91
|
end
|
92
92
|
|
93
|
-
it "
|
93
|
+
it "accepts a Riak::Bucket and query" do
|
94
94
|
@mr.search(Riak::Bucket.new(@client, "foo"), "bar OR baz")
|
95
95
|
expect(@mr.inputs).to eq({:module => "riak_search", :function => "mapred_search", :arg => ["foo", "bar OR baz"]})
|
96
96
|
end
|
97
97
|
|
98
|
-
it "
|
98
|
+
it "emits the Erlang function and arguments" do
|
99
99
|
@mr.search("foo", "bar OR baz")
|
100
100
|
expect(@mr.to_json).to include('"inputs":{')
|
101
101
|
expect(@mr.to_json).to include('"module":"riak_search"')
|
@@ -7,12 +7,12 @@ describe Riak::SecondaryIndex do
|
|
7
7
|
end
|
8
8
|
|
9
9
|
describe "initialization" do
|
10
|
-
it "
|
10
|
+
it "accepts a bucket, index name, and scalar" do
|
11
11
|
expect { Riak::SecondaryIndex.new @bucket, 'asdf', 'aaaa' }.not_to raise_error
|
12
12
|
expect { Riak::SecondaryIndex.new @bucket, 'asdf', 12345 }.not_to raise_error
|
13
13
|
end
|
14
14
|
|
15
|
-
it "
|
15
|
+
it "accepts a bucket, index name, and a range" do
|
16
16
|
expect { Riak::SecondaryIndex.new @bucket, 'asdf', 'aaaa'..'zzzz' }.not_to raise_error
|
17
17
|
expect { Riak::SecondaryIndex.new @bucket, 'asdf', 1..5 }.not_to raise_error
|
18
18
|
end
|
@@ -28,12 +28,12 @@ describe Riak::SecondaryIndex do
|
|
28
28
|
expect(@backend).to receive(:get_index).with(*@args).and_return(%w{abcd efgh})
|
29
29
|
end
|
30
30
|
|
31
|
-
it "
|
31
|
+
it "returns an array of keys" do
|
32
32
|
@results = @index.keys
|
33
33
|
expect(@results).to be_a Array
|
34
34
|
expect(@results.first).to be_a String
|
35
35
|
end
|
36
|
-
it "
|
36
|
+
it "returns an array of values" do
|
37
37
|
expect(@backend).to receive(:fetch_object).with(@bucket, 'abcd', {}).and_return('abcd')
|
38
38
|
expect(@backend).to receive(:fetch_object).with(@bucket, 'efgh', {}).and_return('efgh')
|
39
39
|
|
@@ -44,7 +44,7 @@ describe Riak::SecondaryIndex do
|
|
44
44
|
end
|
45
45
|
|
46
46
|
describe "streaming" do
|
47
|
-
it "
|
47
|
+
it "streams keys into a block" do
|
48
48
|
@backend = double 'Backend'
|
49
49
|
allow(@client).to receive(:backend).and_yield(@backend)
|
50
50
|
@args = [@bucket, 'asdf', 'aaaa'..'zzzz', {stream: true}]
|
@@ -57,7 +57,7 @@ describe Riak::SecondaryIndex do
|
|
57
57
|
end
|
58
58
|
|
59
59
|
describe "pagination" do
|
60
|
-
it "
|
60
|
+
it "supports max_results" do
|
61
61
|
@max_results = 5
|
62
62
|
|
63
63
|
@expected_collection = Riak::IndexCollection.new_from_json({
|
@@ -92,7 +92,7 @@ describe Riak::SecondaryIndex do
|
|
92
92
|
expect(@results.length).to eq(@max_results)
|
93
93
|
end
|
94
94
|
|
95
|
-
it "
|
95
|
+
it "supports continuations" do
|
96
96
|
@max_results = 5
|
97
97
|
|
98
98
|
@expected_collection = Riak::IndexCollection.new_from_json({
|
@@ -127,7 +127,7 @@ describe Riak::SecondaryIndex do
|
|
127
127
|
expect(@results).to eq(@expected_collection)
|
128
128
|
end
|
129
129
|
|
130
|
-
it "
|
130
|
+
it "supports a next_page method" do
|
131
131
|
@max_results = 5
|
132
132
|
|
133
133
|
@expected_collection = Riak::IndexCollection.new_from_json({
|
@@ -182,7 +182,7 @@ describe Riak::SecondaryIndex do
|
|
182
182
|
end
|
183
183
|
|
184
184
|
describe "return_terms" do
|
185
|
-
it "
|
185
|
+
it "optionally gives the index value" do
|
186
186
|
@expected_collection = Riak::IndexCollection.new_from_json({
|
187
187
|
'results' => [
|
188
188
|
{'aaaa' => 'aaaa'},
|
data/spec/riak/stamp_spec.rb
CHANGED
@@ -3,7 +3,7 @@ require 'riak/stamp'
|
|
3
3
|
|
4
4
|
describe Riak::Stamp, test_client: true do
|
5
5
|
subject { described_class.new test_client }
|
6
|
-
it "
|
6
|
+
it "generates always increasing integer identifiers" do
|
7
7
|
1000.times do
|
8
8
|
one = subject.next
|
9
9
|
two = subject.next
|
@@ -12,7 +12,7 @@ describe Riak::Stamp, test_client: true do
|
|
12
12
|
end
|
13
13
|
end
|
14
14
|
|
15
|
-
it "
|
15
|
+
it "delays until the next millisecond when the sequence overflows" do
|
16
16
|
old = subject.instance_variable_get(:@timestamp) + 0
|
17
17
|
subject.instance_variable_set(:@sequence, described_class::SEQUENCE_MASK)
|
18
18
|
count = 0
|
@@ -28,7 +28,7 @@ describe Riak::Stamp, test_client: true do
|
|
28
28
|
expect((subject.next >> described_class::TIMESTAMP_SHIFT) & described_class::TIMESTAMP_MASK).to eq(old + 1)
|
29
29
|
end
|
30
30
|
|
31
|
-
it "
|
31
|
+
it "raises an exception when the system clock moves backwards" do
|
32
32
|
old = subject.instance_variable_get(:@timestamp)
|
33
33
|
expect(subject).to receive(:time_gen).and_return(old - 10)
|
34
34
|
expect {
|
@@ -39,7 +39,7 @@ describe Riak::Stamp, test_client: true do
|
|
39
39
|
# The client/worker ID should be used for disambiguation, not for
|
40
40
|
# primary ordering. This breaks from the Snowflake model where the
|
41
41
|
# worker ID is in more significant bits.
|
42
|
-
it "
|
42
|
+
it "uses the client ID as the bottom component of the identifier" do
|
43
43
|
expect(subject.next & described_class::CLIENT_ID_MASK).to eq(subject.client.client_id.hash & described_class::CLIENT_ID_MASK)
|
44
44
|
end
|
45
45
|
|
@@ -47,7 +47,7 @@ describe Riak::Stamp, test_client: true do
|
|
47
47
|
subject { described_class.new(Riak::Client.new(:client_id => "ripple")) }
|
48
48
|
let(:hash) { "ripple".hash }
|
49
49
|
|
50
|
-
it "
|
50
|
+
it "uses the hash of the client ID as the bottom component of the identifier" do
|
51
51
|
expect(subject.next & described_class::CLIENT_ID_MASK).to eq(subject.client.client_id.hash & described_class::CLIENT_ID_MASK)
|
52
52
|
end
|
53
53
|
end
|
data/spec/riak/walk_spec_spec.rb
CHANGED
@@ -3,28 +3,28 @@ require 'spec_helper'
|
|
3
3
|
describe Riak::WalkSpec do
|
4
4
|
describe "initializing" do
|
5
5
|
describe "with a hash" do
|
6
|
-
it "
|
6
|
+
it "is empty by default" do
|
7
7
|
spec = Riak::WalkSpec.new({})
|
8
8
|
expect(spec.bucket).to eq("_")
|
9
9
|
expect(spec.tag).to eq("_")
|
10
10
|
expect(spec.keep).to be_falsey
|
11
11
|
end
|
12
12
|
|
13
|
-
it "
|
13
|
+
it "extracts the bucket" do
|
14
14
|
spec = Riak::WalkSpec.new({:bucket => "foo"})
|
15
15
|
expect(spec.bucket).to eq("foo")
|
16
16
|
expect(spec.tag).to eq("_")
|
17
17
|
expect(spec.keep).to be_falsey
|
18
18
|
end
|
19
19
|
|
20
|
-
it "
|
20
|
+
it "extracts the tag" do
|
21
21
|
spec = Riak::WalkSpec.new({:tag => "foo"})
|
22
22
|
expect(spec.bucket).to eq("_")
|
23
23
|
expect(spec.tag).to eq("foo")
|
24
24
|
expect(spec.keep).to be_falsey
|
25
25
|
end
|
26
26
|
|
27
|
-
it "
|
27
|
+
it "extracts the keep" do
|
28
28
|
spec = Riak::WalkSpec.new({:keep => true})
|
29
29
|
expect(spec.bucket).to eq("_")
|
30
30
|
expect(spec.tag).to eq("_")
|
@@ -33,28 +33,28 @@ describe Riak::WalkSpec do
|
|
33
33
|
end
|
34
34
|
|
35
35
|
describe "with three arguments for bucket, tag, and keep" do
|
36
|
-
it "
|
36
|
+
it "assigns the bucket, tag, and keep" do
|
37
37
|
spec = Riak::WalkSpec.new("foo", "next", false)
|
38
38
|
expect(spec.bucket).to eq("foo")
|
39
39
|
expect(spec.tag).to eq("next")
|
40
40
|
expect(spec.keep).to be_falsey
|
41
41
|
end
|
42
42
|
|
43
|
-
it "
|
43
|
+
it "specifies the '_' bucket when false or nil" do
|
44
44
|
spec = Riak::WalkSpec.new(nil, "next", false)
|
45
45
|
expect(spec.bucket).to eq("_")
|
46
46
|
spec = Riak::WalkSpec.new(false, "next", false)
|
47
47
|
expect(spec.bucket).to eq("_")
|
48
48
|
end
|
49
49
|
|
50
|
-
it "
|
50
|
+
it "specifies the '_' tag when false or nil" do
|
51
51
|
spec = Riak::WalkSpec.new("foo", nil, false)
|
52
52
|
expect(spec.tag).to eq("_")
|
53
53
|
spec = Riak::WalkSpec.new("foo", false, false)
|
54
54
|
expect(spec.tag).to eq("_")
|
55
55
|
end
|
56
56
|
|
57
|
-
it "
|
57
|
+
it "make the keep falsey when false or nil" do
|
58
58
|
spec = Riak::WalkSpec.new(nil, nil, nil)
|
59
59
|
expect(spec.keep).to be_falsey
|
60
60
|
spec = Riak::WalkSpec.new(nil, nil, false)
|
@@ -62,7 +62,7 @@ describe Riak::WalkSpec do
|
|
62
62
|
end
|
63
63
|
end
|
64
64
|
|
65
|
-
it "
|
65
|
+
it "raises an ArgumentError for invalid arguments" do
|
66
66
|
expect { Riak::WalkSpec.new }.to raise_error(ArgumentError)
|
67
67
|
expect { Riak::WalkSpec.new("foo") }.to raise_error(ArgumentError)
|
68
68
|
expect { Riak::WalkSpec.new("foo","bar") }.to raise_error(ArgumentError)
|
@@ -74,35 +74,35 @@ describe Riak::WalkSpec do
|
|
74
74
|
@spec = Riak::WalkSpec.new({})
|
75
75
|
end
|
76
76
|
|
77
|
-
it "
|
77
|
+
it "converts to the empty spec by default" do
|
78
78
|
expect(@spec.to_s).to eq("_,_,_")
|
79
79
|
end
|
80
80
|
|
81
|
-
it "
|
81
|
+
it "includes the bucket when set" do
|
82
82
|
@spec.bucket = "foo"
|
83
83
|
expect(@spec.to_s).to eq("foo,_,_")
|
84
84
|
end
|
85
85
|
|
86
|
-
it "
|
86
|
+
it "includes the tag when set" do
|
87
87
|
@spec.tag = "next"
|
88
88
|
expect(@spec.to_s).to eq("_,next,_")
|
89
89
|
end
|
90
90
|
|
91
|
-
it "
|
91
|
+
it "includes the keep when true" do
|
92
92
|
@spec.keep = true
|
93
93
|
expect(@spec.to_s).to eq("_,_,1")
|
94
94
|
end
|
95
95
|
end
|
96
96
|
|
97
97
|
describe "creating from a list of parameters" do
|
98
|
-
it "
|
98
|
+
it "detects hashes and WalkSpecs interleaved with other parameters" do
|
99
99
|
specs = Riak::WalkSpec.normalize(nil,"next",nil,{:bucket => "foo"},Riak::WalkSpec.new({:tag => "child", :keep => true}))
|
100
100
|
expect(specs.size).to eq(3)
|
101
101
|
expect(specs).to be_all {|s| s.kind_of?(Riak::WalkSpec) }
|
102
102
|
expect(specs.join("/")).to eq("_,next,_/foo,_,_/_,child,1")
|
103
103
|
end
|
104
104
|
|
105
|
-
it "
|
105
|
+
it "raises an error when given invalid number of parameters" do
|
106
106
|
expect { Riak::WalkSpec.normalize("foo") }.to raise_error(ArgumentError)
|
107
107
|
end
|
108
108
|
end
|
@@ -112,7 +112,7 @@ describe Riak::WalkSpec do
|
|
112
112
|
@spec = Riak::WalkSpec.new({})
|
113
113
|
end
|
114
114
|
|
115
|
-
it "
|
115
|
+
it "doesn't match objects that aren't links or walk specs" do
|
116
116
|
expect(@spec).not_to be === "foo"
|
117
117
|
end
|
118
118
|
|
@@ -121,31 +121,31 @@ describe Riak::WalkSpec do
|
|
121
121
|
@link = Riak::Link.new("/riak/foo/bar", "next")
|
122
122
|
end
|
123
123
|
|
124
|
-
it "
|
124
|
+
it "matches a link when the bucket and tag are not specified" do
|
125
125
|
expect(@spec).to be === @link
|
126
126
|
end
|
127
127
|
|
128
|
-
it "
|
128
|
+
it "matches a link when the bucket is the same" do
|
129
129
|
@spec.bucket = "foo"
|
130
130
|
expect(@spec).to be === @link
|
131
131
|
end
|
132
132
|
|
133
|
-
it "
|
133
|
+
it "doesn't match a link when the bucket is different" do
|
134
134
|
@spec.bucket = "bar"
|
135
135
|
expect(@spec).not_to be === @link
|
136
136
|
end
|
137
137
|
|
138
|
-
it "
|
138
|
+
it "matches a link when the tag is the same" do
|
139
139
|
@spec.tag = "next"
|
140
140
|
expect(@spec).to be === @link
|
141
141
|
end
|
142
142
|
|
143
|
-
it "
|
143
|
+
it "doesn't match a link when the tag is different" do
|
144
144
|
@spec.tag = "previous"
|
145
145
|
expect(@spec).not_to be === @link
|
146
146
|
end
|
147
147
|
|
148
|
-
it "
|
148
|
+
it "matches a link when the bucket and tag are the same" do
|
149
149
|
@spec.bucket = "foo"
|
150
150
|
expect(@spec).to be === @link
|
151
151
|
end
|
@@ -156,41 +156,41 @@ describe Riak::WalkSpec do
|
|
156
156
|
@other = Riak::WalkSpec.new({})
|
157
157
|
end
|
158
158
|
|
159
|
-
it "
|
159
|
+
it "matches a walk spec that is equivalent" do
|
160
160
|
expect(@spec).to be === @other
|
161
161
|
end
|
162
162
|
|
163
|
-
it "
|
163
|
+
it "matches a walk spec that has a different keep value" do
|
164
164
|
@other.keep = true
|
165
165
|
expect(@spec).not_to be === @other
|
166
166
|
end
|
167
167
|
|
168
|
-
it "
|
168
|
+
it "matches a walk spec with a more specific bucket" do
|
169
169
|
@other.bucket = "foo"
|
170
170
|
expect(@spec).to be === @other
|
171
171
|
end
|
172
172
|
|
173
|
-
it "
|
173
|
+
it "matches a walk spec with the same bucket" do
|
174
174
|
@other.bucket = "foo"; @spec.bucket = "foo"
|
175
175
|
expect(@spec).to be === @other
|
176
176
|
end
|
177
177
|
|
178
|
-
it "
|
178
|
+
it "doesn't match a walk spec with a different bucket" do
|
179
179
|
@other.bucket = "foo"; @spec.bucket = "bar"
|
180
180
|
expect(@spec).not_to be === @other
|
181
181
|
end
|
182
182
|
|
183
|
-
it "
|
183
|
+
it "doesn't match a walk spec with a more specific tag" do
|
184
184
|
@other.tag = "next"
|
185
185
|
expect(@spec).to be === @other
|
186
186
|
end
|
187
187
|
|
188
|
-
it "
|
188
|
+
it "matches a walk spec with the same tag" do
|
189
189
|
@other.tag = "next"; @spec.tag = "next"
|
190
190
|
expect(@spec).to be === @other
|
191
191
|
end
|
192
192
|
|
193
|
-
it "
|
193
|
+
it "doesn't match a walk spec with a different tag" do
|
194
194
|
@other.tag = "next"; @spec.tag = "previous"
|
195
195
|
expect(@spec).not_to be === @other
|
196
196
|
end
|
data/spec/spec_helper.rb
CHANGED
data/spec/support/certs/ca.crt
CHANGED
@@ -1,22 +1,21 @@
|
|
1
1
|
-----BEGIN CERTIFICATE-----
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
/
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
VEcFwFceAhIM4PsZteI4m9nG
|
2
|
+
MIIDjDCCAnQCCQDCaCbuH5N1HjANBgkqhkiG9w0BAQUFADCBhzELMAkGA1UEBhMC
|
3
|
+
VVMxEDAOBgNVBAgMB0Zsb3JpZGExDjAMBgNVBAcMBU1pYW1pMQ4wDAYDVQQKDAVC
|
4
|
+
YXNobzEZMBcGA1UECwwQUmlhayBSdWJ5IENsaWVudDELMAkGA1UEAwwCQ0ExHjAc
|
5
|
+
BgkqhkiG9w0BCQEWD2JyeWNlQGJhc2hvLmNvbTAeFw0xNDA5MTgyMjU4MDJaFw0y
|
6
|
+
NDA5MTUyMjU4MDJaMIGHMQswCQYDVQQGEwJVUzEQMA4GA1UECAwHRmxvcmlkYTEO
|
7
|
+
MAwGA1UEBwwFTWlhbWkxDjAMBgNVBAoMBUJhc2hvMRkwFwYDVQQLDBBSaWFrIFJ1
|
8
|
+
YnkgQ2xpZW50MQswCQYDVQQDDAJDQTEeMBwGCSqGSIb3DQEJARYPYnJ5Y2VAYmFz
|
9
|
+
aG8uY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEApLREjyW0bsMQ
|
10
|
+
2xZuZfXrTqndZdtmJrUaUdwLcTYXo/BLJq8mw/UoKBajzDJS1OsVutOT3l1mQZNk
|
11
|
+
pE15lJbPo301RtkGOeYlTx6ptawutrvlMlACnWtYyuL9U8qqnMJAsdBEjTU3Xxao
|
12
|
+
/vJTECBVaKtL9D5vEu2fOn4ZWvSuYG14ZXhltBPgon95SrJX+erXgHs0IH6l1ftW
|
13
|
+
xZL9Uw/Tj/s8XEMK8n6FB+CYuj33fZMjswvdXABzhEAW8bCupJT42V/S9Zj4B0Z8
|
14
|
+
iv6wgurc1yuU6yl0VDGZ6Ee++7ter3GZZrV4YC5A8UjW0+8sADUYKiZNYWTO6S+N
|
15
|
+
Pu/sLRdykwIDAQABMA0GCSqGSIb3DQEBBQUAA4IBAQBzcs/VIHHeyUWlS+Rx/s/m
|
16
|
+
m54RK332r2+8Mywtwdz57kA6rsbYBrrlKVmEzjtgCIcpF/3hhEChYcSA4w0Aa+zd
|
17
|
+
Zd6eNtUyicPFfm/8GycaLM3Ptj3duq4jHha2IzhomfACm8pkBj8IU8Y5q/YBV+3L
|
18
|
+
hJxderphbz6lqrH6USkt/aaFzu+1onYlxzGZDyiFPOxUbRPXN12y3XCeFSfuHBej
|
19
|
+
ifFRSHGR8HU++g4VYnOi/1YXSDFh7yRvA2qBlz+kYprBS2GggXIrfCgT+FnMALlg
|
20
|
+
6TrfsWQiI3pyGKUsNjdaQckdLMWr8jvutb7vPZ1WdMdgKxbE0Swo1HBbkCAe5JjG
|
22
21
|
-----END CERTIFICATE-----
|