mongo 1.12.5 → 2.0.0.beta

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 (437) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +0 -0
  3. data.tar.gz.sig +0 -0
  4. data/CONTRIBUTING.md +64 -0
  5. data/LICENSE +1 -1
  6. data/README.md +23 -125
  7. data/Rakefile +26 -21
  8. data/bin/mongo_console +6 -38
  9. data/lib/mongo.rb +23 -82
  10. data/lib/mongo/address.rb +111 -0
  11. data/lib/mongo/address/ipv4.rb +85 -0
  12. data/lib/mongo/address/ipv6.rb +85 -0
  13. data/lib/mongo/address/unix.rb +76 -0
  14. data/lib/mongo/auth.rb +108 -0
  15. data/lib/mongo/auth/cr.rb +44 -0
  16. data/lib/mongo/auth/cr/conversation.rb +119 -0
  17. data/lib/mongo/auth/executable.rb +52 -0
  18. data/lib/mongo/auth/ldap.rb +48 -0
  19. data/lib/mongo/auth/ldap/conversation.rb +92 -0
  20. data/lib/mongo/auth/roles.rb +104 -0
  21. data/lib/mongo/auth/scram.rb +53 -0
  22. data/lib/mongo/auth/scram/conversation.rb +450 -0
  23. data/lib/mongo/auth/user.rb +159 -0
  24. data/lib/mongo/auth/user/view.rb +102 -0
  25. data/lib/mongo/auth/x509.rb +48 -0
  26. data/lib/mongo/auth/x509/conversation.rb +92 -0
  27. data/lib/mongo/{gridfs.rb → bulk.rb} +2 -5
  28. data/lib/mongo/bulk/bulk_write.rb +307 -0
  29. data/lib/mongo/client.rb +233 -0
  30. data/lib/mongo/cluster.rb +203 -0
  31. data/lib/mongo/cluster/topology.rb +60 -0
  32. data/lib/mongo/cluster/topology/replica_set.rb +160 -0
  33. data/lib/mongo/cluster/topology/sharded.rb +132 -0
  34. data/lib/mongo/cluster/topology/standalone.rb +132 -0
  35. data/lib/mongo/cluster/topology/unknown.rb +155 -0
  36. data/lib/mongo/collection.rb +130 -1101
  37. data/lib/mongo/collection/view.rb +169 -0
  38. data/lib/mongo/collection/view/aggregation.rb +108 -0
  39. data/lib/mongo/collection/view/explainable.rb +49 -0
  40. data/lib/mongo/collection/view/immutable.rb +43 -0
  41. data/lib/mongo/collection/view/iterable.rb +48 -0
  42. data/lib/mongo/collection/view/map_reduce.rb +191 -0
  43. data/lib/mongo/collection/view/readable.rb +363 -0
  44. data/lib/mongo/collection/view/writable.rb +169 -0
  45. data/lib/mongo/cursor.rb +79 -680
  46. data/lib/mongo/database.rb +224 -0
  47. data/lib/mongo/database/view.rb +101 -0
  48. data/lib/mongo/error.rb +81 -0
  49. data/lib/mongo/error/bulk_write_failure.rb +41 -0
  50. data/lib/mongo/{utils/thread_local_variable_manager.rb → error/empty_batch.rb} +22 -8
  51. data/{test/functional/db_connection_test.rb → lib/mongo/error/invalid_bulk_operation.rb} +19 -8
  52. data/lib/mongo/error/invalid_collection_name.rb +39 -0
  53. data/lib/mongo/error/invalid_database_name.rb +39 -0
  54. data/{test/replica_set/ssl_test.rb → lib/mongo/error/invalid_document.rb} +21 -14
  55. data/lib/mongo/error/invalid_file.rb +38 -0
  56. data/lib/mongo/error/invalid_nonce.rb +46 -0
  57. data/lib/mongo/error/invalid_replacement_document.rb +39 -0
  58. data/lib/mongo/error/invalid_signature.rb +47 -0
  59. data/{test/functional/ssl_test.rb → lib/mongo/error/invalid_update_document.rb} +22 -12
  60. data/lib/mongo/error/max_bson_size.rb +40 -0
  61. data/lib/mongo/error/max_message_size.rb +42 -0
  62. data/lib/mongo/{utils.rb → error/need_primary_server.rb} +10 -6
  63. data/lib/mongo/{connection.rb → error/operation_failure.rb} +10 -6
  64. data/lib/mongo/error/parser.rb +77 -0
  65. data/lib/mongo/{connection/socket.rb → error/socket_error.rb} +10 -5
  66. data/lib/mongo/error/socket_timeout_error.rb +23 -0
  67. data/lib/mongo/error/unsupported_features.rb +43 -0
  68. data/lib/mongo/event.rb +40 -0
  69. data/lib/mongo/event/listeners.rb +63 -0
  70. data/lib/mongo/event/primary_elected.rb +53 -0
  71. data/lib/mongo/event/publisher.rb +42 -0
  72. data/lib/mongo/event/server_added.rb +53 -0
  73. data/lib/mongo/event/server_removed.rb +53 -0
  74. data/lib/mongo/event/subscriber.rb +41 -0
  75. data/lib/mongo/grid.rb +16 -0
  76. data/lib/mongo/grid/file.rb +94 -0
  77. data/lib/mongo/grid/file/chunk.rb +184 -0
  78. data/lib/mongo/grid/file/metadata.rb +223 -0
  79. data/lib/mongo/grid/fs.rb +149 -0
  80. data/lib/mongo/index.rb +64 -0
  81. data/lib/mongo/index/view.rb +205 -0
  82. data/lib/mongo/loggable.rb +126 -0
  83. data/lib/mongo/logger.rb +132 -0
  84. data/lib/mongo/operation.rb +26 -0
  85. data/lib/mongo/operation/aggregate.rb +100 -0
  86. data/lib/mongo/operation/aggregate/result.rb +84 -0
  87. data/lib/mongo/operation/batchable.rb +103 -0
  88. data/lib/mongo/operation/bulk_delete/result.rb +197 -0
  89. data/lib/mongo/operation/bulk_insert/result.rb +195 -0
  90. data/lib/mongo/operation/bulk_update/result.rb +295 -0
  91. data/lib/mongo/operation/command.rb +62 -0
  92. data/lib/mongo/operation/executable.rb +105 -0
  93. data/lib/mongo/operation/kill_cursors.rb +39 -0
  94. data/lib/mongo/operation/limited.rb +37 -0
  95. data/lib/mongo/operation/list_collections/result.rb +116 -0
  96. data/lib/mongo/operation/list_indexes/result.rb +118 -0
  97. data/lib/mongo/operation/map_reduce.rb +96 -0
  98. data/lib/mongo/operation/map_reduce/result.rb +122 -0
  99. data/lib/mongo/{functional.rb → operation/read.rb} +7 -7
  100. data/lib/mongo/operation/read/collections_info.rb +67 -0
  101. data/lib/mongo/operation/read/get_more.rb +71 -0
  102. data/lib/mongo/operation/read/indexes.rb +68 -0
  103. data/lib/mongo/operation/read/list_collections.rb +75 -0
  104. data/lib/mongo/operation/read/list_indexes.rb +77 -0
  105. data/lib/mongo/operation/read/query.rb +71 -0
  106. data/lib/mongo/operation/read_preferrable.rb +34 -0
  107. data/lib/mongo/operation/result.rb +259 -0
  108. data/lib/mongo/operation/specifiable.rb +380 -0
  109. data/lib/mongo/operation/write.rb +25 -0
  110. data/lib/mongo/operation/write/bulk_delete.rb +158 -0
  111. data/lib/mongo/operation/write/bulk_insert.rb +160 -0
  112. data/lib/mongo/operation/write/bulk_update.rb +167 -0
  113. data/lib/mongo/{connection/socket/socket_util.rb → operation/write/command.rb} +9 -24
  114. data/lib/mongo/operation/write/command/create_user.rb +43 -0
  115. data/lib/mongo/operation/write/command/delete.rb +56 -0
  116. data/lib/mongo/operation/write/command/drop_index.rb +51 -0
  117. data/lib/mongo/operation/write/command/ensure_index.rb +55 -0
  118. data/lib/mongo/operation/write/command/insert.rb +55 -0
  119. data/lib/mongo/operation/write/command/remove_user.rb +42 -0
  120. data/lib/mongo/operation/write/command/update.rb +60 -0
  121. data/lib/mongo/operation/write/command/writable.rb +61 -0
  122. data/lib/mongo/operation/write/create_index.rb +84 -0
  123. data/lib/mongo/operation/write/create_user.rb +75 -0
  124. data/lib/mongo/operation/write/delete.rb +91 -0
  125. data/lib/mongo/operation/write/drop_index.rb +62 -0
  126. data/lib/mongo/operation/write/insert.rb +88 -0
  127. data/lib/mongo/operation/write/remove_user.rb +70 -0
  128. data/lib/mongo/operation/write/update.rb +98 -0
  129. data/lib/mongo/protocol.rb +15 -0
  130. data/lib/mongo/protocol/bit_vector.rb +61 -0
  131. data/lib/mongo/protocol/delete.rb +94 -0
  132. data/lib/mongo/protocol/get_more.rb +99 -0
  133. data/lib/mongo/protocol/insert.rb +99 -0
  134. data/lib/mongo/protocol/kill_cursors.rb +74 -0
  135. data/lib/mongo/protocol/message.rb +252 -0
  136. data/lib/mongo/protocol/query.rb +147 -0
  137. data/lib/mongo/protocol/reply.rb +72 -0
  138. data/lib/mongo/protocol/serializers.rb +180 -0
  139. data/lib/mongo/protocol/update.rb +111 -0
  140. data/lib/mongo/server.rb +163 -0
  141. data/lib/mongo/server/connectable.rb +99 -0
  142. data/lib/mongo/server/connection.rb +133 -0
  143. data/lib/mongo/server/connection_pool.rb +141 -0
  144. data/lib/mongo/server/connection_pool/queue.rb +182 -0
  145. data/lib/mongo/server/context.rb +66 -0
  146. data/lib/mongo/server/description.rb +450 -0
  147. data/lib/mongo/server/description/features.rb +85 -0
  148. data/lib/mongo/server/description/inspector.rb +79 -0
  149. data/lib/mongo/server/description/inspector/primary_elected.rb +58 -0
  150. data/lib/mongo/server/description/inspector/server_added.rb +59 -0
  151. data/lib/mongo/server/description/inspector/server_removed.rb +59 -0
  152. data/lib/mongo/server/monitor.rb +160 -0
  153. data/lib/mongo/server/monitor/connection.rb +88 -0
  154. data/lib/mongo/server_selector.rb +81 -0
  155. data/lib/mongo/server_selector/nearest.rb +94 -0
  156. data/lib/mongo/server_selector/primary.rb +88 -0
  157. data/lib/mongo/server_selector/primary_preferred.rb +94 -0
  158. data/lib/mongo/server_selector/secondary.rb +91 -0
  159. data/lib/mongo/server_selector/secondary_preferred.rb +96 -0
  160. data/lib/mongo/server_selector/selectable.rb +209 -0
  161. data/lib/mongo/socket.rb +179 -0
  162. data/lib/mongo/socket/ssl.rb +108 -0
  163. data/lib/mongo/socket/tcp.rb +69 -0
  164. data/lib/mongo/socket/unix.rb +66 -0
  165. data/lib/mongo/uri.rb +504 -0
  166. data/lib/mongo/version.rb +21 -0
  167. data/lib/mongo/write_concern.rb +99 -0
  168. data/lib/mongo/write_concern/acknowledged.rb +38 -0
  169. data/lib/mongo/write_concern/normalizable.rb +73 -0
  170. data/lib/mongo/write_concern/unacknowledged.rb +43 -0
  171. data/mongo.gemspec +17 -14
  172. data/spec/mongo/address/ipv4_spec.rb +74 -0
  173. data/spec/mongo/address/ipv6_spec.rb +74 -0
  174. data/spec/mongo/address/unix_spec.rb +30 -0
  175. data/spec/mongo/address_spec.rb +206 -0
  176. data/spec/mongo/auth/cr_spec.rb +59 -0
  177. data/spec/mongo/auth/ldap_spec.rb +40 -0
  178. data/spec/mongo/auth/scram/conversation_spec.rb +197 -0
  179. data/spec/mongo/auth/scram_spec.rb +55 -0
  180. data/spec/mongo/auth/user/view_spec.rb +76 -0
  181. data/spec/mongo/auth/user_spec.rb +190 -0
  182. data/spec/mongo/auth/x509_spec.rb +40 -0
  183. data/spec/mongo/auth_spec.rb +65 -0
  184. data/spec/mongo/bulk/bulk_write_spec.rb +175 -0
  185. data/spec/mongo/client_spec.rb +564 -0
  186. data/spec/mongo/cluster/topology/replica_set_spec.rb +101 -0
  187. data/spec/mongo/cluster/topology/sharded_spec.rb +74 -0
  188. data/spec/mongo/cluster/topology/standalone_spec.rb +79 -0
  189. data/spec/mongo/cluster/topology_spec.rb +65 -0
  190. data/spec/mongo/cluster_spec.rb +129 -0
  191. data/spec/mongo/collection/view/aggregation_spec.rb +135 -0
  192. data/spec/mongo/collection/view/explainable_spec.rb +32 -0
  193. data/spec/mongo/collection/view/map_reduce_spec.rb +242 -0
  194. data/spec/mongo/collection/view/readable_spec.rb +603 -0
  195. data/spec/mongo/collection/view/writable_spec.rb +504 -0
  196. data/spec/mongo/collection/view_spec.rb +521 -0
  197. data/spec/mongo/collection_spec.rb +362 -0
  198. data/spec/mongo/cursor_spec.rb +295 -0
  199. data/spec/mongo/database_spec.rb +306 -0
  200. data/spec/mongo/error/parser_spec.rb +119 -0
  201. data/spec/mongo/event/publisher_spec.rb +50 -0
  202. data/spec/mongo/event/subscriber_spec.rb +34 -0
  203. data/spec/mongo/grid/file/chunk_spec.rb +226 -0
  204. data/spec/mongo/grid/file/metadata_spec.rb +69 -0
  205. data/spec/mongo/grid/file_spec.rb +138 -0
  206. data/spec/mongo/grid/fs_spec.rb +129 -0
  207. data/spec/mongo/index/view_spec.rb +226 -0
  208. data/spec/mongo/loggable_spec.rb +62 -0
  209. data/spec/mongo/logger_spec.rb +97 -0
  210. data/spec/mongo/operation/aggregate/result_spec.rb +80 -0
  211. data/spec/mongo/operation/aggregate_spec.rb +135 -0
  212. data/spec/mongo/operation/command_spec.rb +106 -0
  213. data/spec/mongo/operation/kill_cursors_spec.rb +66 -0
  214. data/spec/mongo/operation/limited_spec.rb +50 -0
  215. data/spec/mongo/operation/map_reduce_spec.rb +143 -0
  216. data/spec/mongo/operation/read/collections_info_spec.rb +40 -0
  217. data/spec/mongo/operation/read/get_more_spec.rb +81 -0
  218. data/spec/mongo/operation/read/indexes_spec.rb +31 -0
  219. data/spec/mongo/operation/read/query_spec.rb +84 -0
  220. data/spec/mongo/operation/result_spec.rb +275 -0
  221. data/spec/mongo/operation/specifiable_spec.rb +53 -0
  222. data/spec/mongo/operation/write/bulk_delete_spec.rb +473 -0
  223. data/spec/mongo/operation/write/bulk_insert_spec.rb +466 -0
  224. data/spec/mongo/operation/write/bulk_update_spec.rb +524 -0
  225. data/spec/mongo/operation/write/command/delete_spec.rb +116 -0
  226. data/spec/mongo/operation/write/command/insert_spec.rb +117 -0
  227. data/spec/mongo/operation/write/command/update_spec.rb +123 -0
  228. data/spec/mongo/operation/write/create_user_spec.rb +44 -0
  229. data/spec/mongo/operation/write/delete_spec.rb +178 -0
  230. data/spec/mongo/operation/write/drop_index_spec.rb +51 -0
  231. data/spec/mongo/operation/write/ensure_index_spec.rb +81 -0
  232. data/spec/mongo/operation/write/insert_spec.rb +231 -0
  233. data/spec/mongo/operation/write/remove_user_spec.rb +46 -0
  234. data/spec/mongo/operation/write/response_spec.rb +85 -0
  235. data/spec/mongo/operation/write/update_spec.rb +177 -0
  236. data/spec/mongo/protocol/delete_spec.rb +167 -0
  237. data/spec/mongo/protocol/get_more_spec.rb +146 -0
  238. data/spec/mongo/protocol/insert_spec.rb +161 -0
  239. data/spec/mongo/protocol/kill_cursors_spec.rb +101 -0
  240. data/spec/mongo/protocol/query_spec.rb +285 -0
  241. data/spec/mongo/protocol/reply_spec.rb +157 -0
  242. data/spec/mongo/protocol/update_spec.rb +186 -0
  243. data/spec/mongo/server/connection_pool/queue_spec.rb +170 -0
  244. data/spec/mongo/server/connection_pool_spec.rb +120 -0
  245. data/spec/mongo/server/connection_spec.rb +289 -0
  246. data/spec/mongo/server/description/features_spec.rb +138 -0
  247. data/spec/mongo/server/description/inspector/primary_elected_spec.rb +94 -0
  248. data/spec/mongo/server/description/inspector/server_added_spec.rb +92 -0
  249. data/spec/mongo/server/description/inspector/server_removed_spec.rb +95 -0
  250. data/spec/mongo/server/description_spec.rb +510 -0
  251. data/spec/mongo/server/monitor_spec.rb +130 -0
  252. data/spec/mongo/server_discovery_and_monitoring_spec.rb +103 -0
  253. data/spec/mongo/server_selection_rtt_spec.rb +104 -0
  254. data/spec/mongo/server_selection_spec.rb +89 -0
  255. data/spec/mongo/server_selector/nearest_spec.rb +250 -0
  256. data/spec/mongo/server_selector/primary_preferred_spec.rb +290 -0
  257. data/spec/mongo/server_selector/primary_spec.rb +114 -0
  258. data/spec/mongo/server_selector/secondary_preferred_spec.rb +252 -0
  259. data/spec/mongo/server_selector/secondary_spec.rb +196 -0
  260. data/spec/mongo/server_selector_spec.rb +101 -0
  261. data/spec/mongo/server_spec.rb +131 -0
  262. data/spec/mongo/uri_spec.rb +517 -0
  263. data/spec/mongo/write_concern/acknowledged_spec.rb +44 -0
  264. data/spec/mongo/write_concern/unacknowledged_spec.rb +15 -0
  265. data/spec/mongo_orchestration_spec.rb +70 -0
  266. data/spec/spec_helper.rb +148 -0
  267. data/spec/support/authorization.rb +245 -0
  268. data/spec/support/helpers.rb +140 -0
  269. data/spec/support/matchers.rb +37 -0
  270. data/spec/support/mongo_orchestration.rb +61 -0
  271. data/spec/support/mongo_orchestration/requestable.rb +109 -0
  272. data/spec/support/mongo_orchestration/standalone.rb +57 -0
  273. data/spec/support/sdam/rs/discover_arbiters.yml +41 -0
  274. data/spec/support/sdam/rs/discover_passives.yml +41 -0
  275. data/spec/support/sdam/rs/discover_primary.yml +40 -0
  276. data/spec/support/sdam/rs/discover_secondary.yml +41 -0
  277. data/spec/support/sdam/rs/discovery.yml +195 -0
  278. data/spec/support/sdam/rs/ghost_discovered.yml +39 -0
  279. data/spec/support/sdam/rs/hosts_differ_from_seeds.yml +34 -0
  280. data/spec/support/sdam/rs/member_reconfig.yml +68 -0
  281. data/spec/support/sdam/rs/member_standalone.yml +60 -0
  282. data/spec/support/sdam/rs/new_primary.yml +74 -0
  283. data/spec/support/sdam/rs/new_primary_wrong_set_name.yml +71 -0
  284. data/spec/support/sdam/rs/non_rs_member.yml +31 -0
  285. data/spec/support/sdam/rs/normalize_case.yml +49 -0
  286. data/spec/support/sdam/rs/primary_becomes_standalone.yml +52 -0
  287. data/spec/support/sdam/rs/primary_changes_set_name.yml +57 -0
  288. data/spec/support/sdam/rs/primary_disconnect.yml +56 -0
  289. data/spec/support/sdam/rs/primary_wrong_set_name.yml +27 -0
  290. data/spec/support/sdam/rs/response_from_removed.yml +63 -0
  291. data/spec/support/sdam/rs/rsother_discovered.yml +41 -0
  292. data/spec/support/sdam/rs/sec_not_auth.yml +49 -0
  293. data/spec/support/sdam/rs/secondary_wrong_set_name.yml +28 -0
  294. data/spec/support/sdam/rs/secondary_wrong_set_name_with_primary.yml +69 -0
  295. data/spec/support/sdam/rs/unexpected_mongos.yml +26 -0
  296. data/spec/support/sdam/rs/wrong_set_name.yml +35 -0
  297. data/spec/support/sdam/sharded/multiple_mongoses.yml +46 -0
  298. data/spec/support/sdam/sharded/non_mongos_removed.yml +41 -0
  299. data/spec/support/sdam/sharded/normalize_uri_case.yml +32 -0
  300. data/spec/support/sdam/single/direct_connection_external_ip.yml +34 -0
  301. data/spec/support/sdam/single/direct_connection_mongos.yml +33 -0
  302. data/spec/support/sdam/single/direct_connection_rsarbiter.yml +35 -0
  303. data/spec/support/sdam/single/direct_connection_rsprimary.yml +34 -0
  304. data/spec/support/sdam/single/direct_connection_rssecondary.yml +35 -0
  305. data/spec/support/sdam/single/direct_connection_slave.yml +32 -0
  306. data/spec/support/sdam/single/direct_connection_standalone.yml +32 -0
  307. data/spec/support/sdam/single/not_ok_response.yml +39 -0
  308. data/spec/support/sdam/single/standalone_removed.yml +32 -0
  309. data/spec/support/sdam/single/unavailable_seed.yml +28 -0
  310. data/spec/support/server_discovery_and_monitoring.rb +167 -0
  311. data/spec/support/server_selection.rb +140 -0
  312. data/spec/support/server_selection/rtt/first_value.yml +4 -0
  313. data/spec/support/server_selection/rtt/first_value_zero.yml +4 -0
  314. data/spec/support/server_selection/rtt/value_test_1.yml +4 -0
  315. data/spec/support/server_selection/rtt/value_test_2.yml +4 -0
  316. data/spec/support/server_selection/rtt/value_test_3.yml +4 -0
  317. data/spec/support/server_selection/rtt/value_test_4.yml +4 -0
  318. data/spec/support/server_selection/rtt/value_test_5.yml +4 -0
  319. data/spec/support/server_selection/selection/ReplicaSetNoPrimary/read/Nearest.yml +32 -0
  320. data/spec/support/server_selection/selection/ReplicaSetNoPrimary/read/Nearest_non_matching.yml +27 -0
  321. data/spec/support/server_selection/selection/ReplicaSetNoPrimary/read/Primary.yml +23 -0
  322. data/spec/support/server_selection/selection/ReplicaSetNoPrimary/read/PrimaryPreferred.yml +32 -0
  323. data/spec/support/server_selection/selection/ReplicaSetNoPrimary/read/PrimaryPreferred_non_matching.yml +27 -0
  324. data/spec/support/server_selection/selection/ReplicaSetNoPrimary/read/Secondary.yml +32 -0
  325. data/spec/support/server_selection/selection/ReplicaSetNoPrimary/read/SecondaryPreferred.yml +32 -0
  326. data/spec/support/server_selection/selection/ReplicaSetNoPrimary/read/SecondaryPreferred_non_matching.yml +27 -0
  327. data/spec/support/server_selection/selection/ReplicaSetNoPrimary/read/Secondary_non_matching.yml +27 -0
  328. data/spec/support/server_selection/selection/ReplicaSetWithPrimary/read/Nearest.yml +41 -0
  329. data/spec/support/server_selection/selection/ReplicaSetWithPrimary/read/Nearest_non_matching.yml +34 -0
  330. data/spec/support/server_selection/selection/ReplicaSetWithPrimary/read/Primary.yml +33 -0
  331. data/spec/support/server_selection/selection/ReplicaSetWithPrimary/read/PrimaryPreferred.yml +39 -0
  332. data/spec/support/server_selection/selection/ReplicaSetWithPrimary/read/PrimaryPreferred_non_matching.yml +36 -0
  333. data/spec/support/server_selection/selection/Sharded/read/SecondaryPreferred.yml +32 -0
  334. data/spec/support/server_selection/selection/Single/read/SecondaryPreferred.yml +23 -0
  335. data/spec/support/server_selection/selection/Unknown/read/SecondaryPreferred.yml +13 -0
  336. data/spec/support/server_selection_rtt.rb +41 -0
  337. data/spec/support/shared/bulk_write.rb +498 -0
  338. data/spec/support/shared/cursor.rb +38 -0
  339. data/spec/support/shared/operation.rb +77 -0
  340. data/spec/support/shared/protocol.rb +31 -0
  341. data/spec/support/shared/server_selector.rb +111 -0
  342. data/spec/support/shared/socket.rb +82 -0
  343. data/spec/support/travis.rb +14 -0
  344. metadata +523 -189
  345. metadata.gz.sig +0 -0
  346. data/VERSION +0 -1
  347. data/lib/mongo/bulk_write_collection_view.rb +0 -387
  348. data/lib/mongo/collection_writer.rb +0 -364
  349. data/lib/mongo/connection/node.rb +0 -249
  350. data/lib/mongo/connection/pool.rb +0 -340
  351. data/lib/mongo/connection/pool_manager.rb +0 -320
  352. data/lib/mongo/connection/sharding_pool_manager.rb +0 -67
  353. data/lib/mongo/connection/socket/ssl_socket.rb +0 -95
  354. data/lib/mongo/connection/socket/tcp_socket.rb +0 -87
  355. data/lib/mongo/connection/socket/unix_socket.rb +0 -39
  356. data/lib/mongo/db.rb +0 -808
  357. data/lib/mongo/exception.rb +0 -145
  358. data/lib/mongo/functional/authentication.rb +0 -455
  359. data/lib/mongo/functional/logging.rb +0 -85
  360. data/lib/mongo/functional/read_preference.rb +0 -183
  361. data/lib/mongo/functional/scram.rb +0 -556
  362. data/lib/mongo/functional/uri_parser.rb +0 -409
  363. data/lib/mongo/functional/write_concern.rb +0 -66
  364. data/lib/mongo/gridfs/grid.rb +0 -112
  365. data/lib/mongo/gridfs/grid_ext.rb +0 -53
  366. data/lib/mongo/gridfs/grid_file_system.rb +0 -163
  367. data/lib/mongo/gridfs/grid_io.rb +0 -484
  368. data/lib/mongo/legacy.rb +0 -140
  369. data/lib/mongo/mongo_client.rb +0 -697
  370. data/lib/mongo/mongo_replica_set_client.rb +0 -535
  371. data/lib/mongo/mongo_sharded_client.rb +0 -159
  372. data/lib/mongo/networking.rb +0 -372
  373. data/lib/mongo/utils/conversions.rb +0 -110
  374. data/lib/mongo/utils/core_ext.rb +0 -70
  375. data/lib/mongo/utils/server_version.rb +0 -69
  376. data/lib/mongo/utils/support.rb +0 -80
  377. data/test/functional/authentication_test.rb +0 -39
  378. data/test/functional/bulk_api_stress_test.rb +0 -133
  379. data/test/functional/bulk_write_collection_view_test.rb +0 -1198
  380. data/test/functional/client_test.rb +0 -627
  381. data/test/functional/collection_test.rb +0 -2175
  382. data/test/functional/collection_writer_test.rb +0 -83
  383. data/test/functional/conversions_test.rb +0 -163
  384. data/test/functional/cursor_fail_test.rb +0 -57
  385. data/test/functional/cursor_message_test.rb +0 -56
  386. data/test/functional/cursor_test.rb +0 -683
  387. data/test/functional/db_api_test.rb +0 -835
  388. data/test/functional/db_test.rb +0 -348
  389. data/test/functional/grid_file_system_test.rb +0 -285
  390. data/test/functional/grid_io_test.rb +0 -252
  391. data/test/functional/grid_test.rb +0 -273
  392. data/test/functional/pool_test.rb +0 -136
  393. data/test/functional/safe_test.rb +0 -98
  394. data/test/functional/support_test.rb +0 -62
  395. data/test/functional/timeout_test.rb +0 -60
  396. data/test/functional/uri_test.rb +0 -446
  397. data/test/functional/write_concern_test.rb +0 -118
  398. data/test/helpers/general.rb +0 -50
  399. data/test/helpers/test_unit.rb +0 -476
  400. data/test/replica_set/authentication_test.rb +0 -37
  401. data/test/replica_set/basic_test.rb +0 -189
  402. data/test/replica_set/client_test.rb +0 -393
  403. data/test/replica_set/connection_test.rb +0 -138
  404. data/test/replica_set/count_test.rb +0 -66
  405. data/test/replica_set/cursor_test.rb +0 -220
  406. data/test/replica_set/insert_test.rb +0 -157
  407. data/test/replica_set/max_values_test.rb +0 -151
  408. data/test/replica_set/pinning_test.rb +0 -105
  409. data/test/replica_set/query_test.rb +0 -73
  410. data/test/replica_set/read_preference_test.rb +0 -219
  411. data/test/replica_set/refresh_test.rb +0 -211
  412. data/test/replica_set/replication_ack_test.rb +0 -95
  413. data/test/sharded_cluster/basic_test.rb +0 -203
  414. data/test/shared/authentication/basic_auth_shared.rb +0 -260
  415. data/test/shared/authentication/bulk_api_auth_shared.rb +0 -249
  416. data/test/shared/authentication/gssapi_shared.rb +0 -176
  417. data/test/shared/authentication/sasl_plain_shared.rb +0 -96
  418. data/test/shared/authentication/scram_shared.rb +0 -92
  419. data/test/shared/ssl_shared.rb +0 -235
  420. data/test/test_helper.rb +0 -61
  421. data/test/threading/basic_test.rb +0 -120
  422. data/test/tools/mongo_config.rb +0 -708
  423. data/test/tools/mongo_config_test.rb +0 -160
  424. data/test/unit/client_test.rb +0 -381
  425. data/test/unit/collection_test.rb +0 -166
  426. data/test/unit/connection_test.rb +0 -335
  427. data/test/unit/cursor_test.rb +0 -307
  428. data/test/unit/db_test.rb +0 -136
  429. data/test/unit/grid_test.rb +0 -76
  430. data/test/unit/mongo_sharded_client_test.rb +0 -48
  431. data/test/unit/node_test.rb +0 -93
  432. data/test/unit/pool_manager_test.rb +0 -111
  433. data/test/unit/read_pref_test.rb +0 -406
  434. data/test/unit/read_test.rb +0 -159
  435. data/test/unit/safe_test.rb +0 -158
  436. data/test/unit/sharding_pool_manager_test.rb +0 -84
  437. data/test/unit/write_concern_test.rb +0 -175
