1 /* 2 * Copyright (C) 2010 - 2011 Vivien Malerba <malerba@gnome-db.org> 3 * Copyright (C) 2011 Murray Cumming <murrayc@murrayc.com> 4 * 5 * This program is free software; you can redistribute it and/or test_complement()6 * modify it under the terms of the GNU General Public License 7 * as published by the Free Software Foundation; either version 2 8 * of the License, or (at your option) any later version. 9 * 10 * This program is distributed in the hope that it will be useful, 11 * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 * GNU General Public License for more details. 14 * 15 * You should have received a copy of the GNU General Public License 16 * along with this program; if not, write to the Free Software 17 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 18 */ 19 #include <libgda/libgda.h> 20 #include <string.h> 21 22 typedef struct { 23 gchar *in_string; 24 gchar *exp_provider; 25 gchar *exp_cnc_params; 26 gchar *exp_user; 27 gchar *exp_pass; 28 } ATest; 29 30 ATest the_tests[] = { 31 {"PostgreSQL://meme:pass@DB_NAME=mydb;HOST=server", 32 "PostgreSQL", "DB_NAME=mydb;HOST=server", 33 "meme", "pass"}, 34 {"PostgreSQL://meme@DB_NAME=mydb;HOST=server;PASSWORD=pass", 35 "PostgreSQL", "DB_NAME=mydb;HOST=server", 36 "meme", "pass"}, 37 {"PostgreSQL://meme@DB_NAME=mydb;PASSWORD=pass;HOST=server", 38 "PostgreSQL", "DB_NAME=mydb;HOST=server", 39 "meme", "pass"}, 40 {"PostgreSQL://meme@PASSWORD=pass;DB_NAME=mydb;HOST=server", 41 "PostgreSQL", "DB_NAME=mydb;HOST=server", 42 "meme", "pass"}, 43 {"PostgreSQL://DB_NAME=mydb;HOST=server;USERNAME=meme;PASSWORD=pass", 44 "PostgreSQL", "DB_NAME=mydb;HOST=server", 45 "meme", "pass"}, 46 {"PostgreSQL://DB_NAME=mydb;HOST=server;PASSWORD=pass;USERNAME=meme", 47 "PostgreSQL", "DB_NAME=mydb;HOST=server", 48 "meme", "pass"}, 49 {"PostgreSQL://DB_NAME=mydb;USERNAME=meme;PASSWORD=pass;HOST=server", 50 "PostgreSQL", "DB_NAME=mydb;HOST=server", 51 "meme", "pass"}, 52 {"PostgreSQL://PASSWORD=pass;USERNAME=meme;DB_NAME=mydb;HOST=server", 53 "PostgreSQL", "DB_NAME=mydb;HOST=server", 54 "meme", "pass"}, 55 {"PostgreSQL://:pass@USERNAME=meme;DB_NAME=mydb;HOST=server", 56 "PostgreSQL", "DB_NAME=mydb;HOST=server", 57 "meme", "pass"}, 58 {"PostgreSQL://:pass@DB_NAME=mydb;HOST=server;USERNAME=meme", 59 "PostgreSQL", "DB_NAME=mydb;HOST=server", 60 "meme", "pass"}, 61 {"PORT=5432;ADM_LOGIN=gdauser;HOST=gdatester;ADM_PASSWORD=GdaUser;DB_NAME=testcheckdb", 62 NULL, 63 "PORT=5432;ADM_LOGIN=gdauser;HOST=gdatester;ADM_PASSWORD=GdaUser;DB_NAME=testcheckdb", 64 NULL, NULL}, 65 {"PORT=5432;ADM_LOGIN=gdauser;HOST=gdatester;ADM_PASSWORD=GdaUser;DB_NAME=testcheckdb;USERNAME=meme;PASSWORD=pass", 66 NULL, 67 "PORT=5432;ADM_LOGIN=gdauser;HOST=gdatester;ADM_PASSWORD=GdaUser;DB_NAME=testcheckdb", 68 "meme", "pass"}, 69 {"PORT=5432;ADM_LOGIN=gdauser;HOST=gdatester;USERNAME=meme;PASSWORD=pass;ADM_PASSWORD=GdaUser;DB_NAME=testcheckdb", 70 NULL, 71 "PORT=5432;ADM_LOGIN=gdauser;HOST=gdatester;ADM_PASSWORD=GdaUser;DB_NAME=testcheckdb", 72 "meme", "pass"} 73 }; 74 75 int 76 main (int argc, char *argv[]) 77 { 78 #if GLIB_CHECK_VERSION(2,36,0) 79 #else 80 g_type_init(); 81 #endif 82 gda_init (); 83 84 guint i; 85 for (i = 0; i < sizeof (the_tests) / sizeof (ATest); i++) { 86 ATest test = the_tests[i]; 87 gchar *cnc_params, *prov, *user, *pass; 88 gda_connection_string_split (test.in_string, &cnc_params, &prov, &user, &pass); 89 g_print ("[%s]\n cnc_params=[%s]\n prov =[%s]\n user =[%s]\n pass =[%s]\n", 90 test.in_string, cnc_params, prov, user, pass); 91 if (g_strcmp0 (cnc_params, test.exp_cnc_params)) { 92 g_print ("Wrong cnc_params result\n"); 93 goto onerror; 94 } 95 if (g_strcmp0 (prov, test.exp_provider)) { 96 g_print ("Wrong provider result\n"); 97 goto onerror; 98 } 99 if (g_strcmp0 (user, test.exp_user)) { 100 g_print ("Wrong username result\n"); 101 goto onerror; 102 } 103 if (g_strcmp0 (pass, test.exp_pass)) { 104 g_print ("Wrong password result\n"); 105 goto onerror; 106 } 107 g_free (cnc_params); 108 g_free (prov); 109 g_free (user); 110 g_free (pass); 111 112 } 113 114 return 0; 115 onerror: 116 g_print ("Error, aborting\n"); 117 return 1; 118 } 119 120