mongo 2.1.0.beta → 2.1.0.rc0

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.
Files changed (253) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +0 -0
  3. data.tar.gz.sig +0 -0
  4. data/Rakefile +2 -2
  5. data/lib/mongo.rb +2 -3
  6. data/lib/mongo/address.rb +7 -5
  7. data/lib/mongo/address/unix.rb +2 -2
  8. data/lib/mongo/auth/ldap/conversation.rb +6 -2
  9. data/lib/mongo/auth/scram/conversation.rb +8 -2
  10. data/lib/mongo/auth/user/view.rb +21 -0
  11. data/lib/mongo/bulk_write.rb +155 -23
  12. data/lib/mongo/bulk_write/combineable.rb +51 -0
  13. data/lib/mongo/bulk_write/ordered_combiner.rb +55 -0
  14. data/lib/mongo/bulk_write/result.rb +61 -8
  15. data/lib/mongo/bulk_write/result_combiner.rb +117 -0
  16. data/lib/mongo/bulk_write/transformable.rb +117 -0
  17. data/lib/mongo/bulk_write/unordered_combiner.rb +52 -0
  18. data/lib/mongo/bulk_write/validatable.rb +62 -0
  19. data/lib/mongo/client.rb +7 -3
  20. data/lib/mongo/cluster.rb +3 -3
  21. data/lib/mongo/cluster/topology/replica_set.rb +8 -6
  22. data/lib/mongo/cluster/topology/unknown.rb +5 -2
  23. data/lib/mongo/collection.rb +75 -4
  24. data/lib/mongo/collection/view.rb +1 -2
  25. data/lib/mongo/collection/view/aggregation.rb +13 -8
  26. data/lib/mongo/collection/view/immutable.rb +6 -6
  27. data/lib/mongo/collection/view/iterable.rb +13 -4
  28. data/lib/mongo/collection/view/map_reduce.rb +22 -17
  29. data/lib/mongo/collection/view/readable.rb +121 -70
  30. data/lib/mongo/cursor.rb +5 -1
  31. data/lib/mongo/database.rb +3 -3
  32. data/lib/mongo/database/view.rb +1 -1
  33. data/lib/mongo/error.rb +7 -0
  34. data/lib/mongo/{bulk_write/unordered_bulk_write.rb → error/closed_stream.rb} +12 -21
  35. data/lib/mongo/{bulk_write/ordered_bulk_write.rb → error/extra_file_chunk.rb} +13 -27
  36. data/lib/mongo/error/file_not_found.rb +37 -0
  37. data/lib/mongo/error/invalid_file.rb +2 -2
  38. data/lib/mongo/error/invalid_file_revision.rb +37 -0
  39. data/lib/mongo/error/invalid_uri.rb +5 -4
  40. data/lib/mongo/error/missing_file_chunk.rb +38 -0
  41. data/lib/mongo/error/operation_failure.rb +1 -1
  42. data/lib/mongo/error/unchangeable_collection_option.rb +38 -0
  43. data/lib/mongo/error/unexpected_chunk_length.rb +39 -0
  44. data/lib/mongo/grid.rb +2 -1
  45. data/lib/mongo/grid/file.rb +12 -9
  46. data/lib/mongo/grid/file/chunk.rb +6 -6
  47. data/lib/mongo/grid/file/{metadata.rb → info.rb} +41 -39
  48. data/lib/mongo/grid/fs_bucket.rb +441 -0
  49. data/lib/mongo/grid/stream.rb +64 -0
  50. data/lib/mongo/grid/stream/read.rb +208 -0
  51. data/lib/mongo/grid/stream/write.rb +187 -0
  52. data/lib/mongo/index/view.rb +1 -1
  53. data/lib/mongo/loggable.rb +34 -57
  54. data/lib/mongo/logger.rb +16 -78
  55. data/lib/mongo/monitoring.rb +1 -5
  56. data/lib/mongo/monitoring/command_log_subscriber.rb +35 -17
  57. data/lib/mongo/monitoring/event/command_succeeded.rb +20 -1
  58. data/lib/mongo/monitoring/publishable.rb +22 -12
  59. data/lib/mongo/operation.rb +3 -6
  60. data/lib/mongo/operation/commands.rb +24 -0
  61. data/lib/mongo/operation/{aggregate.rb → commands/aggregate.rb} +3 -41
  62. data/lib/mongo/operation/{aggregate → commands/aggregate}/result.rb +0 -0
  63. data/lib/mongo/operation/commands/collections_info.rb +66 -0
  64. data/lib/mongo/operation/{command.rb → commands/command.rb} +2 -18
  65. data/lib/mongo/operation/commands/indexes.rb +70 -0
  66. data/lib/mongo/operation/commands/list_collections.rb +54 -0
  67. data/lib/mongo/operation/commands/list_collections/result.rb +112 -0
  68. data/lib/mongo/operation/commands/list_indexes.rb +56 -0
  69. data/lib/mongo/operation/commands/list_indexes/result.rb +115 -0
  70. data/lib/mongo/operation/{map_reduce.rb → commands/map_reduce.rb} +3 -41
  71. data/lib/mongo/operation/{map_reduce → commands/map_reduce}/result.rb +0 -0
  72. data/lib/mongo/operation/{parallel_scan.rb → commands/parallel_scan.rb} +3 -23
  73. data/lib/mongo/operation/{parallel_scan → commands/parallel_scan}/result.rb +0 -0
  74. data/lib/mongo/operation/commands/user_query.rb +69 -0
  75. data/lib/mongo/operation/commands/users_info.rb +53 -0
  76. data/lib/mongo/operation/commands/users_info/result.rb +36 -0
  77. data/lib/mongo/operation/executable.rb +4 -68
  78. data/lib/mongo/operation/kill_cursors.rb +3 -3
  79. data/lib/mongo/operation/read.rb +0 -4
  80. data/lib/mongo/operation/read/get_more.rb +2 -22
  81. data/lib/mongo/operation/read/query.rb +2 -21
  82. data/lib/mongo/operation/{read_preferrable.rb → read_preference.rb} +3 -2
  83. data/lib/mongo/operation/specifiable.rb +24 -0
  84. data/lib/mongo/operation/write.rb +2 -0
  85. data/lib/mongo/operation/write/bulk.rb +6 -3
  86. data/lib/mongo/operation/write/bulk/bulkable.rb +82 -0
  87. data/lib/mongo/operation/write/bulk/delete.rb +71 -0
  88. data/lib/mongo/operation/write/bulk/delete/result.rb +74 -0
  89. data/lib/mongo/operation/write/bulk/insert.rb +96 -0
  90. data/lib/mongo/operation/write/bulk/insert/result.rb +129 -0
  91. data/lib/mongo/operation/write/bulk/legacy_mergable.rb +87 -0
  92. data/lib/mongo/operation/write/bulk/mergable.rb +71 -0
  93. data/lib/mongo/operation/write/bulk/update.rb +81 -0
  94. data/lib/mongo/operation/write/bulk/update/result.rb +174 -0
  95. data/lib/mongo/operation/write/command/create_index.rb +0 -1
  96. data/lib/mongo/operation/write/command/create_user.rb +0 -1
  97. data/lib/mongo/operation/write/command/delete.rb +0 -1
  98. data/lib/mongo/operation/write/command/drop_index.rb +0 -1
  99. data/lib/mongo/operation/write/command/insert.rb +0 -1
  100. data/lib/mongo/operation/write/command/remove_user.rb +0 -1
  101. data/lib/mongo/operation/write/command/update.rb +0 -1
  102. data/lib/mongo/operation/write/command/update_user.rb +0 -1
  103. data/lib/mongo/operation/write/command/writable.rb +13 -18
  104. data/lib/mongo/operation/write/create_index.rb +4 -27
  105. data/lib/mongo/operation/write/create_user.rb +4 -30
  106. data/lib/mongo/operation/write/delete.rb +5 -28
  107. data/lib/mongo/operation/write/drop_index.rb +3 -3
  108. data/lib/mongo/operation/write/gle.rb +48 -0
  109. data/lib/mongo/operation/write/idable.rb +5 -0
  110. data/lib/mongo/operation/write/insert.rb +2 -24
  111. data/lib/mongo/operation/write/remove_user.rb +4 -27
  112. data/lib/mongo/operation/write/update.rb +4 -32
  113. data/lib/mongo/operation/write/update_user.rb +4 -30
  114. data/lib/mongo/operation/write/write_command_enabled.rb +53 -0
  115. data/lib/mongo/options/mapper.rb +4 -2
  116. data/lib/mongo/protocol/delete.rb +68 -3
  117. data/lib/mongo/protocol/get_more.rb +54 -2
  118. data/lib/mongo/protocol/insert.rb +59 -1
  119. data/lib/mongo/protocol/kill_cursors.rb +53 -4
  120. data/lib/mongo/protocol/message.rb +12 -12
  121. data/lib/mongo/protocol/query.rb +139 -65
  122. data/lib/mongo/protocol/reply.rb +69 -1
  123. data/lib/mongo/protocol/update.rb +70 -1
  124. data/lib/mongo/server/connection.rb +11 -3
  125. data/lib/mongo/server/description.rb +29 -0
  126. data/lib/mongo/server/description/features.rb +2 -1
  127. data/lib/mongo/server/monitor.rb +2 -2
  128. data/lib/mongo/server_selector.rb +14 -10
  129. data/lib/mongo/server_selector/selectable.rb +24 -22
  130. data/lib/mongo/socket.rb +6 -3
  131. data/lib/mongo/socket/tcp.rb +2 -2
  132. data/lib/mongo/socket/unix.rb +5 -8
  133. data/lib/mongo/uri.rb +243 -139
  134. data/lib/mongo/version.rb +1 -1
  135. data/spec/mongo/address/unix_spec.rb +1 -1
  136. data/spec/mongo/address_spec.rb +25 -0
  137. data/spec/mongo/auth/ldap/conversation_spec.rb +43 -0
  138. data/spec/mongo/auth/user/view_spec.rb +26 -1
  139. data/spec/mongo/bulk_write/ordered_combiner_spec.rb +271 -0
  140. data/spec/mongo/bulk_write/unordered_combiner_spec.rb +239 -0
  141. data/spec/mongo/bulk_write_spec.rb +332 -166
  142. data/spec/mongo/client_spec.rb +25 -0
  143. data/spec/mongo/cluster/topology/replica_set_spec.rb +2 -0
  144. data/spec/mongo/collection/view/aggregation_spec.rb +65 -0
  145. data/spec/mongo/collection/view/immutable_spec.rb +103 -0
  146. data/spec/mongo/collection/view/map_reduce_spec.rb +98 -3
  147. data/spec/mongo/collection/view/readable_spec.rb +17 -30
  148. data/spec/mongo/collection/view_spec.rb +233 -7
  149. data/spec/mongo/collection_spec.rb +360 -18
  150. data/spec/mongo/command_monitoring_spec.rb +51 -0
  151. data/spec/mongo/connection_string_spec.rb +137 -0
  152. data/spec/mongo/database_spec.rb +27 -11
  153. data/spec/mongo/grid/file/chunk_spec.rb +5 -5
  154. data/spec/mongo/grid/file/{metadata_spec.rb → info_spec.rb} +29 -17
  155. data/spec/mongo/grid/file_spec.rb +8 -8
  156. data/spec/mongo/grid/fs_bucket_spec.rb +1020 -0
  157. data/spec/mongo/grid/stream/read_spec.rb +275 -0
  158. data/spec/mongo/grid/stream/write_spec.rb +440 -0
  159. data/spec/mongo/grid/stream_spec.rb +48 -0
  160. data/spec/mongo/gridfs_spec.rb +50 -0
  161. data/spec/mongo/logger_spec.rb +0 -40
  162. data/spec/mongo/monitoring/command_log_subscriber_spec.rb +76 -0
  163. data/spec/mongo/operation/{aggregate_spec.rb → commands/aggregate_spec.rb} +0 -42
  164. data/spec/mongo/operation/{read → commands}/collections_info_spec.rb +1 -1
  165. data/spec/mongo/operation/{command_spec.rb → commands/command_spec.rb} +0 -0
  166. data/spec/mongo/operation/{read → commands}/indexes_spec.rb +1 -1
  167. data/spec/mongo/operation/{map_reduce_spec.rb → commands/map_reduce_spec.rb} +0 -18
  168. data/spec/mongo/operation/kill_cursors_spec.rb +1 -1
  169. data/spec/mongo/operation/{read_preferrable_spec.rb → read_preference_spec.rb} +11 -11
  170. data/spec/mongo/operation/write/bulk/{bulk_delete_spec.rb → delete_spec.rb} +1 -12
  171. data/spec/mongo/operation/write/bulk/{bulk_insert_spec.rb → insert_spec.rb} +1 -12
  172. data/spec/mongo/operation/write/bulk/{bulk_update_spec.rb → update_spec.rb} +1 -12
  173. data/spec/mongo/operation/write/insert_spec.rb +0 -11
  174. data/spec/mongo/protocol/kill_cursors_spec.rb +5 -3
  175. data/spec/mongo/server/description_spec.rb +42 -0
  176. data/spec/mongo/server/monitor_spec.rb +21 -0
  177. data/spec/mongo/server_discovery_and_monitoring_spec.rb +1 -0
  178. data/spec/mongo/server_selection_spec.rb +3 -3
  179. data/spec/mongo/server_selector/nearest_spec.rb +34 -27
  180. data/spec/mongo/server_selector/primary_preferred_spec.rb +31 -30
  181. data/spec/mongo/server_selector/primary_spec.rb +14 -13
  182. data/spec/mongo/server_selector/secondary_preferred_spec.rb +27 -26
  183. data/spec/mongo/server_selector/secondary_spec.rb +23 -22
  184. data/spec/mongo/server_selector_spec.rb +87 -24
  185. data/spec/mongo/socket/unix_spec.rb +52 -0
  186. data/spec/mongo/uri_spec.rb +251 -39
  187. data/spec/spec_helper.rb +11 -4
  188. data/spec/support/authorization.rb +4 -5
  189. data/spec/support/command_monitoring.rb +365 -0
  190. data/spec/support/command_monitoring/bulkWrite.yml +73 -0
  191. data/spec/support/command_monitoring/command.yml +42 -0
  192. data/spec/support/command_monitoring/deleteMany.yml +55 -0
  193. data/spec/support/command_monitoring/deleteOne.yml +55 -0
  194. data/spec/support/command_monitoring/find.yml +219 -0
  195. data/spec/support/command_monitoring/insertMany.yml +81 -0
  196. data/spec/support/command_monitoring/insertOne.yml +51 -0
  197. data/spec/support/command_monitoring/updateMany.yml +67 -0
  198. data/spec/support/command_monitoring/updateOne.yml +95 -0
  199. data/spec/support/connection_string.rb +228 -0
  200. data/spec/support/connection_string_tests/invalid-uris.yml +193 -0
  201. data/spec/support/connection_string_tests/valid-auth.yml +256 -0
  202. data/spec/support/connection_string_tests/valid-host_identifiers.yml +121 -0
  203. data/spec/support/connection_string_tests/valid-options.yml +30 -0
  204. data/spec/support/connection_string_tests/valid-unix_socket-absolute.yml +197 -0
  205. data/spec/support/connection_string_tests/valid-unix_socket-relative.yml +213 -0
  206. data/spec/support/connection_string_tests/valid-warnings.yml +55 -0
  207. data/spec/support/crud.rb +3 -1
  208. data/spec/support/crud/read.rb +14 -10
  209. data/spec/support/crud/write.rb +36 -9
  210. data/spec/support/gridfs.rb +637 -0
  211. data/spec/support/gridfs_tests/delete.yml +157 -0
  212. data/spec/support/gridfs_tests/download.yml +210 -0
  213. data/spec/support/gridfs_tests/download_by_name.yml +113 -0
  214. data/spec/support/gridfs_tests/upload.yml +158 -0
  215. data/spec/support/sdam/rs/equal_electionids.yml +1 -2
  216. data/spec/support/sdam/rs/new_primary_new_electionid.yml +0 -3
  217. data/spec/support/sdam/rs/primary_mismatched_me.yml +37 -0
  218. data/spec/support/sdam/rs/primary_to_no_primary_mismatched_me.yml +75 -0
  219. data/spec/support/sdam/rs/secondary_mismatched_me.yml +37 -0
  220. data/spec/support/sdam/single/direct_connection_rsarbiter.yml +1 -1
  221. data/spec/support/sdam/single/direct_connection_rsprimary.yml +1 -1
  222. data/spec/support/sdam/single/direct_connection_rssecondary.yml +1 -1
  223. data/spec/support/sdam/single/direct_connection_slave.yml +1 -1
  224. data/spec/support/sdam/single/direct_connection_standalone.yml +1 -1
  225. data/spec/support/sdam/single/not_ok_response.yml +0 -1
  226. data/spec/support/server_discovery_and_monitoring.rb +3 -1
  227. data/spec/support/server_selection.rb +3 -1
  228. data/spec/support/shared/bulk_write.rb +192 -0
  229. data/spec/support/shared/server_selector.rb +21 -12
  230. metadata +147 -57
  231. metadata.gz.sig +0 -0
  232. data/lib/mongo/bulk_write/bulk_writable.rb +0 -252
  233. data/lib/mongo/bulk_write/deletable.rb +0 -57
  234. data/lib/mongo/bulk_write/insertable.rb +0 -49
  235. data/lib/mongo/bulk_write/replacable.rb +0 -58
  236. data/lib/mongo/bulk_write/updatable.rb +0 -69
  237. data/lib/mongo/grid/fs.rb +0 -146
  238. data/lib/mongo/operation/list_collections/result.rb +0 -114
  239. data/lib/mongo/operation/list_indexes/result.rb +0 -118
  240. data/lib/mongo/operation/read/collections_info.rb +0 -68
  241. data/lib/mongo/operation/read/indexes.rb +0 -69
  242. data/lib/mongo/operation/read/list_collections.rb +0 -76
  243. data/lib/mongo/operation/read/list_indexes.rb +0 -78
  244. data/lib/mongo/operation/write/bulk/bulk_delete.rb +0 -145
  245. data/lib/mongo/operation/write/bulk/bulk_delete/result.rb +0 -75
  246. data/lib/mongo/operation/write/bulk/bulk_insert.rb +0 -132
  247. data/lib/mongo/operation/write/bulk/bulk_insert/result.rb +0 -130
  248. data/lib/mongo/operation/write/bulk/bulk_mergable.rb +0 -67
  249. data/lib/mongo/operation/write/bulk/bulk_update.rb +0 -154
  250. data/lib/mongo/operation/write/bulk/bulk_update/result.rb +0 -174
  251. data/lib/mongo/operation/write/bulk/legacy_bulk_mergable.rb +0 -83
  252. data/spec/mongo/grid/fs_spec.rb +0 -160
  253. data/spec/mongo/loggable_spec.rb +0 -63
