This repository was archived by the owner on Mar 4, 2021. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtests.cpp
76 lines (63 loc) · 2 KB
/
tests.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
#define MKDATA_INLINE_IMPL
#include "mkdata.hpp"
#define MKCURL_INLINE_IMPL
#include "mkcurl.hpp"
#define MKIPLOOKUP_INLINE_IMPL
#include "mkiplookup.hpp"
#define MKMMDB_INLINE_IMPL
#include "mkmmdb.hpp"
#include "mkmock.hpp"
MKMOCK_DEFINE_HOOK(iplookup_results_good, bool);
MKMOCK_DEFINE_HOOK(db_open_country, bool);
MKMOCK_DEFINE_HOOK(db_open_asn, bool);
#define MKGEOIP_INLINE_IMPL // include implementation inline
#define MKGEOIP_MOCK // enable mocking
#include "mkgeoip.hpp"
#define CATCH_CONFIG_MAIN
#include "catch.hpp"
TEST_CASE("mk::geoip::isgood works") {
mk::geoip::LookupResults results;
results.probe_ip = "1.2.3.4";
results.probe_asn_string = "AS0";
results.probe_cc = "ZZ";
results.probe_org = "AS0 Organisation";
SECTION("when only probe_ip is empty") {
results.probe_ip = "";
REQUIRE(!mk::geoip::isgood(results));
}
SECTION("when only probe_asn_string is empty") {
results.probe_asn_string = "";
REQUIRE(!mk::geoip::isgood(results));
}
SECTION("when only probe_cc is empty") {
results.probe_cc = "";
REQUIRE(!mk::geoip::isgood(results));
}
SECTION("when only probe_org is empty") {
results.probe_org = "";
REQUIRE(!mk::geoip::isgood(results));
}
}
TEST_CASE("mk::geoip::lookup works") {
mk::geoip::LookupSettings settings;
settings.asn_db_path = "asn.mmdb";
settings.country_db_path = "country.mmdb";
SECTION("when mk::iplookup fails") {
MKMOCK_WITH_ENABLED_HOOK(iplookup_results_good, false, {
mk::geoip::LookupResults results = mk::geoip::lookup(settings);
REQUIRE(!results.good);
});
}
SECTION("when we cannot open the country db") {
MKMOCK_WITH_ENABLED_HOOK(db_open_country, false, {
mk::geoip::LookupResults results = mk::geoip::lookup(settings);
REQUIRE(!results.good);
});
}
SECTION("when we cannot open the ASN db") {
MKMOCK_WITH_ENABLED_HOOK(db_open_asn, false, {
mk::geoip::LookupResults results = mk::geoip::lookup(settings);
REQUIRE(!results.good);
});
}
}