| 28 | #include "test_parse_authenticate_body.h" |
| 29 | |
| 30 | void test_parse_uri(void) |
| 31 | { |
| 32 | struct sip_uri u; |
| 33 | str in; |
| 34 | |
| 35 | /* Basic URI parsing tests */ |
| 36 | |
| 37 | ok(parse_uri(STR_L("sip:@atlanta.org"), &u) < 0, "puri-0"); |
| 38 | |
| 39 | /* Notice how illegal user chars are allowed in these two tests! |
| 40 | * This is by design, since "quick parsing" != "full RFC syntax validation" |
| 41 | */ |
| 42 | ok(parse_uri(STR_L("sip:%@atlanta.org"), &u) == 0, "puri-0.1"); |
| 43 | ok(parse_uri(STR_L("sip:%4`@atlanta.org"), &u) == 0, "puri-0.2"); |
| 44 | |
| 45 | ok(parse_uri(STR_L("sip:%40@atlanta.org"), &u) == 0, "puri-0.3"); |
| 46 | ok(parse_uri(STR_L("sip:atlanta.org"), &u) == 0, "puri-0.4"); |
| 47 | ok(!u.user.s, "puri-0.5"); |
| 48 | ok(u.user.len == 0, "puri-0.6"); |
| 49 | |
| 50 | /* URI port parsing tests, with or w/o a username */ |
| 51 | ok(!parse_uri(STR_L("sip:localhost@atlanta.org:0"), &u), "puri-0.7"); |
| 52 | ok(!parse_uri(STR_L("sip:localhost@atlanta.org:65535"), &u), "puri-0.8"); |
| 53 | ok(parse_uri(STR_L("sip:localhost@atlanta.org:65536"), &u), "puri-0.9"); |
| 54 | ok(parse_uri(STR_L("sip:localhost@atlanta.org:55555555555555555555"), &u), "puri-0.10"); |
| 55 | ok(!parse_uri(STR_L("sip:localhost:0@atlanta.org"), &u), "puri-0.11"); |
| 56 | ok(!parse_uri(STR_L("sip:localhost:65535@atlanta.org"), &u), "puri-0.12"); |
| 57 | ok(!parse_uri(STR_L("sip:localhost:65536@atlanta.org"), &u), "puri-0.13"); |
| 58 | ok(!parse_uri(STR_L("sip:localhost:5555555555555@atlanta.org"), &u), "puri-0.14"); |
| 59 | ok(!parse_uri(STR_L("sip:localhost:0"), &u), "puri-0.15"); |
| 60 | ok(!parse_uri(STR_L("sip:localhost:65535"), &u), "puri-0.16"); |
| 61 | ok(parse_uri(STR_L("sip:localhost:65536"), &u), "puri-0.17"); |
| 62 | ok(parse_uri(STR_L("sip:localhost:55555555555"), &u), "puri-0.18"); |
| 63 | |
| 64 | in = *_str("sip:alice@atlanta.org;user=phone"); |
| 65 | ok(parse_uri(in.s, in.len, &u) == 0, "puri-1"); |
| 66 | ok(str_match(&u.user_param, const_str("user=phone")), "puri-2"); |
| 67 | ok(str_match(&u.user_param_val, const_str("phone")), "puri-3"); |
| 68 | |
| 69 | in = *_str("sip:alice@atlanta.org;user=phone;gr=x"); |
| 70 | ok(parse_uri(in.s, in.len, &u) == 0, "puri-4"); |
| 71 | ok(str_match(&u.user_param, const_str("user=phone")), "puri-5"); |
| 72 | ok(str_match(&u.user_param_val, const_str("phone")), "puri-6"); |
| 73 | ok(str_match(&u.gr, const_str("gr=x")), "puri-7"); |
| 74 | ok(str_match(&u.gr_val, const_str("x")), "puri-8"); |
| 75 | |
| 76 | in = *_str("sip:alice@atlanta.org;transport=udp;user=phone;maddr=1.2.3.4;gr"); |
| 77 | ok(parse_uri(in.s, in.len, &u) == 0, "puri-9"); |
| 78 | ok(str_match(&u.user, const_str("alice")), "puri-10"); |
| 79 | ok(str_match(&u.host, const_str("atlanta.org")), "puri-11"); |
| 80 | ok(str_match(&u.transport, const_str("transport=udp")), "puri-12"); |
| 81 | ok(str_match(&u.transport_val, const_str("udp")), "puri-13"); |
| 82 | ok(str_match(&u.user_param, const_str("user=phone")), "puri-14"); |
| 83 | ok(str_match(&u.user_param_val, const_str("phone")), "puri-15"); |
| 84 | ok(str_match(&u.maddr, const_str("maddr=1.2.3.4")), "puri-16"); |
| 85 | ok(str_match(&u.maddr_val, const_str("1.2.3.4")), "puri-17"); |
| 86 | ok(str_match(&u.gr, const_str("gr")), "puri-18"); |
| 87 | ok(str_match(&u.gr_val, const_str("")), "puri-19"); |
no test coverage detected