Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/lavabit/magma.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjpadkins <jacobpadkins@gmail.com>2017-04-12 09:06:45 +0300
committerjpadkins <jacobpadkins@gmail.com>2017-04-12 09:06:45 +0300
commit6af4cd981c242466c1477f8846d87840baea29a0 (patch)
tree6796bb7c413441297b671e001e96b145d398de08 /check/magma
parent3f8702674ce7e0a00c96966add0f40714e368c77 (diff)
parentd3f27275db0eba161ce2e46b8535df96b35b03c7 (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.c46
-rw-r--r--check/magma/core/core_check.h10
-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.c14
-rw-r--r--check/magma/network/network_check.h7
-rw-r--r--check/magma/servers/smtp/checkers_check.c2
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) {