summaryrefslogtreecommitdiff
path: root/tests/unit/mongo/sync/sync_cmd_exists.c
diff options
context:
space:
mode:
Diffstat (limited to 'tests/unit/mongo/sync/sync_cmd_exists.c')
-rw-r--r--tests/unit/mongo/sync/sync_cmd_exists.c85
1 files changed, 85 insertions, 0 deletions
diff --git a/tests/unit/mongo/sync/sync_cmd_exists.c b/tests/unit/mongo/sync/sync_cmd_exists.c
new file mode 100644
index 0000000..f3c535f
--- /dev/null
+++ b/tests/unit/mongo/sync/sync_cmd_exists.c
@@ -0,0 +1,85 @@
+#include "test.h"
+#include "mongo.h"
+
+#include "libmongo-private.h"
+
+void
+test_mongo_sync_cmd_exists_net (void)
+{
+ mongo_sync_connection *conn;
+ gchar *cc, *ns;
+
+ bson *r;
+ bson_cursor *c;
+ const gchar *str = NULL;
+ gboolean capped = FALSE;
+
+ begin_network_tests (4);
+
+ conn = mongo_sync_connect (config.primary_host, config.primary_port, FALSE);
+
+ cc = g_strconcat (config.coll, ".capped", NULL);
+
+ mongo_sync_cmd_drop (conn, config.db, config.coll);
+ mongo_sync_cmd_drop (conn, config.db, cc);
+
+ mongo_sync_cmd_create (conn, config.db, config.coll,
+ MONGO_COLLECTION_DEFAULTS);
+ mongo_sync_cmd_create (conn, config.db, cc,
+ MONGO_COLLECTION_CAPPED,
+ (gint64) 64 * 1024 * 10);
+
+ r = mongo_sync_cmd_exists (conn, config.db, config.coll);
+ c = bson_find (r, "name");
+ bson_cursor_get_string (c, &str);
+ is (str, config.ns,
+ "mongo_sync_cmd_exists() works on normal collections");
+ bson_cursor_find (c, "capped");
+ bson_cursor_get_boolean (c, &capped);
+ cmp_ok (capped, "==", FALSE,
+ "mongo_sync_cmd_exists() returned correct info");
+ bson_cursor_free (c);
+ bson_free (r);
+
+ r = mongo_sync_cmd_exists (conn, config.db, cc);
+ ns = g_strconcat (config.db, ".", cc, NULL);
+ c = bson_find (r, "name");
+ bson_cursor_get_string (c, &str);
+ is (str, ns,
+ "mongo_sync_cmd_exists() works on capped collections");
+ bson_cursor_find (c, "capped");
+ bson_cursor_get_boolean (c, &capped);
+ cmp_ok (capped, "==", FALSE,
+ "mongo_sync_cmd_exists() returned correct info");
+ bson_cursor_free (c);
+ g_free (ns);
+ bson_free (r);
+
+ mongo_sync_cmd_drop (conn, config.db, cc);
+
+ g_free (cc);
+ mongo_sync_disconnect (conn);
+
+ end_network_tests ();
+}
+
+void
+test_mongo_sync_cmd_exists (void)
+{
+ mongo_sync_connection *c;
+
+ c = test_make_fake_sync_conn (-1, FALSE);
+
+ ok (mongo_sync_cmd_exists (NULL, "test", "db") == NULL,
+ "mongo_sync_cmd_exists() fails with a NULL connection");
+ ok (mongo_sync_cmd_exists (c, NULL, "db") == NULL,
+ "mongo_sync_cmd_exists() fails with a NULL db");
+ ok (mongo_sync_cmd_exists (c, "test", NULL) == NULL,
+ "mongo_sync_cmd_exists() fails with a NULL collection");
+
+ mongo_sync_disconnect (c);
+
+ test_mongo_sync_cmd_exists_net ();
+}
+
+RUN_TEST (7, mongo_sync_cmd_exists);