@@ -0,0 +1,256 @@
1
+ tests:
2
+ -
3
+ description: "User info for single IPv4 host without database"
4
+ uri: "mongodb://alice:foo@127.0.0.1"
5
+ valid: true
6
+ warning: false
7
+ hosts:
8
+ -
9
+ type: "ipv4"
10
+ host: "127.0.0.1"
11
+ port: ~
12
+ auth:
13
+ username: "alice"
14
+ password: "foo"
15
+ db: ~
16
+ options: ~
17
+ -
18
+ description: "User info for single IPv4 host with database"
19
+ uri: "mongodb://alice:foo@127.0.0.1/test"
20
+ valid: true
21
+ warning: false
22
+ hosts:
23
+ -
24
+ type: "ipv4"
25
+ host: "127.0.0.1"
26
+ port: ~
27
+ auth:
28
+ username: "alice"
29
+ password: "foo"
30
+ db: "test"
31
+ options: ~
32
+ -
33
+ description: "User info for single IPv4 host with database (escaped null bytes)"
34
+ uri: "mongodb://a%00lice:f%00oo@127.0.0.1/t%00est"
35
+ valid: true
36
+ warning: false
37
+ hosts:
38
+ -
39
+ type: "ipv4"
40
+ host: "127.0.0.1"
41
+ port: ~
42
+ auth:
43
+ username: "a\0lice"
44
+ password: "f\0oo"
45
+ db: "t\0est"
46
+ options: ~
47
+ -
48
+ description: "User info for single IP literal host without database"
49
+ uri: "mongodb://bob:bar@[::1]:27018"
50
+ valid: true
51
+ warning: false
52
+ hosts:
53
+ -
54
+ type: "ip_literal"
55
+ host: "::1"
56
+ port: 27018
57
+ auth:
58
+ username: "bob"
59
+ password: "bar"
60
+ db: ~
61
+ options: ~
62
+ -
63
+ description: "User info for single IP literal host with database"
64
+ uri: "mongodb://bob:bar@[::1]:27018/admin"
65
+ valid: true
66
+ warning: false
67
+ hosts:
68
+ -
69
+ type: "ip_literal"
70
+ host: "::1"
71
+ port: 27018
72
+ auth:
73
+ username: "bob"
74
+ password: "bar"
75
+ db: "admin"
76
+ options: ~
77
+ -
78
+ description: "User info for single hostname without database"
79
+ uri: "mongodb://eve:baz@example.com"
80
+ valid: true
81
+ warning: false
82
+ hosts:
83
+ -
84
+ type: "hostname"
85
+ host: "example.com"
86
+ port: ~
87
+ auth:
88
+ username: "eve"
89
+ password: "baz"
90
+ db: ~
91
+ options: ~
92
+ -
93
+ description: "User info for single hostname with database"
94
+ uri: "mongodb://eve:baz@example.com/db2"
95
+ valid: true
96
+ warning: false
97
+ hosts:
98
+ -
99
+ type: "hostname"
100
+ host: "example.com"
101
+ port: ~
102
+ auth:
103
+ username: "eve"
104
+ password: "baz"
105
+ db: "db2"
106
+ options: ~
107
+ -
108
+ description: "User info for multiple hosts without database"
109
+ uri: "mongodb://alice:secret@127.0.0.1,example.com:27018"
110
+ valid: true
111
+ warning: false
112
+ hosts:
113
+ -
114
+ type: "ipv4"
115
+ host: "127.0.0.1"
116
+ port: ~
117
+ -
118
+ type: "hostname"
119
+ host: "example.com"
120
+ port: 27018
121
+ auth:
122
+ username: "alice"
123
+ password: "secret"
124
+ db: ~
125
+ options: ~
126
+ -
127
+ description: "User info for multiple hosts with database"
128
+ uri: "mongodb://alice:secret@example.com,[::1]:27019/admin"
129
+ valid: true
130
+ warning: false
131
+ hosts:
132
+ -
133
+ type: "hostname"
134
+ host: "example.com"
135
+ port: ~
136
+ -
137
+ type: "ip_literal"
138
+ host: "::1"
139
+ port: 27019
140
+ auth:
141
+ username: "alice"
142
+ password: "secret"
143
+ db: "admin"
144
+ options: ~
145
+ -
146
+ description: "Username without password"
147
+ uri: "mongodb://alice@127.0.0.1"
148
+ valid: true
149
+ warning: false
150
+ hosts:
151
+ -
152
+ type: "ipv4"
153
+ host: "127.0.0.1"
154
+ port: ~
155
+ auth:
156
+ username: "alice"
157
+ password: ~
158
+ db: ~
159
+ options: ~
160
+ -
161
+ description: "Username with empty password"
162
+ uri: "mongodb://alice:@127.0.0.1"
163
+ valid: true
164
+ warning: false
165
+ hosts:
166
+ -
167
+ type: "ipv4"
168
+ host: "127.0.0.1"
169
+ port: ~
170
+ auth:
171
+ username: "alice"
172
+ password: ""
173
+ db: ~
174
+ options: ~
175
+ -
176
+ description: "Escaped username and database without password"
177
+ uri: "mongodb://%40l%3Ace@example.com/my%3Ddb"
178
+ valid: true
179
+ warning: false
180
+ hosts:
181
+ -
182
+ type: "hostname"
183
+ host: "example.com"
184
+ port: ~
185
+ auth:
186
+ username: "@l:ce"
187
+ password: ~
188
+ db: "my=db"
189
+ options: ~
190
+ -
191
+ description: "Escaped user info and database (MONGODB-CR)"
192
+ uri: "mongodb://%24am:f%3Azzb%40zz@127.0.0.1/admin%3F?authMechanism=MONGODB-CR"
193
+ valid: true
194
+ warning: false
195
+ hosts:
196
+ -
197
+ type: "ipv4"
198
+ host: "127.0.0.1"
199
+ port: ~
200
+ auth:
201
+ username: "$am"
202
+ password: "f:zzb@zz"
203
+ db: "admin?"
204
+ options:
205
+ authmechanism: "MONGODB-CR"
206
+ -
207
+ description: "Escaped username (MONGODB-X509)"
208
+ uri: "mongodb://CN%3DmyName%2COU%3DmyOrgUnit%2CO%3DmyOrg%2CL%3DmyLocality%2CST%3DmyState%2CC%3DmyCountry@localhost/?authMechanism=MONGODB-X509"
209
+ valid: true
210
+ warning: false
211
+ hosts:
212
+ -
213
+ type: "hostname"
214
+ host: "localhost"
215
+ port: ~
216
+ auth:
217
+ username: "CN=myName,OU=myOrgUnit,O=myOrg,L=myLocality,ST=myState,C=myCountry"
218
+ password: ~
219
+ db: ~
220
+ options:
221
+ authmechanism: "MONGODB-X509"
222
+ -
223
+ description: "Escaped username (GSSAPI)"
224
+ uri: "mongodb://user%40EXAMPLE.COM:secret@localhost/?authMechanismProperties=SERVICE_NAME:other,CANONICALIZE_HOST_NAME:true&authMechanism=GSSAPI"
225
+ valid: true
226
+ warning: false
227
+ hosts:
228
+ -
229
+ type: "hostname"
230
+ host: "localhost"
231
+ port: ~
232
+ auth:
233
+ username: "user@EXAMPLE.COM"
234
+ password: "secret"
235
+ db: ~
236
+ options:
237
+ authmechanism: "GSSAPI"
238
+ authmechanismproperties:
239
+ SERVICE_NAME: "other"
240
+ CANONICALIZE_HOST_NAME: true
241
+ -
242
+ description: "At-signs in options aren't part of the userinfo"
243
+ uri: "mongodb://alice:secret@example.com/admin?replicaset=my@replicaset"
244
+ valid: true
245
+ warning: false
246
+ hosts:
247
+ -
248
+ type: "hostname"
249
+ host: "example.com"
250
+ port: ~
251
+ auth:
252
+ username: "alice"
253
+ password: "secret"
254
+ db: "admin"
255
+ options:
256
+ replicaset: "my@replicaset"
@@ -0,0 +1,121 @@
1
+ tests:
2
+ -
3
+ description: "Single IPv4 host without port"
4
+ uri: "mongodb://127.0.0.1"
5
+ valid: true
6
+ warning: false
7
+ hosts:
8
+ -
9
+ type: "ipv4"
10
+ host: "127.0.0.1"
11
+ port: ~
12
+ auth: ~
13
+ options: ~
14
+ -
15
+ description: "Single IPv4 host with port"
16
+ uri: "mongodb://127.0.0.1:27018"
17
+ valid: true
18
+ warning: false
19
+ hosts:
20
+ -
21
+ type: "ipv4"
22
+ host: "127.0.0.1"
23
+ port: 27018
24
+ auth: ~
25
+ options: ~
26
+ -
27
+ description: "Single IP literal host without port"
28
+ uri: "mongodb://[::1]"
29
+ valid: true
30
+ warning: false
31
+ hosts:
32
+ -
33
+ type: "ip_literal"
34
+ host: "::1"
35
+ port: ~
36
+ auth: ~
37
+ options: ~
38
+ -
39
+ description: "Single IP literal host with port"
40
+ uri: "mongodb://[::1]:27019"
41
+ valid: true
42
+ warning: false
43
+ hosts:
44
+ -
45
+ type: "ip_literal"
46
+ host: "::1"
47
+ port: 27019
48
+ auth: ~
49
+ options: ~
50
+ -
51
+ description: "Single hostname without port"
52
+ uri: "mongodb://example.com"
53
+ valid: true
54
+ warning: false
55
+ hosts:
56
+ -
57
+ type: "hostname"
58
+ host: "example.com"
59
+ port: ~
60
+ auth: ~
61
+ options: ~
62
+ -
63
+ description: "Single hostname with port"
64
+ uri: "mongodb://example.com:27020"
65
+ valid: true
66
+ warning: false
67
+ hosts:
68
+ -
69
+ type: "hostname"
70
+ host: "example.com"
71
+ port: 27020
72
+ auth: ~
73
+ options: ~
74
+ -
75
+ description: "Single hostname (resembling IPv4) without port"
76
+ uri: "mongodb://256.0.0.1"
77
+ valid: true
78
+ warning: false
79
+ hosts:
80
+ -
81
+ type: "hostname"
82
+ host: "256.0.0.1"
83
+ port: ~
84
+ auth: ~
85
+ options: ~
86
+ -
87
+ description: "Multiple hosts (mixed formats)"
88
+ uri: "mongodb://127.0.0.1,[::1]:27018,example.com:27019"
89
+ valid: true
90
+ warning: false
91
+ hosts:
92
+ -
93
+ type: "ipv4"
94
+ host: "127.0.0.1"
95
+ port: ~
96
+ -
97
+ type: "ip_literal"
98
+ host: "::1"
99
+ port: 27018
100
+ -
101
+ type: "hostname"
102
+ host: "example.com"
103
+ port: 27019
104
+ auth: ~
105
+ options: ~
106
+ -
107
+ description: "UTF-8 hosts"
108
+ uri: "mongodb://bücher.example.com,umläut.example.com/"
109
+ valid: true
110
+ warning: false
111
+ hosts:
112
+ -
113
+ type: "hostname"
114
+ host: "bücher.example.com"
115
+ port: ~
116
+ -
117
+ type: "hostname"
118
+ host: "umläut.example.com"
119
+ port: ~
120
+ auth: ~
121
+ options: ~
@@ -0,0 +1,30 @@
1
+ tests:
2
+ -
3
+ description: "Option names are normalized to lowercase"
4
+ uri: "mongodb://alice:secret@example.com/admin?AUTHMechanism=MONGODB-CR"
5
+ valid: true
6
+ warning: false
7
+ hosts:
8
+ -
9
+ type: "hostname"
10
+ host: "example.com"
11
+ port: ~
12
+ auth:
13
+ username: "alice"
14
+ password: "secret"
15
+ db: "admin"
16
+ options:
17
+ authmechanism: "MONGODB-CR"
18
+ -
19
+ description: "Option key and value (escaped null bytes)"
20
+ uri: "mongodb://example.com/?replicaSet=my%00rs"
21
+ valid: true
22
+ warning: false
23
+ hosts:
24
+ -
25
+ type: "hostname"
26
+ host: "example.com"
27
+ port: ~
28
+ auth: ~
29
+ options:
30
+ replicaset: "my\0rs"
@@ -0,0 +1,197 @@
1
+ tests:
2
+ -
3
+ description: "Unix domain socket (absolute path with trailing slash)"
4
+ uri: "mongodb://%2Ftmp%2Fmongodb-27017.sock/"
5
+ valid: true
6
+ warning: false
7
+ hosts:
8
+ -
9
+ type: "unix"
10
+ host: "/tmp/mongodb-27017.sock"
11
+ port: ~
12
+ auth: ~
13
+ options: ~
14
+ -
15
+ description: "Unix domain socket (absolute path without trailing slash)"
16
+ uri: "mongodb://%2Ftmp%2Fmongodb-27017.sock"
17
+ valid: true
18
+ warning: false
19
+ hosts:
20
+ -
21
+ type: "unix"
22
+ host: "/tmp/mongodb-27017.sock"
23
+ port: ~
24
+ auth: ~
25
+ options: ~
26
+ -
27
+ description: "Unix domain socket (absolute path with spaces in path)"
28
+ uri: "mongodb://%2Ftmp%2F %2Fmongodb-27017.sock"
29
+ valid: true
30
+ warning: false
31
+ hosts:
32
+ -
33
+ type: "unix"
34
+ host: "/tmp/ /mongodb-27017.sock"
35
+ port: ~
36
+ auth: ~
37
+ options: ~
38
+ -
39
+ description: "Multiple Unix domain sockets (absolute paths)"
40
+ uri: "mongodb://%2Ftmp%2Fmongodb-27017.sock,%2Ftmp%2Fmongodb-27018.sock"
41
+ valid: true
42
+ warning: false
43
+ hosts:
44
+ -
45
+ type: "unix"
46
+ host: "/tmp/mongodb-27017.sock"
47
+ port: ~
48
+ -
49
+ type: "unix"
50
+ host: "/tmp/mongodb-27018.sock"
51
+ port: ~
52
+ auth: ~
53
+ options: ~
54
+ -
55
+ description: "Multiple hosts (absolute path and ipv4)"
56
+ uri: "mongodb://127.0.0.1:27017,%2Ftmp%2Fmongodb-27017.sock"
57
+ valid: true
58
+ warning: false
59
+ hosts:
60
+ -
61
+ type: "ipv4"
62
+ host: "127.0.0.1"
63
+ port: 27017
64
+ -
65
+ type: "unix"
66
+ host: "/tmp/mongodb-27017.sock"
67
+ port: ~
68
+ auth: ~
69
+ options: ~
70
+ -
71
+ description: "Multiple hosts (absolute path and hostname resembling relative path)"
72
+ uri: "mongodb://mongodb-27017.sock,%2Ftmp%2Fmongodb-27018.sock"
73
+ valid: true
74
+ warning: false
75
+ hosts:
76
+ -
77
+ type: "hostname"
78
+ host: "mongodb-27017.sock"
79
+ port: ~
80
+ -
81
+ type: "unix"
82
+ host: "/tmp/mongodb-27018.sock"
83
+ port: ~
84
+ auth: ~
85
+ options: ~
86
+ -
87
+ description: "Unix domain socket with auth database (absolute path)"
88
+ uri: "mongodb://alice:foo@%2Ftmp%2Fmongodb-27017.sock/admin"
89
+ valid: true
90
+ warning: false
91
+ hosts:
92
+ -
93
+ type: "unix"
94
+ host: "/tmp/mongodb-27017.sock"
95
+ port: ~
96
+ auth:
97
+ username: "alice"
98
+ password: "foo"
99
+ db: "admin"
100
+ options: ~
101
+ -
102
+ description: "Unix domain socket with path resembling socket file (absolute path with trailing slash)"
103
+ uri: "mongodb://%2Ftmp%2Fpath.to.sock%2Fmongodb-27017.sock/"
104
+ valid: true
105
+ warning: false
106
+ hosts:
107
+ -
108
+ type: "unix"
109
+ host: "/tmp/path.to.sock/mongodb-27017.sock"
110
+ port: ~
111
+ auth: ~
112
+ options: ~
113
+ -
114
+ description: "Unix domain socket with path resembling socket file (absolute path without trailing slash)"
115
+ uri: "mongodb://%2Ftmp%2Fpath.to.sock%2Fmongodb-27017.sock"
116
+ valid: true
117
+ warning: false
118
+ hosts:
119
+ -
120
+ type: "unix"
121
+ host: "/tmp/path.to.sock/mongodb-27017.sock"
122
+ port: ~
123
+ auth: ~
124
+ options: ~
125
+ -
126
+ description: "Unix domain socket with path resembling socket file and auth (absolute path)"
127
+ uri: "mongodb://bob:bar@%2Ftmp%2Fpath.to.sock%2Fmongodb-27017.sock/admin"
128
+ valid: true
129
+ warning: false
130
+ hosts:
131
+ -
132
+ type: "unix"
133
+ host: "/tmp/path.to.sock/mongodb-27017.sock"
134
+ port: ~
135
+ auth:
136
+ username: "bob"
137
+ password: "bar"
138
+ db: "admin"
139
+ options: ~
140
+ -
141
+ description: "Multiple Unix domain sockets and auth DB resembling a socket (absolute path)"
142
+ uri: "mongodb://%2Ftmp%2Fmongodb-27017.sock,%2Ftmp%2Fmongodb-27018.sock/admin.sock"
143
+ valid: true
144
+ warning: false
145
+ hosts:
146
+ -
147
+ type: "unix"
148
+ host: "/tmp/mongodb-27017.sock"
149
+ port: ~
150
+ -
151
+ type: "unix"
152
+ host: "/tmp/mongodb-27018.sock"
153
+ port: ~
154
+ auth:
155
+ username: ~
156
+ password: ~
157
+ db: "admin.sock"
158
+ options: ~
159
+ -
160
+ description: "Multiple Unix domain sockets with auth DB resembling a path (absolute path)"
161
+ uri: "mongodb://%2Ftmp%2Fmongodb-27017.sock,%2Ftmp%2Fmongodb-27018.sock/admin.shoe"
162
+ valid: true
163
+ warning: false
164
+ hosts:
165
+ -
166
+ type: "unix"
167
+ host: "/tmp/mongodb-27017.sock"
168
+ port: ~
169
+ -
170
+ type: "unix"
171
+ host: "/tmp/mongodb-27018.sock"
172
+ port: ~
173
+ auth:
174
+ username: ~
175
+ password: ~
176
+ db: "admin.shoe"
177
+ options: ~
178
+ -
179
+ description: "Multiple Unix domain sockets with auth and query string (absolute path)"
180
+ uri: "mongodb://bob:bar@%2Ftmp%2Fmongodb-27017.sock,%2Ftmp%2Fmongodb-27018.sock/admin?w=1"
181
+ valid: true
182
+ warning: false
183
+ hosts:
184
+ -
185
+ type: "unix"
186
+ host: "/tmp/mongodb-27017.sock"
187
+ port: ~
188
+ -
189
+ type: "unix"
190
+ host: "/tmp/mongodb-27018.sock"
191
+ port: ~
192
+ auth:
193
+ username: "bob"
194
+ password: "bar"
195
+ db: "admin"
196
+ options:
197
+ w: 1