mongo 1.8.4 → 1.8.5
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 +6 -14
- checksums.yaml.gz.sig +0 -0
- data.tar.gz.sig +0 -0
- data/README.md +2 -0
- data/VERSION +1 -1
- data/lib/mongo.rb +11 -9
- data/lib/mongo/collection.rb +26 -19
- data/lib/mongo/cursor.rb +7 -2
- data/lib/mongo/db.rb +1 -1
- data/lib/mongo/mongo_client.rb +1 -1
- data/lib/mongo/mongo_replica_set_client.rb +2 -3
- data/lib/mongo/mongo_sharded_client.rb +1 -2
- data/lib/mongo/util/node.rb +12 -14
- data/lib/mongo/util/pool.rb +1 -1
- data/lib/mongo/util/pool_manager.rb +13 -15
- data/lib/mongo/util/sharding_pool_manager.rb +5 -2
- data/lib/mongo/util/support.rb +14 -0
- data/mongo.gemspec +7 -3
- data/test/functional/authentication_test.rb +21 -0
- data/test/functional/collection_test.rb +0 -1
- data/test/functional/connection_test.rb +1 -1
- data/test/functional/db_test.rb +1 -56
- data/test/functional/support_test.rb +30 -0
- data/test/replica_set/authentication_test.rb +23 -0
- data/test/replica_set/max_values_test.rb +61 -0
- data/test/sharded_cluster/basic_test.rb +18 -0
- data/test/shared/authentication.rb +49 -0
- data/test/tools/mongo_config.rb +21 -26
- data/test/unit/node_test.rb +3 -0
- data/test/unit/pool_manager_test.rb +3 -1
- data/test/unit/read_test.rb +4 -0
- data/test/unit/sharding_pool_manager_test.rb +88 -0
- metadata +38 -69
- metadata.gz.sig +0 -0
- data/test/auxillary/1.4_feature_test.rb +0 -165
- data/test/auxillary/authentication_test.rb +0 -74
- data/test/auxillary/autoreconnect_test.rb +0 -39
- data/test/auxillary/fork_test.rb +0 -28
- data/test/auxillary/pool_reuse_test.rb +0 -65
- data/test/auxillary/repl_set_auth_test.rb +0 -69
- data/test/auxillary/slave_connection_test.rb +0 -37
- data/test/auxillary/threaded_authentication_test.rb +0 -99
- data/test/bson/binary_test.rb +0 -13
- data/test/bson/bson_test.rb +0 -762
- data/test/bson/byte_buffer_test.rb +0 -215
- data/test/bson/hash_with_indifferent_access_test.rb +0 -48
- data/test/bson/json_test.rb +0 -16
- data/test/bson/object_id_test.rb +0 -153
- data/test/bson/ordered_hash_test.rb +0 -247
- data/test/bson/timestamp_test.rb +0 -51
- data/test/tools/auth_repl_set_manager.rb +0 -14
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mongo
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.8.
|
4
|
+
version: 1.8.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tyler Brock
|
@@ -12,35 +12,28 @@ authors:
|
|
12
12
|
autorequire:
|
13
13
|
bindir: bin
|
14
14
|
cert_chain:
|
15
|
-
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
bVdUUXFVZE5iTm9HeXd3anRWQldmRGR3RlY4UG8xWGNOL0F0cElMT0pRZDlK
|
38
|
-
NzdJTklHR0NIeFpvCjZTT0hIYU5rbmxFOUgwdzZxMFNWeFpLWkk4LysyYzQ0
|
39
|
-
N1YwTnJISXcxUWhlMHRBR0o5VjF1M2t5OGd5eGUwU00KOHY3ekxGMlhsaVli
|
40
|
-
ZnVyWUl3a2NYczh5UG44Z2dBcEJJeTliWDZWSnhScy9sMitVdnF6YUhJRmFG
|
41
|
-
eS9GOC9HUApSTlR1WHNWRzVOREFDbzdRCi0tLS0tRU5EIENFUlRJRklDQVRF
|
42
|
-
LS0tLS0K
|
43
|
-
date: 2013-03-26 00:00:00.000000000 Z
|
15
|
+
- |
|
16
|
+
-----BEGIN CERTIFICATE-----
|
17
|
+
MIIDODCCAiCgAwIBAgIBADANBgkqhkiG9w0BAQUFADBCMRQwEgYDVQQDDAtkcml2
|
18
|
+
ZXItcnVieTEVMBMGCgmSJomT8ixkARkWBTEwZ2VuMRMwEQYKCZImiZPyLGQBGRYD
|
19
|
+
Y29tMB4XDTEzMDIwMTE0MTEzN1oXDTE0MDIwMTE0MTEzN1owQjEUMBIGA1UEAwwL
|
20
|
+
ZHJpdmVyLXJ1YnkxFTATBgoJkiaJk/IsZAEZFgUxMGdlbjETMBEGCgmSJomT8ixk
|
21
|
+
ARkWA2NvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANFdSAa8fRm1
|
22
|
+
bAM9za6Z0fAH4g02bqM1NGnw8zJQrE/PFrFfY6IFCT2AsLfOwr1maVm7iU1+kdVI
|
23
|
+
IQ+iI/9+E+ArJ+rbGV3dDPQ+SLl3mLT+vXjfjcxMqI2IW6UuVtt2U3Rxd4QU0kdT
|
24
|
+
JxmcPYs5fDN6BgYc6XXgUjy3m+Kwha2pGctdciUOwEfOZ4RmNRlEZKCMLRHdFP8j
|
25
|
+
4WTnJSGfXDiuoXICJb5yOPOZPuaapPSNXp93QkUdsqdKC32I+KMpKKYGBQ6yisfA
|
26
|
+
5MyVPPCzLR1lP5qXVGJPnOqUAkvEUfCahg7EP9tI20qxiXrR6TSEraYhIFXL0EGY
|
27
|
+
u8KAcPHm5KkCAwEAAaM5MDcwCQYDVR0TBAIwADAdBgNVHQ4EFgQUW3dZsX70mlSM
|
28
|
+
CiPrZxAGA1vwfNcwCwYDVR0PBAQDAgSwMA0GCSqGSIb3DQEBBQUAA4IBAQCIa/Y6
|
29
|
+
xS7YWBxkn9WP0EMnJ3pY9vef9DTmLSi/2jz8PzwlKQ89zNTrqSUD8LoQZmBqCJBt
|
30
|
+
dKSQ/RUnaHJuxh8HWvWubP8EBYTuf+I1DFnRv648IF3MR1tCQumVL0XcYMvZcxBj
|
31
|
+
a/p+8DomWTQqUdNbNoGywwjtVBWfDdwFV8Po1XcN/AtpILOJQd9J77INIGGCHxZo
|
32
|
+
6SOHHaNknlE9H0w6q0SVxZKZI8/+2c447V0NrHIw1Qhe0tAGJ9V1u3ky8gyxe0SM
|
33
|
+
8v7zLF2XliYbfurYIwkcXs8yPn8ggApBIy9bX6VJxRs/l2+UvqzaHIFaFy/F8/GP
|
34
|
+
RNTuXsVG5NDACo7Q
|
35
|
+
-----END CERTIFICATE-----
|
36
|
+
date: 2013-04-11 00:00:00.000000000 Z
|
44
37
|
dependencies:
|
45
38
|
- !ruby/object:Gem::Dependency
|
46
39
|
name: bson
|
@@ -48,14 +41,14 @@ dependencies:
|
|
48
41
|
requirements:
|
49
42
|
- - ~>
|
50
43
|
- !ruby/object:Gem::Version
|
51
|
-
version: 1.8.
|
44
|
+
version: 1.8.5
|
52
45
|
type: :runtime
|
53
46
|
prerelease: false
|
54
47
|
version_requirements: !ruby/object:Gem::Requirement
|
55
48
|
requirements:
|
56
49
|
- - ~>
|
57
50
|
- !ruby/object:Gem::Version
|
58
|
-
version: 1.8.
|
51
|
+
version: 1.8.5
|
59
52
|
description: A Ruby driver for MongoDB. For more information about Mongo, see http://www.mongodb.org.
|
60
53
|
email: mongodb-dev@googlegroups.com
|
61
54
|
executables:
|
@@ -100,22 +93,7 @@ files:
|
|
100
93
|
- lib/mongo/util/unix_socket.rb
|
101
94
|
- lib/mongo/util/uri_parser.rb
|
102
95
|
- lib/mongo/util/write_concern.rb
|
103
|
-
- test/
|
104
|
-
- test/auxillary/authentication_test.rb
|
105
|
-
- test/auxillary/autoreconnect_test.rb
|
106
|
-
- test/auxillary/fork_test.rb
|
107
|
-
- test/auxillary/pool_reuse_test.rb
|
108
|
-
- test/auxillary/repl_set_auth_test.rb
|
109
|
-
- test/auxillary/slave_connection_test.rb
|
110
|
-
- test/auxillary/threaded_authentication_test.rb
|
111
|
-
- test/bson/binary_test.rb
|
112
|
-
- test/bson/bson_test.rb
|
113
|
-
- test/bson/byte_buffer_test.rb
|
114
|
-
- test/bson/hash_with_indifferent_access_test.rb
|
115
|
-
- test/bson/json_test.rb
|
116
|
-
- test/bson/object_id_test.rb
|
117
|
-
- test/bson/ordered_hash_test.rb
|
118
|
-
- test/bson/timestamp_test.rb
|
96
|
+
- test/functional/authentication_test.rb
|
119
97
|
- test/functional/collection_test.rb
|
120
98
|
- test/functional/connection_test.rb
|
121
99
|
- test/functional/conversions_test.rb
|
@@ -135,6 +113,7 @@ files:
|
|
135
113
|
- test/functional/timeout_test.rb
|
136
114
|
- test/functional/uri_test.rb
|
137
115
|
- test/functional/write_concern_test.rb
|
116
|
+
- test/replica_set/authentication_test.rb
|
138
117
|
- test/replica_set/basic_test.rb
|
139
118
|
- test/replica_set/client_test.rb
|
140
119
|
- test/replica_set/complex_connect_test.rb
|
@@ -142,15 +121,16 @@ files:
|
|
142
121
|
- test/replica_set/count_test.rb
|
143
122
|
- test/replica_set/cursor_test.rb
|
144
123
|
- test/replica_set/insert_test.rb
|
124
|
+
- test/replica_set/max_values_test.rb
|
145
125
|
- test/replica_set/pinning_test.rb
|
146
126
|
- test/replica_set/query_test.rb
|
147
127
|
- test/replica_set/read_preference_test.rb
|
148
128
|
- test/replica_set/refresh_test.rb
|
149
129
|
- test/replica_set/replication_ack_test.rb
|
150
130
|
- test/sharded_cluster/basic_test.rb
|
131
|
+
- test/shared/authentication.rb
|
151
132
|
- test/test_helper.rb
|
152
133
|
- test/threading/basic_test.rb
|
153
|
-
- test/tools/auth_repl_set_manager.rb
|
154
134
|
- test/tools/mongo_config.rb
|
155
135
|
- test/tools/mongo_config_test.rb
|
156
136
|
- test/unit/client_test.rb
|
@@ -165,6 +145,7 @@ files:
|
|
165
145
|
- test/unit/pool_test.rb
|
166
146
|
- test/unit/read_test.rb
|
167
147
|
- test/unit/safe_test.rb
|
148
|
+
- test/unit/sharding_pool_manager_test.rb
|
168
149
|
- test/unit/util_test.rb
|
169
150
|
- test/unit/write_concern_test.rb
|
170
151
|
homepage: http://www.mongodb.org
|
@@ -177,37 +158,22 @@ require_paths:
|
|
177
158
|
- lib
|
178
159
|
required_ruby_version: !ruby/object:Gem::Requirement
|
179
160
|
requirements:
|
180
|
-
- -
|
161
|
+
- - '>='
|
181
162
|
- !ruby/object:Gem::Version
|
182
163
|
version: '0'
|
183
164
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
184
165
|
requirements:
|
185
|
-
- -
|
166
|
+
- - '>='
|
186
167
|
- !ruby/object:Gem::Version
|
187
168
|
version: '0'
|
188
169
|
requirements: []
|
189
170
|
rubyforge_project: mongo
|
190
|
-
rubygems_version: 2.0.
|
171
|
+
rubygems_version: 2.0.2
|
191
172
|
signing_key:
|
192
173
|
specification_version: 4
|
193
174
|
summary: Ruby driver for MongoDB
|
194
175
|
test_files:
|
195
|
-
- test/
|
196
|
-
- test/auxillary/authentication_test.rb
|
197
|
-
- test/auxillary/autoreconnect_test.rb
|
198
|
-
- test/auxillary/fork_test.rb
|
199
|
-
- test/auxillary/pool_reuse_test.rb
|
200
|
-
- test/auxillary/repl_set_auth_test.rb
|
201
|
-
- test/auxillary/slave_connection_test.rb
|
202
|
-
- test/auxillary/threaded_authentication_test.rb
|
203
|
-
- test/bson/binary_test.rb
|
204
|
-
- test/bson/bson_test.rb
|
205
|
-
- test/bson/byte_buffer_test.rb
|
206
|
-
- test/bson/hash_with_indifferent_access_test.rb
|
207
|
-
- test/bson/json_test.rb
|
208
|
-
- test/bson/object_id_test.rb
|
209
|
-
- test/bson/ordered_hash_test.rb
|
210
|
-
- test/bson/timestamp_test.rb
|
176
|
+
- test/functional/authentication_test.rb
|
211
177
|
- test/functional/collection_test.rb
|
212
178
|
- test/functional/connection_test.rb
|
213
179
|
- test/functional/conversions_test.rb
|
@@ -227,6 +193,7 @@ test_files:
|
|
227
193
|
- test/functional/timeout_test.rb
|
228
194
|
- test/functional/uri_test.rb
|
229
195
|
- test/functional/write_concern_test.rb
|
196
|
+
- test/replica_set/authentication_test.rb
|
230
197
|
- test/replica_set/basic_test.rb
|
231
198
|
- test/replica_set/client_test.rb
|
232
199
|
- test/replica_set/complex_connect_test.rb
|
@@ -234,15 +201,16 @@ test_files:
|
|
234
201
|
- test/replica_set/count_test.rb
|
235
202
|
- test/replica_set/cursor_test.rb
|
236
203
|
- test/replica_set/insert_test.rb
|
204
|
+
- test/replica_set/max_values_test.rb
|
237
205
|
- test/replica_set/pinning_test.rb
|
238
206
|
- test/replica_set/query_test.rb
|
239
207
|
- test/replica_set/read_preference_test.rb
|
240
208
|
- test/replica_set/refresh_test.rb
|
241
209
|
- test/replica_set/replication_ack_test.rb
|
242
210
|
- test/sharded_cluster/basic_test.rb
|
211
|
+
- test/shared/authentication.rb
|
243
212
|
- test/test_helper.rb
|
244
213
|
- test/threading/basic_test.rb
|
245
|
-
- test/tools/auth_repl_set_manager.rb
|
246
214
|
- test/tools/mongo_config.rb
|
247
215
|
- test/tools/mongo_config_test.rb
|
248
216
|
- test/unit/client_test.rb
|
@@ -257,6 +225,7 @@ test_files:
|
|
257
225
|
- test/unit/pool_test.rb
|
258
226
|
- test/unit/read_test.rb
|
259
227
|
- test/unit/safe_test.rb
|
228
|
+
- test/unit/sharding_pool_manager_test.rb
|
260
229
|
- test/unit/util_test.rb
|
261
230
|
- test/unit/write_concern_test.rb
|
262
231
|
has_rdoc: yard
|
metadata.gz.sig
CHANGED
Binary file
|
@@ -1,165 +0,0 @@
|
|
1
|
-
require 'test_helper'
|
2
|
-
require 'mongo'
|
3
|
-
|
4
|
-
|
5
|
-
# Demonstrate features in MongoDB 1.4
|
6
|
-
class Features14Test < Test::Unit::TestCase
|
7
|
-
|
8
|
-
context "MongoDB 1.4" do
|
9
|
-
setup do
|
10
|
-
@client = MongoClient.new
|
11
|
-
@db = @client['mongo-ruby-test']
|
12
|
-
@col = @db['new-features']
|
13
|
-
end
|
14
|
-
|
15
|
-
teardown do
|
16
|
-
@col.drop
|
17
|
-
end
|
18
|
-
|
19
|
-
context "new query operators: " do
|
20
|
-
|
21
|
-
context "$elemMatch: " do
|
22
|
-
setup do
|
23
|
-
@col.save({:user => 'bob', :updates => [{:date => Time.now.utc, :body => 'skiing', :n => 1},
|
24
|
-
{:date => Time.now.utc, :body => 'biking', :n => 2}]})
|
25
|
-
|
26
|
-
@col.save({:user => 'joe', :updates => [{:date => Time.now.utc, :body => 'skiing', :n => 2},
|
27
|
-
{:date => Time.now.utc, :body => 'biking', :n => 10}]})
|
28
|
-
end
|
29
|
-
|
30
|
-
should "match a document with a matching object element in an array" do
|
31
|
-
doc = @col.find_one({"updates" => {"$elemMatch" => {"body" => "skiing", "n" => 2}}})
|
32
|
-
assert_equal 'joe', doc['user']
|
33
|
-
end
|
34
|
-
|
35
|
-
should "$elemMatch with a conditional operator" do
|
36
|
-
doc1 = @col.find_one({"updates" => {"$elemMatch" => {"body" => "biking", "n" => {"$gt" => 5}}}})
|
37
|
-
assert_equal 'joe', doc1['user']
|
38
|
-
end
|
39
|
-
|
40
|
-
should "note the difference between $elemMatch and a traditional match" do
|
41
|
-
doc = @col.find({"updates.body" => "skiing", "updates.n" => 2}).to_a
|
42
|
-
assert_equal 2, doc.size
|
43
|
-
end
|
44
|
-
end
|
45
|
-
|
46
|
-
context "$all with regexes" do
|
47
|
-
setup do
|
48
|
-
@col.save({:n => 1, :a => 'whale'})
|
49
|
-
@col.save({:n => 2, :a => 'snake'})
|
50
|
-
end
|
51
|
-
|
52
|
-
should "match multiple regexes" do
|
53
|
-
doc = @col.find({:a => {'$all' => [/ha/, /le/]}}).to_a
|
54
|
-
assert_equal 1, doc.size
|
55
|
-
assert_equal 1, doc.first['n']
|
56
|
-
end
|
57
|
-
|
58
|
-
should "not match if not every regex matches" do
|
59
|
-
doc = @col.find({:a => {'$all' => [/ha/, /sn/]}}).to_a
|
60
|
-
assert_equal 0, doc.size
|
61
|
-
end
|
62
|
-
end
|
63
|
-
|
64
|
-
context "the $not operator" do
|
65
|
-
setup do
|
66
|
-
@col.save({:a => ['x']})
|
67
|
-
@col.save({:a => ['x', 'y']})
|
68
|
-
@col.save({:a => ['x', 'y', 'z']})
|
69
|
-
end
|
70
|
-
|
71
|
-
should "negate a standard operator" do
|
72
|
-
results = @col.find({:a => {'$not' => {'$size' => 2}}}).to_a
|
73
|
-
assert_equal 2, results.size
|
74
|
-
results = results.map {|r| r['a']}
|
75
|
-
assert_equal ['x'], results.sort.first
|
76
|
-
assert_equal ['x', 'y', 'z'], results.sort.last
|
77
|
-
end
|
78
|
-
end
|
79
|
-
end
|
80
|
-
|
81
|
-
context "new update operators: " do
|
82
|
-
|
83
|
-
context "$addToSet (pushing a unique value)" do
|
84
|
-
setup do
|
85
|
-
@col.save({:username => 'bob', :interests => ['skiing', 'guitar']})
|
86
|
-
end
|
87
|
-
|
88
|
-
should "add an item to a set uniquely ($addToSet)" do
|
89
|
-
@col.update({:username => 'bob'}, {'$addToSet' => {'interests' => 'skiing'}})
|
90
|
-
@col.update({:username => 'bob'}, {'$addToSet' => {'interests' => 'kayaking'}})
|
91
|
-
document = @col.find_one({:username => 'bob'})
|
92
|
-
assert_equal ['guitar', 'kayaking', 'skiing'], document['interests'].sort
|
93
|
-
end
|
94
|
-
|
95
|
-
should "add an array of items uniquely ($addToSet with $each)" do
|
96
|
-
@col.update({:username => 'bob'}, {'$addToSet' => {'interests' => {'$each' => ['skiing', 'kayaking', 'biking']}}})
|
97
|
-
document = @col.find_one({:username => 'bob'})
|
98
|
-
assert_equal ['biking', 'guitar', 'kayaking', 'skiing'], document['interests'].sort
|
99
|
-
end
|
100
|
-
end
|
101
|
-
|
102
|
-
context "the positional operator ($)" do
|
103
|
-
setup do
|
104
|
-
@id1 = @col.insert({:text => 'hello',
|
105
|
-
:comments => [{'by' => 'bob',
|
106
|
-
'text' => 'lol!'},
|
107
|
-
{'by' => 'susie',
|
108
|
-
'text' => 'bye bye!'}]})
|
109
|
-
@id2 = @col.insert({:text => 'goodbye',
|
110
|
-
:comments => [{'by' => 'bob',
|
111
|
-
'text' => 'au revoir'},
|
112
|
-
{'by' => 'susie',
|
113
|
-
'text' => 'bye bye!'}]})
|
114
|
-
end
|
115
|
-
|
116
|
-
should "update a matching array item" do
|
117
|
-
@col.update({"_id" => @id1, "comments.by" => 'bob'}, {'$set' => {'comments.$.text' => 'lmao!'}}, :multi => true)
|
118
|
-
result = @col.find_one({"_id" => @id1})
|
119
|
-
assert_equal 'lmao!', result['comments'][0]['text']
|
120
|
-
end
|
121
|
-
end
|
122
|
-
end
|
123
|
-
|
124
|
-
context "Geoindexing" do
|
125
|
-
setup do
|
126
|
-
@places = @db['places']
|
127
|
-
@places.create_index([['loc', Mongo::GEO2D]])
|
128
|
-
|
129
|
-
@empire_state = ([40.748371, -73.985031])
|
130
|
-
@jfk = ([40.643711, -73.790009])
|
131
|
-
|
132
|
-
@places.insert({'name' => 'Empire State Building', 'loc' => ([40.748371, -73.985031])})
|
133
|
-
@places.insert({'name' => 'Flatiron Building', 'loc' => ([40.741581, -73.987549])})
|
134
|
-
@places.insert({'name' => 'Grand Central', 'loc' => ([40.751678, -73.976562])})
|
135
|
-
@places.insert({'name' => 'Columbia University', 'loc' => ([40.808922, -73.961617])})
|
136
|
-
@places.insert({'name' => 'NYSE', 'loc' => ([40.71455, -74.007124])})
|
137
|
-
@places.insert({'name' => 'JFK', 'loc' => ([40.643711, -73.790009])})
|
138
|
-
end
|
139
|
-
|
140
|
-
teardown do
|
141
|
-
@places.drop
|
142
|
-
end
|
143
|
-
|
144
|
-
should "find the nearest addresses" do
|
145
|
-
results = @places.find({'loc' => {'$near' => @empire_state}}).limit(2).to_a
|
146
|
-
assert_equal 2, results.size
|
147
|
-
assert_equal 'Empire State Building', results[0]['name']
|
148
|
-
assert_equal 'Flatiron Building', results[1]['name']
|
149
|
-
end
|
150
|
-
|
151
|
-
should "use geoNear command to return distances from a point" do
|
152
|
-
cmd = BSON::OrderedHash.new
|
153
|
-
cmd['geoNear'] = 'places'
|
154
|
-
cmd['near'] = @empire_state
|
155
|
-
cmd['num'] = 6
|
156
|
-
r = @db.command(cmd)
|
157
|
-
|
158
|
-
assert_equal 6, r['results'].length
|
159
|
-
r['results'].each do |result|
|
160
|
-
puts result.inspect
|
161
|
-
end
|
162
|
-
end
|
163
|
-
end
|
164
|
-
end
|
165
|
-
end
|
@@ -1,74 +0,0 @@
|
|
1
|
-
require 'test_helper'
|
2
|
-
require 'mongo'
|
3
|
-
|
4
|
-
# NOTE: This test requires bouncing the server.
|
5
|
-
# It also requires that a user exists on the admin database.
|
6
|
-
class AuthenticationTest < Test::Unit::TestCase
|
7
|
-
include Mongo
|
8
|
-
|
9
|
-
def setup
|
10
|
-
@client = MongoClient.new
|
11
|
-
@db1 = @client.db('mongo-ruby-test-auth1')
|
12
|
-
@db2 = @client.db('mongo-ruby-test-auth2')
|
13
|
-
@admin = @client.db('admin')
|
14
|
-
end
|
15
|
-
|
16
|
-
def teardown
|
17
|
-
@db1.authenticate('user1', 'secret')
|
18
|
-
@db2.authenticate('user2', 'secret')
|
19
|
-
@client.drop_database('mongo-ruby-test-auth1')
|
20
|
-
@client.drop_database('mongo-ruby-test-auth2')
|
21
|
-
end
|
22
|
-
|
23
|
-
def test_authenticate
|
24
|
-
@admin.authenticate('bob', 'secret')
|
25
|
-
@db1.add_user('user1', 'secret')
|
26
|
-
@db2.add_user('user2', 'secret')
|
27
|
-
@db2.add_user('userRO', 'secret', true) # read-only
|
28
|
-
@admin.logout
|
29
|
-
|
30
|
-
assert_raise Mongo::OperationFailure do
|
31
|
-
@db1['stuff'].insert({:a => 2})
|
32
|
-
end
|
33
|
-
|
34
|
-
assert_raise Mongo::OperationFailure do
|
35
|
-
@db2['stuff'].insert({:a => 2})
|
36
|
-
end
|
37
|
-
|
38
|
-
@db1.authenticate('user1', 'secret')
|
39
|
-
@db2.authenticate('user2', 'secret')
|
40
|
-
|
41
|
-
assert @db1['stuff'].insert({:a => 2})
|
42
|
-
assert @db2['stuff'].insert({:a => 2})
|
43
|
-
|
44
|
-
puts "Please bounce the server."
|
45
|
-
gets
|
46
|
-
|
47
|
-
# Here we reconnect.
|
48
|
-
begin
|
49
|
-
@db1['stuff'].find.to_a
|
50
|
-
rescue Mongo::ConnectionFailure
|
51
|
-
end
|
52
|
-
|
53
|
-
assert @db1['stuff'].insert({:a => 2})
|
54
|
-
assert @db2['stuff'].insert({:a => 2})
|
55
|
-
assert @db2['stuff'].find({})
|
56
|
-
|
57
|
-
@db1.logout
|
58
|
-
assert_raise Mongo::OperationFailure do
|
59
|
-
@db1['stuff'].insert({:a => 2})
|
60
|
-
end
|
61
|
-
|
62
|
-
@db2.logout
|
63
|
-
assert_raise Mongo::OperationFailure do
|
64
|
-
assert @db2['stuff'].insert({:a => 2})
|
65
|
-
end
|
66
|
-
|
67
|
-
@db2.authenticate('userRO', 'secret')
|
68
|
-
assert @db2['stuff'].find({})
|
69
|
-
assert_raise Mongo::OperationFailure do
|
70
|
-
assert @db2['stuff'].insert({:a => 2})
|
71
|
-
end
|
72
|
-
end
|
73
|
-
|
74
|
-
end
|