aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lib/url.c2
-rw-r--r--set.h5
-rw-r--r--tests/check_util.c66
3 files changed, 72 insertions, 1 deletions
diff --git a/lib/url.c b/lib/url.c
index e4deac78..c6fdc4c8 100644
--- a/lib/url.c
+++ b/lib/url.c
@@ -99,7 +99,7 @@ int url_set( url_t *url, char *set_url )
url->port = 80;
else if( url->proto == PROTO_HTTPS )
url->port = 443;
- else if( url->proto == PROTO_SOCKS4 || url->proto == PROTO_SOCKS4 )
+ else if( url->proto == PROTO_SOCKS4 || url->proto == PROTO_SOCKS5 )
url->port = 1080;
}
diff --git a/set.h b/set.h
index 37d2430f..32f7a0e6 100644
--- a/set.h
+++ b/set.h
@@ -23,6 +23,9 @@
Suite 330, Boston, MA 02111-1307 USA
*/
+#ifndef __SET_H__
+#define __SET_H__
+
/* This used to be specific to irc_t structures, but it's more generic now
(so it can also be used for account_t structs). It's pretty simple, but
so far pretty useful.
@@ -87,3 +90,5 @@ char *set_eval_bool( set_t *set, char *value );
char *set_eval_to_char( set_t *set, char *value );
char *set_eval_ops( set_t *set, char *value );
char *set_eval_charset( set_t *set, char *value );
+
+#endif /* __SET_H__ */
diff --git a/tests/check_util.c b/tests/check_util.c
index ee365735..284ddba3 100644
--- a/tests/check_util.c
+++ b/tests/check_util.c
@@ -6,6 +6,7 @@
#include "irc.h"
#include "set.h"
#include "misc.h"
+#include "url.h"
START_TEST(test_strip_linefeed)
{
@@ -42,6 +43,66 @@ START_TEST(test_strip_newlines)
}
END_TEST
+START_TEST(test_set_url_http)
+ url_t url;
+
+ fail_if (0 == url_set(&url, "http://host/"));
+ fail_unless (!strcmp(url.host, "host"));
+ fail_unless (!strcmp(url.file, "/"));
+ fail_unless (!strcmp(url.user, ""));
+ fail_unless (!strcmp(url.pass, ""));
+ fail_unless (url.proto == PROTO_HTTP);
+ fail_unless (url.port == 80);
+END_TEST
+
+START_TEST(test_set_url_https)
+ url_t url;
+
+ fail_if (0 == url_set(&url, "https://ahost/AimeeMann"));
+ fail_unless (!strcmp(url.host, "ahost"));
+ fail_unless (!strcmp(url.file, "/AimeeMann"));
+ fail_unless (!strcmp(url.user, ""));
+ fail_unless (!strcmp(url.pass, ""));
+ fail_unless (url.proto == PROTO_HTTPS);
+ fail_unless (url.port == 443);
+END_TEST
+
+START_TEST(test_set_url_port)
+ url_t url;
+
+ fail_if (0 == url_set(&url, "https://ahost:200/Lost/In/Space"));
+ fail_unless (!strcmp(url.host, "ahost"));
+ fail_unless (!strcmp(url.file, "/Lost/In/Space"));
+ fail_unless (!strcmp(url.user, ""));
+ fail_unless (!strcmp(url.pass, ""));
+ fail_unless (url.proto == PROTO_HTTPS);
+ fail_unless (url.port == 200);
+END_TEST
+
+START_TEST(test_set_url_username)
+ url_t url;
+
+ fail_if (0 == url_set(&url, "socks4://user@ahost/Space"));
+ fail_unless (!strcmp(url.host, "ahost"));
+ fail_unless (!strcmp(url.file, "/Space"));
+ fail_unless (!strcmp(url.user, "user"));
+ fail_unless (!strcmp(url.pass, ""));
+ fail_unless (url.proto == PROTO_SOCKS4);
+ fail_unless (url.port == 1080);
+END_TEST
+
+START_TEST(test_set_url_username_pwd)
+ url_t url;
+
+ fail_if (0 == url_set(&url, "socks5://user:pass@ahost/"));
+ fail_unless (!strcmp(url.host, "ahost"));
+ fail_unless (!strcmp(url.file, "/"));
+ fail_unless (!strcmp(url.user, "user"));
+ fail_unless (!strcmp(url.pass, "pass"));
+ fail_unless (url.proto == PROTO_SOCKS5);
+ fail_unless (url.port == 1080);
+END_TEST
+
Suite *util_suite (void)
{
Suite *s = suite_create("Util");
@@ -49,5 +110,10 @@ Suite *util_suite (void)
suite_add_tcase (s, tc_core);
tcase_add_test (tc_core, test_strip_linefeed);
tcase_add_test (tc_core, test_strip_newlines);
+ tcase_add_test (tc_core, test_set_url_http);
+ tcase_add_test (tc_core, test_set_url_https);
+ tcase_add_test (tc_core, test_set_url_port);
+ tcase_add_test (tc_core, test_set_url_username);
+ tcase_add_test (tc_core, test_set_url_username_pwd);
return s;
}