6
#include <sys/socket.h>
7
#include "libmongo-private.h"
10
test_mongo_sync_cmd_authenticate_net_secondary (void)
12
mongo_sync_connection *c;
14
skip (!config.secondary_host, 4,
15
"Secondary server not configured");
17
c = mongo_sync_connect (config.secondary_host, config.secondary_port, TRUE);
18
mongo_sync_conn_set_auto_reconnect (c, TRUE);
19
mongo_sync_cmd_is_master (c);
21
ok (mongo_sync_cmd_authenticate (c, config.db, "test", "s3kr1+") == TRUE,
22
"mongo_sync_cmd_authenticate() works");
23
ok (mongo_sync_cmd_authenticate (c, config.db, "test", "bad_pw") == FALSE,
24
"mongo_sync_cmd_authenticate() should fail with a bad password");
25
ok (mongo_sync_cmd_authenticate (c, config.db, "xxx", "s3kr1+") == FALSE,
26
"mongo_sync_cmd_authenticate() should fail with a bad username");
28
shutdown (c->super.fd, SHUT_RDWR);
31
ok (mongo_sync_cmd_authenticate (c, config.db, "test", "s3kr1+") == TRUE,
32
"mongo_sync_cmd_authenticate() automatically reconnects");
34
mongo_sync_disconnect (c);
40
test_mongo_sync_cmd_authenticate_net (void)
42
mongo_sync_connection *c;
44
begin_network_tests (8);
46
c = mongo_sync_connect (config.primary_host, config.primary_port, TRUE);
47
mongo_sync_conn_set_auto_reconnect (c, TRUE);
49
mongo_sync_cmd_user_add (c, config.db, "test", "s3kr1+");
51
ok (mongo_sync_cmd_authenticate (c, config.db, "test", "s3kr1+") == TRUE,
52
"mongo_sync_cmd_authenticate() works");
53
ok (mongo_sync_cmd_authenticate (c, config.db, "test", "bad_pw") == FALSE,
54
"mongo_sync_cmd_authenticate() should fail with a bad password");
55
ok (mongo_sync_cmd_authenticate (c, config.db, "xxx", "s3kr1+") == FALSE,
56
"mongo_sync_cmd_authenticate() should fail with a bad username");
58
shutdown (c->super.fd, SHUT_RDWR);
61
ok (mongo_sync_cmd_authenticate (c, config.db, "test", "s3kr1+") == TRUE,
62
"mongo_sync_cmd_authenticate() automatically reconnects");
64
mongo_sync_disconnect (c);
66
test_mongo_sync_cmd_authenticate_net_secondary ();
72
test_mongo_sync_cmd_authenticate (void)
74
mongo_sync_connection *c;
76
c = test_make_fake_sync_conn (-1, FALSE);
79
ok (mongo_sync_cmd_authenticate (NULL, "test", "test",
81
"mongo_sync_cmd_authenticate() fails with a NULL connection");
82
cmp_ok (errno, "==", ENOTCONN,
83
"errno is set to ENOTCONN");
86
ok (mongo_sync_cmd_authenticate (c, NULL, "test", "s3kr1+") == FALSE,
87
"mongo_sync_cmd_authenticate() fails with a NULL db");
88
cmp_ok (errno, "==", EINVAL,
89
"errno is set to EINVAL");
92
ok (mongo_sync_cmd_authenticate (c, "test", NULL, "s3kr1+") == FALSE,
93
"mongo_sync_cmd_authenticate() fails with a NULL user");
94
cmp_ok (errno, "==", EINVAL,
95
"errno is set to EINVAL");
98
ok (mongo_sync_cmd_authenticate (c, "test", "test", NULL) == FALSE,
99
"mongo_sync_cmd_authenticate() fails with a NULL password");
100
cmp_ok (errno, "==", EINVAL,
101
"errno is set to EINVAL");
103
ok (mongo_sync_cmd_authenticate (c, "test", "test",
105
"mongo_sync_cmd_authenticate() fails with a bogus FD");
107
mongo_sync_disconnect (c);
109
test_mongo_sync_cmd_authenticate_net ();
112
RUN_TEST (17, mongo_sync_cmd_authenticate);