mongo-ruby-driver/test/unit/connection_test.rb

100 lines
3.3 KiB
Ruby
Raw Normal View History

2010-09-09 19:58:51 +00:00
require './test/test_helper'
2010-02-20 00:17:38 +00:00
include Mongo
2010-02-22 20:49:04 +00:00
class ConnectionTest < Test::Unit::TestCase
context "Initialization: " do
2010-02-20 00:17:38 +00:00
setup do
def new_mock_socket(host='localhost', port=27017)
2010-02-22 20:49:04 +00:00
socket = Object.new
socket.stubs(:setsockopt).with(Socket::IPPROTO_TCP, Socket::TCP_NODELAY, 1)
2010-08-24 16:06:23 +00:00
socket.stubs(:close)
2010-02-22 20:49:04 +00:00
socket
end
2010-02-22 20:49:04 +00:00
def new_mock_db
db = Object.new
end
2010-02-20 00:17:38 +00:00
end
2010-02-22 20:49:04 +00:00
context "given a single node" do
setup do
@conn = Connection.new('localhost', 27017, :connect => false)
2010-07-19 16:07:46 +00:00
TCPSocket.stubs(:new).returns(new_mock_socket)
2010-02-22 20:49:04 +00:00
admin_db = new_mock_db
admin_db.expects(:command).returns({'ok' => 1, 'ismaster' => 1}).twice
@conn.expects(:[]).with('admin').returns(admin_db).twice
2010-07-19 16:07:46 +00:00
@conn.connect
2010-02-22 20:49:04 +00:00
end
2010-02-22 20:49:04 +00:00
should "set localhost and port to master" do
assert_equal 'localhost', @conn.primary_pool.host
assert_equal 27017, @conn.primary_pool.port
2010-02-22 20:49:04 +00:00
end
2010-02-22 20:49:04 +00:00
should "set connection pool to 1" do
assert_equal 1, @conn.primary_pool.size
end
2010-02-22 20:49:04 +00:00
should "default slave_ok to false" do
assert !@conn.slave_ok?
end
end
2010-02-22 20:49:04 +00:00
context "initializing with a mongodb uri" do
should "parse a simple uri" do
@conn = Connection.from_uri("mongodb://localhost", :connect => false)
assert_equal ['localhost', 27017], @conn.host_to_try
2010-02-22 20:49:04 +00:00
end
should "allow a complex host names" do
host_name = "foo.bar-12345.org"
@conn = Connection.from_uri("mongodb://#{host_name}", :connect => false)
assert_equal [host_name, 27017], @conn.host_to_try
end
should "parse a uri with a hyphen & underscore in the username or password" do
@conn = Connection.from_uri("mongodb://hyphen-user_name:p-s_s@localhost:27017/db", :connect => false)
assert_equal ['localhost', 27017], @conn.host_to_try
auth_hash = { 'db_name' => 'db', 'username' => 'hyphen-user_name', "password" => 'p-s_s' }
assert_equal auth_hash, @conn.auths[0]
end
2010-02-22 20:49:04 +00:00
should "attempt to connect" do
TCPSocket.stubs(:new).returns(new_mock_socket)
@conn = Connection.from_uri("mongodb://localhost", :connect => false)
admin_db = new_mock_db
admin_db.expects(:command).returns({'ok' => 1, 'ismaster' => 1}).twice
@conn.expects(:[]).with('admin').returns(admin_db).twice
2010-02-25 19:58:32 +00:00
@conn.expects(:apply_saved_authentication)
2010-07-19 16:07:46 +00:00
@conn.connect
end
2010-02-22 20:49:04 +00:00
should "raise an error on invalid uris" do
assert_raise MongoArgumentError do
Connection.from_uri("mongo://localhost", :connect => false)
end
assert_raise MongoArgumentError do
Connection.from_uri("mongodb://localhost:abc", :connect => false)
end
assert_raise MongoArgumentError do
Connection.from_uri("mongodb://localhost:27017, my.db.com:27018, ", :connect => false)
end
2010-02-20 00:17:38 +00:00
end
2010-02-22 20:49:04 +00:00
should "require all of username, password, and database if any one is specified" do
assert_raise MongoArgumentError do
Connection.from_uri("mongodb://localhost/db", :connect => false)
end
assert_raise MongoArgumentError do
Connection.from_uri("mongodb://kyle:password@localhost", :connect => false)
end
2010-02-20 00:17:38 +00:00
end
end
end
2009-11-25 15:25:28 +00:00
end