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 }