diff options
Diffstat (limited to 'tests')
-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 |
4 files changed, 160 insertions, 2 deletions
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 |