1 /* $OpenBSD: test_parse.c,v 1.2 2021/12/14 21:25:27 deraadt Exp $ */ 2 /* 3 * Regress test for misc user/host/URI parsing functions. 4 * 5 * Placed in the public domain. 6 */ 7 8 #include "includes.h" 9 10 #include <sys/types.h> 11 #include <stdio.h> 12 #ifdef HAVE_STDINT_H 13 #include <stdint.h> 14 #endif 15 #include <stdlib.h> 16 #include <string.h> 17 18 #include "../test_helper/test_helper.h" 19 20 #include "log.h" 21 #include "misc.h" 22 23 void test_parse(void); 24 25 void 26 test_parse(void) 27 { 28 int port; 29 char *user, *host, *path; 30 31 TEST_START("misc_parse_user_host_path"); 32 ASSERT_INT_EQ(parse_user_host_path("someuser@some.host:some/path", 33 &user, &host, &path), 0); 34 ASSERT_STRING_EQ(user, "someuser"); 35 ASSERT_STRING_EQ(host, "some.host"); 36 ASSERT_STRING_EQ(path, "some/path"); 37 free(user); free(host); free(path); 38 TEST_DONE(); 39 40 TEST_START("misc_parse_user_ipv4_path"); 41 ASSERT_INT_EQ(parse_user_host_path("someuser@1.22.33.144:some/path", 42 &user, &host, &path), 0); 43 ASSERT_STRING_EQ(user, "someuser"); 44 ASSERT_STRING_EQ(host, "1.22.33.144"); 45 ASSERT_STRING_EQ(path, "some/path"); 46 free(user); free(host); free(path); 47 TEST_DONE(); 48 49 TEST_START("misc_parse_user_[ipv4]_path"); 50 ASSERT_INT_EQ(parse_user_host_path("someuser@[1.22.33.144]:some/path", 51 &user, &host, &path), 0); 52 ASSERT_STRING_EQ(user, "someuser"); 53 ASSERT_STRING_EQ(host, "1.22.33.144"); 54 ASSERT_STRING_EQ(path, "some/path"); 55 free(user); free(host); free(path); 56 TEST_DONE(); 57 58 TEST_START("misc_parse_user_[ipv4]_nopath"); 59 ASSERT_INT_EQ(parse_user_host_path("someuser@[1.22.33.144]:", 60 &user, &host, &path), 0); 61 ASSERT_STRING_EQ(user, "someuser"); 62 ASSERT_STRING_EQ(host, "1.22.33.144"); 63 ASSERT_STRING_EQ(path, "."); 64 free(user); free(host); free(path); 65 TEST_DONE(); 66 67 TEST_START("misc_parse_user_ipv6_path"); 68 ASSERT_INT_EQ(parse_user_host_path("someuser@[::1]:some/path", 69 &user, &host, &path), 0); 70 ASSERT_STRING_EQ(user, "someuser"); 71 ASSERT_STRING_EQ(host, "::1"); 72 ASSERT_STRING_EQ(path, "some/path"); 73 free(user); free(host); free(path); 74 TEST_DONE(); 75 76 TEST_START("misc_parse_uri"); 77 ASSERT_INT_EQ(parse_uri("ssh", "ssh://someuser@some.host:22/some/path", 78 &user, &host, &port, &path), 0); 79 ASSERT_STRING_EQ(user, "someuser"); 80 ASSERT_STRING_EQ(host, "some.host"); 81 ASSERT_INT_EQ(port, 22); 82 ASSERT_STRING_EQ(path, "some/path"); 83 free(user); free(host); free(path); 84 TEST_DONE(); 85 } 86