diff options
author | jpadkins <jacobpadkins@gmail.com> | 2017-04-12 09:06:45 +0300 |
---|---|---|
committer | jpadkins <jacobpadkins@gmail.com> | 2017-04-12 09:06:45 +0300 |
commit | 6af4cd981c242466c1477f8846d87840baea29a0 (patch) | |
tree | 6796bb7c413441297b671e001e96b145d398de08 /check/magma | |
parent | 3f8702674ce7e0a00c96966add0f40714e368c77 (diff) | |
parent | d3f27275db0eba161ce2e46b8535df96b35b03c7 (diff) |
Merge branch 'develop' of https://github.com/lavabit/magma into feature/more-camel-tests
Diffstat (limited to 'check/magma')
-rw-r--r-- | check/magma/core/core_check.c | 46 | ||||
-rw-r--r-- | check/magma/core/core_check.h | 10 | ||||
-rw-r--r-- | check/magma/core/ip_check.c (renamed from check/magma/network/address_check.c) | 67 | ||||
-rw-r--r-- | check/magma/network/network_check.c | 14 | ||||
-rw-r--r-- | check/magma/network/network_check.h | 7 | ||||
-rw-r--r-- | check/magma/servers/smtp/checkers_check.c | 2 |
6 files changed, 121 insertions, 25 deletions
diff --git a/check/magma/core/core_check.c b/check/magma/core/core_check.c index 04d2b501..1cfc279a 100644 --- a/check/magma/core/core_check.c +++ b/check/magma/core/core_check.c @@ -872,6 +872,34 @@ START_TEST (check_bitwise) } END_TEST +START_TEST (check_ip_private_s) { + + log_disable(); + bool_t result = true; + stringer_t *errmsg = MANAGEDBUF(1024); + + if (status()) result = check_ip_private_scheck(errmsg); + + log_test("CORE / HOST / ADDRESS / PRIVATE / SINGLE THREADED:", errmsg); + ck_assert_msg(result, st_char_get(errmsg)); + +} +END_TEST + +START_TEST (check_ip_localhost_s) { + + log_disable(); + bool_t result = true; + stringer_t *errmsg = MANAGEDBUF(1024); + + if (status()) result = check_ip_localhost_scheck(errmsg); + + log_test("CORE / HOST / ADDRESS / LOCAL / SINGLE THREADED:", errmsg); + ck_assert_msg(result, st_char_get(errmsg)); + +} +END_TEST + Suite * suite_check_core(void) { Suite *s = suite_create("\tCore"); @@ -879,7 +907,9 @@ Suite * suite_check_core(void) { suite_check_testcase(s, "CORE", "Parsers / Digits", check_digits); suite_check_testcase(s, "CORE", "Parsers / Clamp", check_clamp); suite_check_testcase(s, "CORE", "Parsers / Capitalization", check_capitalization); + suite_check_testcase(s, "CORE", "Classify / ASCII", check_classify); + suite_check_testcase(s, "CORE", "Strings / Constants", check_constants); suite_check_testcase(s, "CORE", "Strings / Allocation", check_allocation); suite_check_testcase(s, "CORE", "Strings / Reallocation", check_reallocation); @@ -890,16 +920,28 @@ Suite * suite_check_core(void) { suite_check_testcase(s, "CORE", "Strings / Compare", check_compare); suite_check_testcase(s, "CORE", "Strings / Binary Search", check_bsearch); suite_check_testcase(s, "CORE", "Strings / Bitwise Operations", check_bitwise); + suite_check_testcase(s, "CORE", "Memory / Checksum", check_checksum); suite_check_testcase(s, "CORE", "Memory / Secure Address Range", check_secmem); - suite_check_testcase(s, "CORE", "System / Signal Names", check_signames_s); - suite_check_testcase(s, "CORE", "System / Error Names", check_errnames_s); + + suite_check_testcase(s, "CORE", "Host / System / Signal Names", check_signames_s); + suite_check_testcase(s, "CORE", "Host / System / Error Names", check_errnames_s); + suite_check_testcase(s, "CORE", "Host / Address / Standard / S", check_address_standard_s); + suite_check_testcase(s, "CORE", "Host / Address / Presentation / S", check_address_presentation_s); + suite_check_testcase(s, "CORE", "Host / Address / Reversed / S", check_address_reversed_s); + suite_check_testcase(s, "CORE", "Host / Address / Subnet / S", check_address_subnet_s); + suite_check_testcase(s, "CORE", "Host / Address / Segment / S", check_address_segment_s); + suite_check_testcase(s, "CORE", "Host / Address / Octet / S", check_address_octet_s); + suite_check_testcase(s, "CORE", "Host / Address / Local / S", check_ip_localhost_s); + suite_check_testcase(s, "CORE", "Host / Address / Private / S", check_ip_private_s); + suite_check_testcase(s, "CORE", "Encoding / Quoted Printable", check_qp); suite_check_testcase(s, "CORE", "Encoding / Hex", check_hex); suite_check_testcase(s, "CORE", "Encoding / URL", check_url); suite_check_testcase(s, "CORE", "Encoding / Base64", check_base64); suite_check_testcase(s, "CORE", "Encoding / Zbase32", check_zbase32); suite_check_testcase(s, "CORE", "Encoding / Network Byte Order/S", check_nbo_s); + suite_check_testcase(s, "CORE", "Indexes / Linked/S", check_inx_linked_s); suite_check_testcase(s, "CORE", "Indexes / Linked/M", check_inx_linked_m); suite_check_testcase(s, "CORE", "Indexes / Hashed/S", check_inx_hashed_s); diff --git a/check/magma/core/core_check.h b/check/magma/core/core_check.h index 61bf6624..c3ee5ca1 100644 --- a/check/magma/core/core_check.h +++ b/check/magma/core/core_check.h @@ -104,4 +104,14 @@ bool_t check_checksum_fuzz_sthread(void); bool_t check_checksum_fixed_sthread(void); bool_t check_checksum_loop_sthread(void); +/// address_check.c +void check_address_octet_s (int _i CK_ATTRIBUTE_UNUSED); +void check_address_presentation_s (int _i CK_ATTRIBUTE_UNUSED); +void check_address_reversed_s (int _i CK_ATTRIBUTE_UNUSED); +void check_address_segment_s (int _i CK_ATTRIBUTE_UNUSED); +void check_address_standard_s (int _i CK_ATTRIBUTE_UNUSED); +void check_address_subnet_s (int _i CK_ATTRIBUTE_UNUSED); +bool_t check_ip_private_scheck(stringer_t *errmsg); +bool_t check_ip_localhost_scheck(stringer_t *errmsg); + #endif diff --git a/check/magma/network/address_check.c b/check/magma/core/ip_check.c index 6d7871ca..7ecb8ba3 100644 --- a/check/magma/network/address_check.c +++ b/check/magma/core/ip_check.c @@ -1,8 +1,8 @@ /** - * @file /check/magma/network/address_check.c + * @file /magma/check/magma/core/ip_check.c * - * @brief Address unit tests. + * @brief Various checks designed to make sure the IP address interface works as expected. */ #include "magma_check.h" @@ -53,7 +53,7 @@ void check_address_standard_s (int _i CK_ATTRIBUTE_UNUSED) { st_free(buffer); } - log_test("NETWORK / ADDRESSES / STANDARD / SINGLE THREADED:", errmsg); + log_test("CORE / HOST / ADDRESS / STANDARD / SINGLE THREADED:", errmsg); ck_assert_msg(!errmsg, st_char_get(errmsg)); } @@ -103,7 +103,7 @@ void check_address_presentation_s (int _i CK_ATTRIBUTE_UNUSED) { st_free(buffer); } - log_test("NETWORK / ADDRESSES / PRESENTATION / SINGLE THREADED:", errmsg); + log_test("CORE / HOST / ADDRESS / PRESENTATION / SINGLE THREADED:", errmsg); ck_assert_msg(!errmsg, st_char_get(errmsg)); } @@ -154,7 +154,7 @@ void check_address_reversed_s (int _i CK_ATTRIBUTE_UNUSED) { st_free(buffer); } - log_test("NETWORK / ADDRESSES / REVERSED / SINGLE THREADED:", errmsg); + log_test("CORE / HOST / ADDRESS / REVERSED / SINGLE THREADED:", errmsg); ck_assert_msg(!errmsg, st_char_get(errmsg)); } @@ -204,7 +204,7 @@ void check_address_subnet_s (int _i CK_ATTRIBUTE_UNUSED) { st_free(buffer); } - log_test("NETWORK / ADDRESSES / SUBNET / SINGLE THREADED:", errmsg); + log_test("CORE / HOST / ADDRESS / SUBNET / SINGLE THREADED:", errmsg); ck_assert_msg(!errmsg, st_char_get(errmsg)); } @@ -258,7 +258,7 @@ void check_address_segment_s (int _i CK_ATTRIBUTE_UNUSED) { st_free(buffer); } - log_test("NETWORK / ADDRESSES / SEGMENT / SINGLE THREADED:", errmsg); + log_test("CORE / HOST / ADDRESS / SEGMENT / SINGLE THREADED:", errmsg); ck_assert_msg(!errmsg, st_char_get(errmsg)); } @@ -315,6 +315,57 @@ void check_address_octet_s (int _i CK_ATTRIBUTE_UNUSED) { st_free(buffer); } - log_test("NETWORK / ADDRESSES / OCTET / SINGLE THREADED:", errmsg); + log_test("CORE / HOST / ADDRESS / OCTET / SINGLE THREADED:", errmsg); ck_assert_msg(!errmsg, st_char_get(errmsg)); } + +bool_t check_ip_private_scheck(stringer_t *errmsg) { + + st_sprint(errmsg, "This check needs love. Touch me tender, and finish me off."); + return false; + + /// MEDIUM: Write the private IP address checks. + /// + /// Use the ip_addr_st() function to turn test addresses into IP address structs and confirm ip_private() returns + /// the correct response. + /// + /// Generate random addresses in the 10.0.0.0/8 range and verify the outcome. + /// Generate random addresses in the 127.0.0.0/8 range and verify the outcome (localhost). + /// Generate random addresses in the 172.16.0.0/12 range and verify the outcome. + /// Generate random addresses in the 192.168.0.0/16 range and verify the outcome. + /// Generate random addresses in the 72.0.0.0/8 and 172.0.0.0/8 ranges then verify the outcome (non-private). + /// + /// Generate an address using ::1 and verify the outcome. + /// Generate random addresses in the fc00::/7 range and verify the outcome. + /// Generate random addresses in the (pick well known non-private prefix)::/7 range and verify the outcome. + /// + /// Generate random addresses in the private IPv4 ranges above and map them into the IPv4 to IPv6 compatability/translation + /// range... ::ffff:0:0/96 and verify the outcome. + /// + /// Finally, call ip_private() using an invalid IP address struct. This includes passing NULL. Providing an IP struct + /// with an address family other than AF_INET or AF_INET6 and any other edge case you can think of. + +} + +bool_t check_ip_localhost_scheck(stringer_t *errmsg) { + + st_sprint(errmsg, "This check needs love. Touch me tender, and finish me off."); + return false; + + /// MEDIUM: Write the localhost IP address checks. + /// + /// Use the ip_addr_st() function to turn test addresses into IP address structs and confirm ip_localhost() returns + /// the correct response. + /// + /// Generate random addresses in the 127.0.0.1/8 range and verify the outcome. + /// Generate random addresses in the 72.0.0.0/8 and 172.0.0.0/8 ranges then verify the outcome (non-private). + /// + /// Generate an address using ::1 and verify the outcome. + /// Generate random addresses in the (pick well known non-private prefix)::/7 range and verify the outcome. + /// + /// Generate IPv4 addresses in the range above and map them into the IPv4 to IPv6 compatability/translation + /// range... ::ffff:0:0/96 and verify the outcome. + /// + /// Finally, call ip_localhost() using an invalid IP address struct. This includes passing NULL. Providing an IP struct + /// with an address family other than AF_INET or AF_INET6 and any other edge case you can think of. +} diff --git a/check/magma/network/network_check.c b/check/magma/network/network_check.c index 086fa5ba..a0594822 100644 --- a/check/magma/network/network_check.c +++ b/check/magma/network/network_check.c @@ -2,7 +2,7 @@ /** * @file /check/magma/network/network_check.c * - * @brief Check the network functions. + * @brief Check the network module, and the various protocol agnostic connection/client interfaces. */ #include "magma_check.h" @@ -11,12 +11,12 @@ Suite * suite_check_network(void) { Suite *s = suite_create("\tNetwork"); - suite_check_testcase(s, "NETWORK", "Network / Address / Standard / S", check_address_standard_s); - suite_check_testcase(s, "NETWORK", "Network / Address / Presentation / S", check_address_presentation_s); - suite_check_testcase(s, "NETWORK", "Network / Address / Reversed / S", check_address_reversed_s); - suite_check_testcase(s, "NETWORK", "Network / Address / Subnet / S", check_address_subnet_s); - suite_check_testcase(s, "NETWORK", "Network / Address / Segment / S", check_address_segment_s); - suite_check_testcase(s, "NETWORK", "Network / Address / Octet / S", check_address_octet_s); + // The IP address checks were the only thing handled by this suite. Those checks have since moved to + // to core. The empty suite remains to remind us what needs doing. + /// MEDIUM: Write checks which stress the connection accept logic. + /// MEDIUM: Write checks for the con_write/con_read/con_read_line interfaces. + /// MEDIUM: Write checks for the client_write/client_read/client_read_line interfaces. + /// return s; } diff --git a/check/magma/network/network_check.h b/check/magma/network/network_check.h index a94d81fe..b18f0cb0 100644 --- a/check/magma/network/network_check.h +++ b/check/magma/network/network_check.h @@ -8,13 +8,6 @@ #ifndef NETWORK_CHECK_H #define NETWORK_CHECK_H -/// address_check.c -void check_address_octet_s (int _i CK_ATTRIBUTE_UNUSED); -void check_address_presentation_s (int _i CK_ATTRIBUTE_UNUSED); -void check_address_reversed_s (int _i CK_ATTRIBUTE_UNUSED); -void check_address_segment_s (int _i CK_ATTRIBUTE_UNUSED); -void check_address_standard_s (int _i CK_ATTRIBUTE_UNUSED); -void check_address_subnet_s (int _i CK_ATTRIBUTE_UNUSED); Suite * suite_check_network(void); diff --git a/check/magma/servers/smtp/checkers_check.c b/check/magma/servers/smtp/checkers_check.c index 2b96f48d..a031707a 100644 --- a/check/magma/servers/smtp/checkers_check.c +++ b/check/magma/servers/smtp/checkers_check.c @@ -24,7 +24,7 @@ bool_t check_smtp_checkers_greylist_sthread(stringer_t *errmsg) { con.smtp.mailfrom = NULLER("check@example.com"); con.network.reverse.ip = mm_alloc(sizeof(ip_t)); - ip_str_addr("127.0.0.1", con.network.reverse.ip); + ip_addr_st("127.0.0.1", con.network.reverse.ip); if (!(addr = con_addr_reversed(&con, addr)) || st_sprint(key, "magma.greylist.%lu.%.*s", prefs.usernum, st_length_int(addr), st_char_get(addr)) <= 0) { |