diff options
author | Julien Chaffraix <julien.chaffraix@gmail.com> | 2011-02-07 22:12:37 -0800 |
---|---|---|
committer | Julien Chaffraix <julien.chaffraix@gmail.com> | 2011-02-10 07:38:48 -0800 |
commit | 39d0d787d20b29ed57b10477340c7d000041d31d (patch) | |
tree | ba17ec4ce43722fe1b7322f2c8af5a407baf4dfb | |
parent | 3cffcba3d0cf78a2aa17197059f810f5a7ce05a5 (diff) |
test1304: Added some unit tests for Curl_parsenetrc.
Moved some definitons into the header file so that we can reuse them.
-rw-r--r-- | lib/netrc.c | 5 | ||||
-rw-r--r-- | lib/netrc.h | 8 | ||||
-rw-r--r-- | tests/data/Makefile.am | 3 | ||||
-rw-r--r-- | tests/data/test1304 | 31 | ||||
-rw-r--r-- | tests/unit/Makefile.inc | 3 | ||||
-rw-r--r-- | tests/unit/unit1304.c | 125 |
6 files changed, 167 insertions, 8 deletions
diff --git a/lib/netrc.c b/lib/netrc.c index 7e0447d23..b069c8c49 100644 --- a/lib/netrc.c +++ b/lib/netrc.c @@ -61,11 +61,6 @@ enum host_lookup_state { HOSTEND /* LAST enum */ }; -/* make sure we have room for at least this size: */ -#define LOGINSIZE 64 -#define PASSWORDSIZE 64 - -/* returns -1 on failure, 0 if the host is found, 1 is the host isn't found */ int Curl_parsenetrc(const char *host, char *login, char *password, diff --git a/lib/netrc.h b/lib/netrc.h index 5406d4c5d..4db764df2 100644 --- a/lib/netrc.h +++ b/lib/netrc.h @@ -7,7 +7,7 @@ * | (__| |_| | _ <| |___ * \___|\___/|_| \_\_____| * - * Copyright (C) 1998 - 2010, Daniel Stenberg, <daniel@haxx.se>, et al. + * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al. * * This software is licensed as described in the file COPYING, which * you should have received as part of this distribution. The terms @@ -21,6 +21,12 @@ * KIND, either express or implied. * ***************************************************************************/ + +/* Make sure we have room for at least this size: */ +#define LOGINSIZE 64 +#define PASSWORDSIZE 64 + +/* returns -1 on failure, 0 if the host is found, 1 is the host isn't found */ int Curl_parsenetrc(const char *host, char *login, char *password, diff --git a/tests/data/Makefile.am b/tests/data/Makefile.am index 2f4c4bcdc..3f8196d57 100644 --- a/tests/data/Makefile.am +++ b/tests/data/Makefile.am @@ -69,7 +69,8 @@ EXTRA_DIST = test1 test108 test117 test127 test20 test27 test34 test46 \ test569 test570 test571 test572 test804 test805 test806 test807 test573 \ test313 test1115 test578 test579 test1116 test1200 test1201 test1202 \ test1203 test1117 test1118 test1119 test1120 test1300 test1301 test1302 \ - test1303 test320 test321 test322 test323 test324 test1121 test581 test580 + test1303 test320 test321 test322 test323 test324 test1121 test581 test580 \ + test1304 filecheck: @mkdir test-place; \ diff --git a/tests/data/test1304 b/tests/data/test1304 new file mode 100644 index 000000000..572e03302 --- /dev/null +++ b/tests/data/test1304 @@ -0,0 +1,31 @@ +<testcase> +<info> +<keywords> +unittest +netrc +</keywords> +</info> + +# +# Client-side +<client> +<server> +none +</server> +<features> +unittest +netrc_debug +</features> + <name> +netrc parsing unit tests + </name> +<tool> +unit1304 +</tool> +<file name="log/netrc"> +machine example.com login admin password passwd +machine curl.example.com login none password none +</file> +</client> + +</testcase> diff --git a/tests/unit/Makefile.inc b/tests/unit/Makefile.inc index 0db217d86..6dd7a4165 100644 --- a/tests/unit/Makefile.inc +++ b/tests/unit/Makefile.inc @@ -3,9 +3,10 @@ UNITFILES = curlcheck.h # These are all unit test programs -noinst_PROGRAMS = unit1300 unit1301 unit1302 unit1303 +noinst_PROGRAMS = unit1300 unit1301 unit1302 unit1303 unit1304 unit1300_SOURCES = unit1300.c $(UNITFILES) unit1301_SOURCES = unit1301.c $(UNITFILES) unit1302_SOURCES = unit1302.c $(UNITFILES) unit1303_SOURCES = unit1303.c $(UNITFILES) +unit1304_SOURCES = unit1304.c $(UNITFILES) diff --git a/tests/unit/unit1304.c b/tests/unit/unit1304.c new file mode 100644 index 000000000..e7d55a565 --- /dev/null +++ b/tests/unit/unit1304.c @@ -0,0 +1,125 @@ +#include <stdlib.h> +#include "curl_config.h" +#include "setup.h" + +#include "netrc.h" +#include "curlcheck.h" + +char login[LOGINSIZE]; +char password[PASSWORDSIZE]; + +static CURLcode unit_setup(void) +{ + password[0] = 0; + login[0] = 0; + return CURLE_OK; +} + +static void unit_stop(void) +{ +} + +UNITTEST_START + int result; + + /* + * TODO: We don't specify the filename as it is + * overriden when running the test. + */ + + /* + * Test a non existent host in our netrc file. + */ + result = Curl_parsenetrc("test.example.com", login, password, NULL); + fail_unless(result == 1, "Host not found should return 1"); + fail_unless(password[0] == 0, "password should not have been changed"); + fail_unless(login[0] == 0, "login should not have been changed"); + + /* + * Test a non existent login in our netrc file. + */ + memcpy(login, "me", 2); + result = Curl_parsenetrc("example.com", login, password, NULL); + fail_unless(result == 0, "Host should be found"); + fail_unless(password[0] == 0, "password should not have been changed"); + fail_unless(strncmp(login, "me", 2) == 0, "login should not have been changed"); + + /* + * Test a non existent login and host in our netrc file. + */ + memcpy(login, "me", 2); + result = Curl_parsenetrc("test.example.com", login, password, NULL); + fail_unless(result == 1, "Host should be found"); + fail_unless(password[0] == 0, "password should not have been changed"); + fail_unless(strncmp(login, "me", 2) == 0, "login should not have been changed"); + + /* + * Test a non existent login (substring of an existing one) in our + * netrc file. + */ + memcpy(login, "admi", 4); + result = Curl_parsenetrc("example.com", login, password, NULL); + fail_unless(result == 0, "Host should be found"); + fail_unless(password[0] == 0, "password should not have been changed"); + fail_unless(strncmp(login, "admi", 4) == 0, "login should not have been changed"); + + /* + * Test a non existent login (superstring of an existing one) + * in our netrc file. + */ + memcpy(login, "adminn", 6); + result = Curl_parsenetrc("example.com", login, password, NULL); + fail_unless(result == 0, "Host should be found"); + fail_unless(password[0] == 0, "password should not have been changed"); + fail_unless(strncmp(login, "adminn", 6) == 0, "login should not have been changed"); + + /* + * Test for the first existing host in our netrc file + * with login[0] = 0. + */ + login[0] = 0; + result = Curl_parsenetrc("example.com", login, password, NULL); + fail_unless(result == 0, "Host should have been found"); + fail_unless(strncmp(password, "passwd", 6) == 0, + "password should be 'passwd'"); + fail_unless(strncmp(login, "admin", 5) == 0, "login should be 'admin'"); + + /* + * Test for the first existing host in our netrc file + * with login[0] != 0. + */ + password[0] = 0; + result = Curl_parsenetrc("example.com", login, password, NULL); + fail_unless(result == 0, "Host should have been found"); + fail_unless(strncmp(password, "passwd", 6) == 0, + "password should be 'passwd'"); + fail_unless(strncmp(login, "admin", 5) == 0, "login should be 'admin'"); + + /* + * Test for the second existing host in our netrc file + * with login[0] = 0. + */ + password[0] = 0; + login[0] = 0; + result = Curl_parsenetrc("curl.example.com", login, password, NULL); + fail_unless(result == 0, "Host should have been found"); + fail_unless(strncmp(password, "none", 4) == 0, + "password should be 'none'"); + fail_unless(strncmp(login, "none", 4) == 0, "login should be 'none'"); + + /* + * Test for the second existing host in our netrc file + * with login[0] != 0. + */ + password[0] = 0; + result = Curl_parsenetrc("curl.example.com", login, password, "log/netrc"); + fail_unless(result == 0, "Host should have been found"); + fail_unless(strncmp(password, "none", 4) == 0, + "password should be 'none'"); + fail_unless(strncmp(login, "none", 4) == 0, "login should be 'none'"); + + /* TODO: + * Test over the size limit password / login! + * Test files with a bad format + */ +UNITTEST_STOP |