aboutsummaryrefslogtreecommitdiffstats
path: root/channels/sip/reqresp_parser.c
diff options
context:
space:
mode:
authordvossel <dvossel@f38db490-d61c-443f-a65b-d21fe96a405b>2010-06-16 22:37:45 +0000
committerdvossel <dvossel@f38db490-d61c-443f-a65b-d21fe96a405b>2010-06-16 22:37:45 +0000
commita41428972c74e24671ecb2db653ee9008aeffc2d (patch)
tree0b5b8900ab03320b52632815e0bb647a96f1897f /channels/sip/reqresp_parser.c
parentb98f638598de7cd6bd4b1528ce9019190b2076b1 (diff)
addition of more parse_uri test cases
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@271056 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'channels/sip/reqresp_parser.c')
-rw-r--r--channels/sip/reqresp_parser.c54
1 files changed, 54 insertions, 0 deletions
diff --git a/channels/sip/reqresp_parser.c b/channels/sip/reqresp_parser.c
index 8b8136cdd..bb4fba0d7 100644
--- a/channels/sip/reqresp_parser.c
+++ b/channels/sip/reqresp_parser.c
@@ -516,6 +516,10 @@ AST_TEST_DEFINE(sip_parse_uri_test)
/* test 5 is for NULL input */
char uri6[] = "sip:name:secret@host:port;transport=tcp?headers=%40%40testblah&headers2=blah%20blah";
char uri7[] = "sip:name:secret@host:port;transport=tcp?headers=%40%40testblah&headers2=blah%20blah";
+ char uri8[] = "sip:host";
+ char uri9[] = "sip:host:port;transport=tcp?headers=%40%40testblah&headers2=blah%20blah";
+ char uri10[] = "host:port;transport=tcp?headers=%40%40testblah&headers2=blah%20blah";
+ char uri11[] = "host";
switch (cmd) {
case TEST_INIT:
@@ -601,6 +605,56 @@ AST_TEST_DEFINE(sip_parse_uri_test)
ast_test_status_update(test, "Test 7: providing no port and secret output parameters failed.\n");
res = AST_TEST_FAIL;
}
+
+ /* Test 8, verify parse_uri can handle a domain only uri */
+ name = pass = domain = port = transport = NULL;
+ if (parse_uri(uri8, "sip:,sips:", &name, &pass, &domain, &port, &transport) ||
+ strcmp(domain, "host") ||
+ !ast_strlen_zero(name)) {
+ ast_test_status_update(test, "Test 8: add port and unparsed header field failed.\n");
+ res = AST_TEST_FAIL;
+ }
+
+ /* Test 9, add port and unparsed header field with domain only uri*/
+ name = pass = domain = port = transport = NULL;
+ if (parse_uri(uri9, "sip:,sips:", &name, &pass, &domain, &port, &transport) ||
+ !ast_strlen_zero(name) ||
+ !ast_strlen_zero(pass) ||
+ strcmp(domain, "host") ||
+ strcmp(port, "port") ||
+ strcmp(transport, "tcp")) {
+ ast_test_status_update(test, "Test 9: domain only uri failed \n");
+ res = AST_TEST_FAIL;
+ }
+
+ /* Test 10, handle invalid/missing "sip:,sips:" scheme
+ * we expect parse_uri to return an error, but still parse
+ * the results correctly here */
+ name = pass = domain = port = transport = NULL;
+ if (!parse_uri(uri10, "sip:,sips:", &name, &pass, &domain, &port, &transport) ||
+ !ast_strlen_zero(name) ||
+ !ast_strlen_zero(pass) ||
+ strcmp(domain, "host") ||
+ strcmp(port, "port") ||
+ strcmp(transport, "tcp")) {
+ ast_test_status_update(test, "Test 10: missing \"sip:sips:\" scheme failed\n");
+ res = AST_TEST_FAIL;
+ }
+
+ /* Test 11, simple domain only URI with missing scheme
+ * we expect parse_uri to return an error, but still parse
+ * the results correctly here */
+ name = pass = domain = port = transport = NULL;
+ if (!parse_uri(uri11, "sip:,sips:", &name, &pass, &domain, &port, &transport) ||
+ !ast_strlen_zero(name) ||
+ !ast_strlen_zero(pass) ||
+ strcmp(domain, "host") ||
+ !ast_strlen_zero(port) ||
+ !ast_strlen_zero(transport)) {
+ ast_test_status_update(test, "Test 11: simple uri with missing scheme failed. \n");
+ res = AST_TEST_FAIL;
+ }
+
return res;
}