8ddd8caee849a522c20d63afb2ba6b31d0ee374d
[platform/upstream/curl.git] / tests / unit / unit1304.c
1 /***************************************************************************
2  *                                  _   _ ____  _
3  *  Project                     ___| | | |  _ \| |
4  *                             / __| | | | |_) | |
5  *                            | (__| |_| |  _ <| |___
6  *                             \___|\___/|_| \_\_____|
7  *
8  * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al.
9  *
10  * This software is licensed as described in the file COPYING, which
11  * you should have received as part of this distribution. The terms
12  * are also available at http://curl.haxx.se/docs/copyright.html.
13  *
14  * You may opt to use, copy, modify, merge, publish, distribute and/or sell
15  * copies of the Software, and permit persons to whom the Software is
16  * furnished to do so, under the terms of the COPYING file.
17  *
18  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
19  * KIND, either express or implied.
20  *
21  ***************************************************************************/
22 #include "curlcheck.h"
23
24 #include "netrc.h"
25
26 static char login[LOGINSIZE];
27 static char password[PASSWORDSIZE];
28 static char filename[64];
29
30 static CURLcode unit_setup(void)
31 {
32   password[0] = 0;
33   login[0] = 0;
34   return CURLE_OK;
35 }
36
37 static void unit_stop(void)
38 {
39 }
40
41 UNITTEST_START
42   int result;
43
44   static const char* filename1 = "log/netrc1304";
45   memcpy(filename, filename1, strlen(filename1));
46
47   /*
48    * Test a non existent host in our netrc file.
49    */
50   result = Curl_parsenetrc("test.example.com", login, password, filename);
51   fail_unless(result == 1, "Host not found should return 1");
52   fail_unless(password[0] == 0, "password should not have been changed");
53   fail_unless(login[0] == 0, "login should not have been changed");
54
55   /*
56    * Test a non existent login in our netrc file.
57    */
58   memcpy(login, "me", 2);
59   result = Curl_parsenetrc("example.com", login, password, filename);
60   fail_unless(result == 0, "Host should be found");
61   fail_unless(password[0] == 0, "password should not have been changed");
62   fail_unless(strncmp(login, "me", 2) == 0, "login should not have been changed");
63
64   /*
65    * Test a non existent login and host in our netrc file.
66    */
67   memcpy(login, "me", 2);
68   result = Curl_parsenetrc("test.example.com", login, password, filename);
69   fail_unless(result == 1, "Host should be found");
70   fail_unless(password[0] == 0, "password should not have been changed");
71   fail_unless(strncmp(login, "me", 2) == 0, "login should not have been changed");
72
73   /*
74    * Test a non existent login (substring of an existing one) in our
75    * netrc file.
76    */
77   memcpy(login, "admi", 4);
78   result = Curl_parsenetrc("example.com", login, password, filename);
79   fail_unless(result == 0, "Host should be found");
80   fail_unless(password[0] == 0, "password should not have been changed");
81   fail_unless(strncmp(login, "admi", 4) == 0, "login should not have been changed");
82
83   /*
84    * Test a non existent login (superstring of an existing one)
85    * in our netrc file.
86    */
87   memcpy(login, "adminn", 6);
88   result = Curl_parsenetrc("example.com", login, password, filename);
89   fail_unless(result == 0, "Host should be found");
90   fail_unless(password[0] == 0, "password should not have been changed");
91   fail_unless(strncmp(login, "adminn", 6) == 0, "login should not have been changed");
92
93   /*
94    * Test for the first existing host in our netrc file
95    * with login[0] = 0.
96    */
97   login[0] = 0;
98   result = Curl_parsenetrc("example.com", login, password, filename);
99   fail_unless(result == 0, "Host should have been found");
100   fail_unless(strncmp(password, "passwd", 6) == 0,
101               "password should be 'passwd'");
102   fail_unless(strncmp(login, "admin", 5) == 0, "login should be 'admin'");
103
104   /*
105    * Test for the first existing host in our netrc file
106    * with login[0] != 0.
107    */
108   password[0] = 0;
109   result = Curl_parsenetrc("example.com", login, password, filename);
110   fail_unless(result == 0, "Host should have been found");
111   fail_unless(strncmp(password, "passwd", 6) == 0,
112               "password should be 'passwd'");
113   fail_unless(strncmp(login, "admin", 5) == 0, "login should be 'admin'");
114
115   /*
116    * Test for the second existing host in our netrc file
117    * with login[0] = 0.
118    */
119   password[0] = 0;
120   login[0] = 0;
121   result = Curl_parsenetrc("curl.example.com", login, password, filename);
122   fail_unless(result == 0, "Host should have been found");
123   fail_unless(strncmp(password, "none", 4) == 0,
124               "password should be 'none'");
125   fail_unless(strncmp(login, "none", 4) == 0, "login should be 'none'");
126
127   /*
128    * Test for the second existing host in our netrc file
129    * with login[0] != 0.
130    */
131   password[0] = 0;
132   result = Curl_parsenetrc("curl.example.com", login, password, filename);
133   fail_unless(result == 0, "Host should have been found");
134   fail_unless(strncmp(password, "none", 4) == 0,
135               "password should be 'none'");
136   fail_unless(strncmp(login, "none", 4) == 0, "login should be 'none'");
137
138   /* TODO:
139    * Test over the size limit password / login!
140    * Test files with a bad format
141    */
142 UNITTEST_STOP