@@ -1,166 +0,0 @@
1
- # Copyright (C) 2009-2013 MongoDB, Inc.
2
- #
3
- # Licensed under the Apache License, Version 2.0 (the "License");
4
- # you may not use this file except in compliance with the License.
5
- # You may obtain a copy of the License at
6
- #
7
- # http://www.apache.org/licenses/LICENSE-2.0
8
- #
9
- # Unless required by applicable law or agreed to in writing, software
10
- # distributed under the License is distributed on an "AS IS" BASIS,
11
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
- # See the License for the specific language governing permissions and
13
- # limitations under the License.
14
-
15
- require 'test_helper'
16
-
17
- module Mongo
18
- class Collection
19
- attr_reader :operation_writer,
20
- :command_writer
21
- end
22
- end
23
-
24
- class CollectionUnitTest < Test::Unit::TestCase
25
-
26
- context "Basic operations: " do
27
- setup do
28
- @logger = mock()
29
- @logger.stubs(:level => 0)
30
- @logger.expects(:debug)
31
-
32
- @client = MongoClient.new('localhost', 27017, :logger => @logger, :connect => false)
33
- @db = @client[TEST_DB]
34
- @coll = @db.collection('collection-unit-test')
35
- end
36
-
37
- should "send update message" do
38
- @client.expects(:send_message_with_gle).with do |op, msg, log|
39
- op == 2001
40
- end
41
- @coll.operation_writer.stubs(:log_operation)
42
- @coll.update({}, {:title => 'Moby Dick'})
43
- end
44
-
45
- should "send insert message" do
46
- @client.expects(:send_message_with_gle).with do |op, msg, log|
47
- op == 2002
48
- end
49
- @coll.operation_writer.expects(:log_operation).with do |name, payload|
50
- (name == :insert) && payload[:documents][:title].include?('Moby')
51
- end
52
- @coll.insert({:title => 'Moby Dick'})
53
- end
54
-
55
- should "send sort data" do
56
- @client.expects(:checkout_reader).returns(new_mock_socket)
57
- @client.expects(:receive_message).with do |op, msg, log, sock|
58
- op == 2004
59
- end.returns([[], 0, 0])
60
- @logger.expects(:debug)
61
- @coll.find({:title => 'Moby Dick'}).sort([['title', 1], ['author', 1]]).next_document
62
- end
63
-
64
- should "not log binary data" do
65
- data = BSON::Binary.new(("BINARY " * 1000).unpack("c*"))
66
- @client.expects(:send_message_with_gle).with do |op, msg, log|
67
- op == 2002
68
- end
69
- @coll.operation_writer.expects(:log_operation).with do |name, payload|
70
- (name == :insert) && payload[:documents][:data].inspect.include?('Binary')
71
- end
72
- @coll.insert({:data => data})
73
- end
74
-
75
- should "send safe update message" do
76
- @client.expects(:send_message_with_gle).with do |op, msg, db_name, log|
77
- op == 2001
78
- end
79
- @coll.operation_writer.expects(:log_operation).with do |name, payload|
80
- (name == :update) && payload[:documents][:title].include?('Moby')
81
- end
82
- @coll.update({}, {:title => 'Moby Dick'})
83
- end
84
-
85
- should "send safe update message with legacy" do
86
- connection = Connection.new('localhost', 27017, :safe => true, :connect => false)
87
- db = connection[TEST_DB]
88
- coll = db.collection('collection-unit-test')
89
- connection.expects(:send_message_with_gle).with do |op, msg, db_name, log|
90
- op == 2001
91
- end
92
- coll.operation_writer.expects(:log_operation).with do |name, payload|
93
- (name == :update) && payload[:documents][:title].include?('Moby')
94
- end
95
- coll.update({}, {:title => 'Moby Dick'})
96
- end
97
-
98
- should "send safe insert message" do
99
- @client.expects(:send_message_with_gle).with do |op, msg, db_name, log|
100
- op == 2001
101
- end
102
- @coll.operation_writer.stubs(:log_operation)
103
- @coll.update({}, {:title => 'Moby Dick'})
104
- end
105
-
106
- should "not call insert for each ensure_index call" do
107
- @coll.expects(:generate_indexes).once
108
-
109
- @coll.ensure_index [["x", Mongo::DESCENDING]]
110
- @coll.ensure_index [["x", Mongo::DESCENDING]]
111
- end
112
-
113
- should "call generate_indexes for a new type on the same field for ensure_index" do
114
- @coll.expects(:generate_indexes).twice
115
-
116
- @coll.ensure_index [["x", Mongo::DESCENDING]]
117
- @coll.ensure_index [["x", Mongo::ASCENDING]]
118
- end
119
-
120
- should "call generate_indexes twice because the cache time is 0 seconds" do
121
- @db.cache_time = 0
122
- @coll = @db.collection('collection-unit-test')
123
- @coll.expects(:generate_indexes).twice
124
-
125
- @coll.ensure_index [["x", Mongo::DESCENDING]]
126
- @coll.ensure_index [["x", Mongo::DESCENDING]]
127
- end
128
-
129
- should "call generate_indexes for each key when calling ensure_indexes" do
130
- @db.cache_time = 300
131
- @coll = @db.collection('collection-unit-test')
132
- @coll.expects(:generate_indexes).once.with do |a, b, c|
133
- a == {"x"=>-1, "y"=>-1}
134
- end
135
-
136
- @coll.ensure_index [["x", Mongo::DESCENDING], ["y", Mongo::DESCENDING]]
137
- end
138
-
139
- should "call generate_indexes for each key when calling ensure_indexes with a hash" do
140
- @db.cache_time = 300
141
- @coll = @db.collection('collection-unit-test')
142
- oh = BSON::OrderedHash.new
143
- oh['x'] = Mongo::DESCENDING
144
- oh['y'] = Mongo::DESCENDING
145
- @coll.expects(:generate_indexes).once.with do |a, b, c|
146
- a == oh
147
- end
148
-
149
- if RUBY_VERSION > '1.9'
150
- @coll.ensure_index({"x" => Mongo::DESCENDING, "y" => Mongo::DESCENDING})
151
- else
152
- ordered_hash = BSON::OrderedHash.new
153
- ordered_hash['x'] = Mongo::DESCENDING
154
- ordered_hash['y'] = Mongo::DESCENDING
155
- @coll.ensure_index(ordered_hash)
156
- end
157
- end
158
-
159
- should "use the connection's logger" do
160
- @logger.expects(:warn).with do |msg|
161
- msg == "MONGODB [WARNING] test warning"
162
- end
163
- @coll.log(:warn, "test warning")
164
- end
165
- end
166
- end
@@ -1,335 +0,0 @@
1
- # Copyright (C) 2009-2013 MongoDB, Inc.
2
- #
3
- # Licensed under the Apache License, Version 2.0 (the "License");
4
- # you may not use this file except in compliance with the License.
5
- # You may obtain a copy of the License at
6
- #
7
- # http://www.apache.org/licenses/LICENSE-2.0
8
- #
9
- # Unless required by applicable law or agreed to in writing, software
10
- # distributed under the License is distributed on an "AS IS" BASIS,
11
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
- # See the License for the specific language governing permissions and
13
- # limitations under the License.
14
-
15
- require 'test_helper'
16
-
17
- class ConnectionUnitTest < Test::Unit::TestCase
18
- context "Mongo::MongoClient initialization " do
19
- context "given a single node" do
20
- setup do
21
- @connection = Mongo::Connection.new('localhost', 27017, :safe => true, :connect => false)
22
- TCPSocket.stubs(:new).returns(new_mock_socket)
23
-
24
- admin_db = new_mock_db
25
- admin_db.expects(:command).returns({'ok' => 1, 'ismaster' => 1})
26
- @connection.expects(:[]).with('admin').returns(admin_db)
27
- @connection.connect
28
- end
29
-
30
- should "set safe mode true" do
31
- assert_equal true, @connection.safe
32
- end
33
-
34
- should "set localhost and port to master" do
35
- assert_equal 'localhost', @connection.primary_pool.host
36
- assert_equal 27017, @connection.primary_pool.port
37
- end
38
-
39
- should "set connection pool to 1" do
40
- assert_equal 1, @connection.primary_pool.size
41
- end
42
-
43
- should "default slave_ok to false" do
44
- assert !@connection.slave_ok?
45
- end
46
-
47
- should "not raise error if no host or port is supplied" do
48
- assert_nothing_raised do
49
- Mongo::Connection.new(:safe => true, :connect => false)
50
- end
51
- assert_nothing_raised do
52
- Mongo::Connection.new('localhost', :safe => true, :connect => false)
53
- end
54
- end
55
-
56
- should "warn if invalid options are specified" do
57
- connection = Mongo::Connection.allocate
58
- opts = {:connect => false}
59
-
60
- Mongo::ReplSetConnection::REPL_SET_OPTS.each do |opt|
61
- connection.expects(:warn).with("#{opt} is not a valid option for #{connection.class}")
62
- opts[opt] = true
63
- end
64
-
65
- args = ['localhost', 27017, opts]
66
- connection.send(:initialize, *args)
67
- end
68
-
69
- end
70
-
71
- context "initializing with a unix socket" do
72
- setup do
73
- @connection = Mongo::Connection.new('/tmp/mongod.sock', :safe => true, :connect => false)
74
- UNIXSocket.stubs(:new).returns(new_mock_unix_socket)
75
- end
76
- should "parse a unix socket" do
77
- assert_equal "/tmp/mongod.sock", @connection.host_port.first
78
- end
79
- end
80
-
81
- context "initializing with a unix socket in uri" do
82
- setup do
83
- @connection = Mongo::Connection.from_uri("mongodb:///tmp/mongod.sock", :connect => false)
84
- UNIXSocket.stubs(:new).returns(new_mock_unix_socket)
85
- end
86
- should "parse a unix socket" do
87
- assert_equal "/tmp/mongod.sock", @connection.host_port.first
88
- end
89
- end
90
-
91
- context "initializing with a mongodb uri" do
92
- should "parse a simple uri" do
93
- @connection = Mongo::Connection.from_uri("mongodb://localhost", :connect => false)
94
- assert_equal ['localhost', 27017], @connection.host_port
95
- end
96
-
97
- should "set auth source" do
98
- @connection = Mongo::Connection.from_uri("mongodb://user:pass@localhost?authSource=foo", :connect => false)
99
- assert_equal 'foo', @connection.auths.first[:source]
100
- end
101
-
102
- should "set auth mechanism" do
103
- @connection = Mongo::Connection.from_uri("mongodb://user@localhost?authMechanism=MONGODB-X509", :connect => false)
104
- assert_equal 'MONGODB-X509', @connection.auths.first[:mechanism]
105
-
106
- assert_raise MongoArgumentError do
107
- Mongo::Connection.from_uri("mongodb://localhost?authMechanism=INVALID", :connect => false)
108
- end
109
- end
110
-
111
- should "allow a complex host names" do
112
- host_name = "foo.bar-12345.org"
113
- @connection = Mongo::Connection.from_uri("mongodb://#{host_name}", :connect => false)
114
- assert_equal [host_name, 27017], @connection.host_port
115
- end
116
-
117
- should "allow db without username and password" do
118
- host_name = "foo.bar-12345.org"
119
- @connection = Mongo::Connection.from_uri("mongodb://#{host_name}/foo", :connect => false)
120
- assert_equal [host_name, 27017], @connection.host_port
121
- end
122
-
123
- should "set safe options on connection" do
124
- host_name = "localhost"
125
- opts = "safe=true&w=2&wtimeoutMS=1000&fsync=true&journal=true"
126
- @connection = Mongo::Connection.from_uri("mongodb://#{host_name}/foo?#{opts}", :connect => false)
127
- assert_equal({:w => 2, :wtimeout => 1000, :fsync => true, :j => true}, @connection.write_concern)
128
- end
129
-
130
- should "set timeout options on connection" do
131
- host_name = "localhost"
132
- opts = "connectTimeoutMS=1000&socketTimeoutMS=5000"
133
- @connection = Mongo::Connection.from_uri("mongodb://#{host_name}/foo?#{opts}", :connect => false)
134
- assert_equal 1, @connection.connect_timeout
135
- assert_equal 5, @connection.op_timeout
136
- end
137
-
138
- should "parse a uri with a hyphen & underscore in the username or password" do
139
- @connection = Mongo::Connection.from_uri("mongodb://hyphen-user_name:p-s_s@localhost:27017/db", :connect => false)
140
- assert_equal ['localhost', 27017], @connection.host_port
141
-
142
- auth_hash = {
143
- :db_name => 'db',
144
- :extra=>{},
145
- :username => 'hyphen-user_name',
146
- :password => 'p-s_s',
147
- :source => 'db',
148
- :mechanism => nil
149
- }
150
- assert_equal auth_hash, @connection.auths.first
151
- end
152
-
153
- should "attempt to connect" do
154
- TCPSocket.stubs(:new).returns(new_mock_socket)
155
- @connection = Mongo::Connection.from_uri("mongodb://localhost", :connect => false)
156
-
157
- admin_db = new_mock_db
158
- admin_db.expects(:command).returns({'ok' => 1, 'ismaster' => 1})
159
- @connection.expects(:[]).with('admin').returns(admin_db)
160
- @connection.connect
161
- end
162
-
163
- should "raise an error on invalid uris" do
164
- assert_raise MongoArgumentError do
165
- Mongo::Connection.from_uri("mongo://localhost", :connect => false)
166
- end
167
-
168
- assert_raise MongoArgumentError do
169
- Mongo::Connection.from_uri("mongodb://localhost:abc", :connect => false)
170
- end
171
- end
172
-
173
- should "require password if using legacy auth and username present" do
174
- assert Mongo::Connection.from_uri("mongodb://kyle:jones@localhost/db", :connect => false)
175
-
176
- assert_raise MongoArgumentError do
177
- Mongo::Connection.from_uri("mongodb://kyle:@localhost", :connect => false)
178
- end
179
-
180
- assert_raise MongoArgumentError do
181
- Mongo::Connection.from_uri("mongodb://kyle@localhost", :connect => false)
182
- end
183
- end
184
- end
185
-
186
- context "initializing with ENV['MONGODB_URI']" do
187
- should "parse a simple uri" do
188
- uri = "mongodb://localhost?connect=false"
189
- with_preserved_env_uri(uri) do
190
- @connection = Mongo::Connection.new
191
- assert_equal ['localhost', 27017], @connection.host_port
192
- end
193
- end
194
-
195
- should "set auth source" do
196
- uri = "mongodb://user:pass@localhost?authSource=foo&connect=false"
197
- with_preserved_env_uri(uri) do
198
- @connection = Mongo::Connection.new
199
- assert_equal 'foo', @connection.auths.first[:source]
200
- end
201
- end
202
-
203
- should "set auth mechanism" do
204
- uri = "mongodb://user@localhost?authMechanism=MONGODB-X509&connect=false"
205
- with_preserved_env_uri(uri) do
206
- @connection = Mongo::Connection.new
207
- assert_equal 'MONGODB-X509', @connection.auths.first[:mechanism]
208
-
209
- ENV['MONGODB_URI'] = "mongodb://user@localhost?authMechanism=INVALID&connect=false"
210
- assert_raise MongoArgumentError do
211
- Mongo::Connection.new
212
- end
213
- end
214
- end
215
-
216
- should "allow a complex host names" do
217
- host_name = "foo.bar-12345.org"
218
- uri = "mongodb://#{host_name}?connect=false"
219
- with_preserved_env_uri(uri) do
220
- @connection = Mongo::Connection.new
221
- assert_equal [host_name, 27017], @connection.host_port
222
- end
223
- end
224
-
225
- should "allow db without username and password" do
226
- host_name = "foo.bar-12345.org"
227
- uri = "mongodb://#{host_name}/foo?connect=false"
228
- with_preserved_env_uri(uri) do
229
- @connection = Mongo::Connection.new
230
- assert_equal [host_name, 27017], @connection.host_port
231
- end
232
- end
233
-
234
- should "set safe options on connection" do
235
- host_name = "localhost"
236
- opts = "safe=true&w=2&wtimeoutMS=1000&fsync=true&journal=true&connect=false"
237
- uri = "mongodb://#{host_name}/foo?#{opts}"
238
- with_preserved_env_uri(uri) do
239
- @connection = Mongo::Connection.new
240
- assert_equal({:w => 2, :wtimeout => 1000, :fsync => true, :j => true}, @connection.safe)
241
- end
242
- end
243
-
244
- should "set timeout options on connection" do
245
- host_name = "localhost"
246
- opts = "connectTimeoutMS=1000&socketTimeoutMS=5000&connect=false"
247
- uri = "mongodb://#{host_name}/foo?#{opts}"
248
- with_preserved_env_uri(uri) do
249
- @connection = Mongo::Connection.new
250
- assert_equal 1, @connection.connect_timeout
251
- assert_equal 5, @connection.op_timeout
252
- end
253
- end
254
-
255
- should "parse a uri with a hyphen & underscore in the username or password" do
256
- uri = "mongodb://hyphen-user_name:p-s_s@localhost:27017/db?connect=false"
257
- with_preserved_env_uri(uri) do
258
- @connection = Mongo::Connection.new
259
- assert_equal ['localhost', 27017], @connection.host_port
260
-
261
- auth_hash = {
262
- :db_name => 'db',
263
- :extra=>{},
264
- :username => 'hyphen-user_name',
265
- :password => 'p-s_s',
266
- :source => 'db',
267
- :mechanism => nil
268
- }
269
- assert_equal auth_hash, @connection.auths.first
270
- end
271
- end
272
-
273
- should "attempt to connect" do
274
- TCPSocket.stubs(:new).returns(new_mock_socket)
275
- uri = "mongodb://localhost?connect=false"
276
- with_preserved_env_uri(uri) do
277
- @connection = Mongo::Connection.new
278
-
279
- admin_db = new_mock_db
280
- admin_db.expects(:command).returns({'ok' => 1, 'ismaster' => 1})
281
- @connection.expects(:[]).with('admin').returns(admin_db)
282
- @connection.connect
283
- end
284
- end
285
-
286
- should "raise an error on invalid uris" do
287
- uri = "mongo://localhost"
288
- with_preserved_env_uri(uri) do
289
- assert_raise MongoArgumentError do
290
- Mongo::Connection.new
291
- end
292
-
293
- ENV['MONGODB_URI'] = "mongodb://localhost:abc"
294
- assert_raise MongoArgumentError do
295
- Mongo::Connection.new
296
- end
297
- end
298
- end
299
-
300
- should "require password if using legacy auth and username present" do
301
- uri = "mongodb://kyle:jones@localhost/db?connect=false"
302
- with_preserved_env_uri(uri) do
303
- assert Mongo::Connection.new
304
-
305
- ENV['MONGODB_URI'] = "mongodb://kyle:@localhost?connect=false"
306
- assert_raise MongoArgumentError do
307
- Mongo::Connection.new
308
- end
309
-
310
- ENV['MONGODB_URI'] = "mongodb://kyle@localhost?connect=false"
311
- assert_raise MongoArgumentError do
312
- Mongo::Connection.new
313
- end
314
- end
315
- end
316
-
317
- should "require password if using PLAIN auth and username present" do
318
- uri = "mongodb://kyle:jones@localhost/db?connect=false&authMechanism=PLAIN"
319
- with_preserved_env_uri(uri) do
320
- assert Mongo::Connection.new
321
-
322
- ENV['MONGODB_URI'] = "mongodb://kyle:@localhost?connect=false&authMechanism=PLAIN"
323
- assert_raise MongoArgumentError do
324
- Mongo::Connection.new
325
- end
326
-
327
- ENV['MONGODB_URI'] = "mongodb://kyle@localhost?connect=false&authMechanism=PLAIN"
328
- assert_raise MongoArgumentError do
329
- Mongo::Connection.new
330
- end
331
- end
332
- end
333
- end
334
- end
335
- end