url-parser.c

URL parsing library
git clone git://git.finwo.net/lib/url-parser.c
Log | Files | Refs | README | LICENSE

unix-socket.test.c (4785B)


      1 #include "url-parser.h"
      2 #include "test.h"
      3 
      4 void test_unix_triple_slash() {
      5     struct parsed_url *purl = parse_url("unix:///path/to/socket");
      6     ASSERT("unix triple slash", purl != NULL);
      7     ASSERT_STRING_EQUALS("unix", purl->scheme);
      8     ASSERT_EQUALS(NULL, purl->host);
      9     ASSERT_EQUALS(NULL, purl->port);
     10     ASSERT_STRING_EQUALS("/path/to/socket", purl->path);
     11     ASSERT_EQUALS(NULL, purl->username);
     12     ASSERT_EQUALS(NULL, purl->password);
     13     parsed_url_free(purl);
     14 }
     15 
     16 void test_unix_triple_slash_with_credentials() {
     17     struct parsed_url *purl = parse_url("unix://user:pass@/path/to/socket");
     18     ASSERT("unix with credentials", purl != NULL);
     19     ASSERT_STRING_EQUALS("unix", purl->scheme);
     20     ASSERT_EQUALS(NULL, purl->host);
     21     ASSERT_EQUALS(NULL, purl->port);
     22     ASSERT_STRING_EQUALS("/path/to/socket", purl->path);
     23     ASSERT_STRING_EQUALS("user", purl->username);
     24     ASSERT_STRING_EQUALS("pass", purl->password);
     25     parsed_url_free(purl);
     26 }
     27 
     28 void test_unix_single_slash() {
     29     struct parsed_url *purl = parse_url("unix:/path/to/socket");
     30     ASSERT("unix single slash", purl != NULL);
     31     ASSERT_STRING_EQUALS("unix", purl->scheme);
     32     ASSERT_EQUALS(NULL, purl->host);
     33     ASSERT_EQUALS(NULL, purl->port);
     34     ASSERT_STRING_EQUALS("/path/to/socket", purl->path);
     35     ASSERT_EQUALS(NULL, purl->username);
     36     ASSERT_EQUALS(NULL, purl->password);
     37     parsed_url_free(purl);
     38 }
     39 
     40 void test_unix_no_slash() {
     41     struct parsed_url *purl = parse_url("unix:filename");
     42     ASSERT("unix no slash", purl != NULL);
     43     ASSERT_STRING_EQUALS("unix", purl->scheme);
     44     ASSERT_EQUALS(NULL, purl->host);
     45     ASSERT_EQUALS(NULL, purl->port);
     46     ASSERT_STRING_EQUALS("filename", purl->path);
     47     ASSERT_EQUALS(NULL, purl->username);
     48     ASSERT_EQUALS(NULL, purl->password);
     49     parsed_url_free(purl);
     50 }
     51 
     52 void test_unix_double_slash_no_host() {
     53     struct parsed_url *purl = parse_url("unix://path/to/socket");
     54     ASSERT("unix double slash no host", purl != NULL);
     55     ASSERT_STRING_EQUALS("unix", purl->scheme);
     56     ASSERT_EQUALS(NULL, purl->host);
     57     ASSERT_EQUALS(NULL, purl->port);
     58     ASSERT_STRING_EQUALS("path/to/socket", purl->path);
     59     ASSERT_EQUALS(NULL, purl->username);
     60     ASSERT_EQUALS(NULL, purl->password);
     61     parsed_url_free(purl);
     62 }
     63 
     64 void test_unix_double_slash_with_credentials_no_leading_slash() {
     65     struct parsed_url *purl = parse_url("unix://user:pass@path/to/socket");
     66     ASSERT("unix double slash with credentials no leading slash", purl != NULL);
     67     ASSERT_STRING_EQUALS("unix", purl->scheme);
     68     ASSERT_EQUALS(NULL, purl->host);
     69     ASSERT_EQUALS(NULL, purl->port);
     70     ASSERT_STRING_EQUALS("path/to/socket", purl->path);
     71     ASSERT_STRING_EQUALS("user", purl->username);
     72     ASSERT_STRING_EQUALS("pass", purl->password);
     73     parsed_url_free(purl);
     74 }
     75 
     76 void test_redis_unix_socket() {
     77     struct parsed_url *purl = parse_url("redis:///var/run/redis.sock");
     78     ASSERT("redis unix socket", purl != NULL);
     79     ASSERT_STRING_EQUALS("redis", purl->scheme);
     80     ASSERT_EQUALS(NULL, purl->host);
     81     ASSERT_EQUALS(NULL, purl->port);
     82     ASSERT_STRING_EQUALS("/var/run/redis.sock", purl->path);
     83     parsed_url_free(purl);
     84 }
     85 
     86 void test_postgres_unix_socket() {
     87     struct parsed_url *purl = parse_url("postgres:///var/run/postgres.sock");
     88     ASSERT("postgres unix socket", purl != NULL);
     89     ASSERT_STRING_EQUALS("postgres", purl->scheme);
     90     ASSERT_EQUALS(NULL, purl->host);
     91     ASSERT_EQUALS(NULL, purl->port);
     92     ASSERT_STRING_EQUALS("/var/run/postgres.sock", purl->path);
     93     parsed_url_free(purl);
     94 }
     95 
     96 void test_unix_socket_with_relative_path() {
     97     struct parsed_url *purl = parse_url("unix:redis.sock");
     98     ASSERT("unix relative path", purl != NULL);
     99     ASSERT_STRING_EQUALS("unix", purl->scheme);
    100     ASSERT_STRING_EQUALS("redis.sock", purl->path);
    101     parsed_url_free(purl);
    102 }
    103 
    104 void test_unix_socket_credentials_with_port() {
    105     struct parsed_url *purl = parse_url("unix://user:pass@/path/to/sock:8080");
    106     ASSERT("unix with credentials and port", purl != NULL);
    107     ASSERT_STRING_EQUALS("unix", purl->scheme);
    108     ASSERT_EQUALS(NULL, purl->host);
    109     ASSERT_EQUALS(NULL, purl->port);
    110     ASSERT_STRING_EQUALS("/path/to/sock:8080", purl->path);
    111     ASSERT_STRING_EQUALS("user", purl->username);
    112     ASSERT_STRING_EQUALS("pass", purl->password);
    113     parsed_url_free(purl);
    114 }
    115 
    116 int main() {
    117     RUN(test_unix_triple_slash);
    118     RUN(test_unix_triple_slash_with_credentials);
    119     RUN(test_unix_single_slash);
    120     RUN(test_unix_no_slash);
    121     RUN(test_unix_double_slash_no_host);
    122     RUN(test_unix_double_slash_with_credentials_no_leading_slash);
    123     RUN(test_redis_unix_socket);
    124     RUN(test_postgres_unix_socket);
    125     RUN(test_unix_socket_with_relative_path);
    126     RUN(test_unix_socket_credentials_with_port);
    127     return TEST_REPORT();
    128 }