ConnectionTest.php 3.61 KB
Newer Older
Jens Segers's avatar
Jens Segers committed
1 2
<?php

3
class ConnectionTest extends TestCase {
Jens Segers's avatar
Jens Segers committed
4

5
	public function testConnection()
Jens Segers's avatar
Jens Segers committed
6
	{
7 8
		$connection = DB::connection('mongodb');
		$this->assertInstanceOf('Jenssegers\Mongodb\Connection', $connection);
Jens Segers's avatar
Jens Segers committed
9
	}
10

Jens Segers's avatar
Jens Segers committed
11 12
	public function testReconnect()
	{
13 14
		$c1 = DB::connection('mongodb');
		$c2 = DB::connection('mongodb');
15
		$this->assertEquals(spl_object_hash($c1), spl_object_hash($c2));
16 17

		$c1 = DB::connection('mongodb');
Jens Segers's avatar
Jens Segers committed
18 19
		DB::purge('mongodb');
		$c2 = DB::connection('mongodb');
20
		$this->assertNotEquals(spl_object_hash($c1), spl_object_hash($c2));
Jens Segers's avatar
Jens Segers committed
21 22 23 24
	}

	public function testDb()
	{
25
		$connection = DB::connection('mongodb');
26
		$this->assertInstanceOf('MongoDB', $connection->getMongoDB());
27 28 29

		$connection = DB::connection('mongodb');
		$this->assertInstanceOf('MongoClient', $connection->getMongoClient());
Jens Segers's avatar
Jens Segers committed
30 31 32 33
	}

	public function testCollection()
	{
34
		$collection = DB::connection('mongodb')->getCollection('unittest');
35
		$this->assertInstanceOf('Jenssegers\Mongodb\Collection', $collection);
Jens Segers's avatar
Jens Segers committed
36

37
		$collection = DB::connection('mongodb')->collection('unittests');
Jens Segers's avatar
Jens Segers committed
38
		$this->assertInstanceOf('Jenssegers\Mongodb\Query\Builder', $collection);
Jens Segers's avatar
Jens Segers committed
39

40
		$collection = DB::connection('mongodb')->table('unittests');
Jens Segers's avatar
Jens Segers committed
41
		$this->assertInstanceOf('Jenssegers\Mongodb\Query\Builder', $collection);
Jens Segers's avatar
Jens Segers committed
42 43 44 45
	}

	public function testDynamic()
	{
46
		$dbs = DB::connection('mongodb')->listCollections();
Jens Segers's avatar
Jens Segers committed
47
		$this->assertTrue(is_array($dbs));
Jens Segers's avatar
Jens Segers committed
48 49
	}

50
	/*public function testMultipleConnections()
51 52 53 54 55
	{
		global $app;

		# Add fake host
		$db = $app['config']['database.connections']['mongodb'];
56
		$db['host'] = array($db['host'], '1.2.3.4');
57 58 59 60 61 62

		$connection = new Connection($db);
		$mongoclient = $connection->getMongoClient();

		$hosts = $mongoclient->getHosts();
		$this->assertEquals(1, count($hosts));
63
	}*/
64

Jens Segers's avatar
Jens Segers committed
65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84
	public function testQueryLog()
	{
		$this->assertEquals(0, count(DB::getQueryLog()));

		DB::collection('items')->get();
		$this->assertEquals(1, count(DB::getQueryLog()));

		DB::collection('items')->insert(array('name' => 'test'));
		$this->assertEquals(2, count(DB::getQueryLog()));

		DB::collection('items')->count();
		$this->assertEquals(3, count(DB::getQueryLog()));

		DB::collection('items')->where('name', 'test')->update(array('name' => 'test'));
		$this->assertEquals(4, count(DB::getQueryLog()));

		DB::collection('items')->where('name', 'test')->delete();
		$this->assertEquals(5, count(DB::getQueryLog()));
	}

Jens Segers's avatar
Jens Segers committed
85 86 87 88 89 90
	public function testSchemaBuilder()
	{
		$schema = DB::connection('mongodb')->getSchemaBuilder();
		$this->assertInstanceOf('Jenssegers\Mongodb\Schema\Builder', $schema);
	}

91 92 93 94 95 96 97 98 99 100 101 102 103 104
	public function testDriverName()
	{
		$driver = DB::connection('mongodb')->getDriverName();
		$this->assertEquals('mongodb', $driver);
	}

	public function testAuth()
	{
		Config::set('database.connections.mongodb.username', 'foo');
		Config::set('database.connections.mongodb.password', 'bar');
		$host = Config::get('database.connections.mongodb.host');
		$port = Config::get('database.connections.mongodb.port', 27017);
		$database = Config::get('database.connections.mongodb.database');

105
		$this->setExpectedExceptionRegExp('MongoConnectionException', "/Failed to connect to: $host:$port: Authentication failed on database '$database' with username 'foo': auth fail/");
106 107 108 109 110 111 112 113 114 115 116 117 118 119
		$connection = DB::connection('mongodb');
	}

	public function testCustomPort()
	{
		$port = 27000;
		Config::set('database.connections.mongodb.port', $port);
		$host = Config::get('database.connections.mongodb.host');
		$database = Config::get('database.connections.mongodb.database');

		$this->setExpectedException('MongoConnectionException', "Failed to connect to: $host:$port: Connection refused");
		$connection = DB::connection('mongodb');
	}

120
}