10 TEST_F(LibraryTest, ParseSoaAnyReplyOK) {
12 pkt.set_qid(0x1234).set_response().set_aa()
13 .add_question(new DNSQuestion("example.com", T_ANY))\
14 .add_answer(new DNSARR("example.com", 0x01020304, {2,3,4,5}))
15 .add_answer(new DNSMxRR("example.com", 100, 100, "mx1.example.com"))
16 .add_answer(new DNSMxRR("example.com", 100, 200, "mx2.example.com"))
17 .add_answer(new DNSSoaRR("example.com", 100,
18 "soa1.example.com", "fred.example.com",
20 std::vector<byte> data = pkt.data();
22 struct ares_soa_reply* soa = nullptr;
23 EXPECT_EQ(ARES_SUCCESS, ares_parse_soa_reply(data.data(), data.size(), &soa));
24 ASSERT_NE(nullptr, soa);
25 EXPECT_EQ("soa1.example.com", std::string(soa->nsname));
26 EXPECT_EQ("fred.example.com", std::string(soa->hostmaster));
27 EXPECT_EQ(1, soa->serial);
28 EXPECT_EQ(2, soa->refresh);
29 EXPECT_EQ(3, soa->retry);
30 EXPECT_EQ(4, soa->expire);
31 EXPECT_EQ(5, soa->minttl);
35 TEST_F(LibraryTest, ParseSoaAnyReplyErrors) {
37 pkt.set_qid(0x1234).set_response().set_aa()
38 .add_question(new DNSQuestion("example.com", T_ANY))
39 .add_answer(new DNSSoaRR("example.com", 100,
40 "soa1.example.com", "fred.example.com",
42 std::vector<byte> data;
43 struct ares_soa_reply* soa = nullptr;
46 pkt.questions_.clear();
48 EXPECT_EQ(ARES_EBADRESP, ares_parse_soa_reply(data.data(), data.size(), &soa));
49 pkt.add_question(new DNSQuestion("example.com", T_ANY));
53 pkt.questions_.clear();
54 pkt.add_question(new DNSQuestion("Axample.com", T_ANY));
56 EXPECT_EQ(ARES_EBADRESP, ares_parse_soa_reply(data.data(), data.size(), &soa));
57 pkt.questions_.clear();
58 pkt.add_question(new DNSQuestion("example.com", T_ANY));
62 pkt.add_question(new DNSQuestion("example.com", T_ANY));
64 EXPECT_EQ(ARES_EBADRESP, ares_parse_soa_reply(data.data(), data.size(), &soa));
65 pkt.questions_.clear();
66 pkt.add_question(new DNSQuestion("example.com", T_ANY));
68 // Wrong sort of answer.
70 pkt.add_answer(new DNSMxRR("example.com", 100, 100, "mx1.example.com"));
72 EXPECT_EQ(ARES_EBADRESP, ares_parse_soa_reply(data.data(), data.size(), &soa));
74 pkt.add_answer(new DNSSoaRR("example.com", 100,
75 "soa1.example.com", "fred.example.com",
81 EXPECT_EQ(ARES_EBADRESP, ares_parse_soa_reply(data.data(), data.size(), &soa));
82 pkt.add_answer(new DNSSoaRR("example.com", 100,
83 "soa1.example.com", "fred.example.com",
88 for (size_t len = 1; len < data.size(); len++) {
89 EXPECT_EQ(ARES_EBADRESP, ares_parse_soa_reply(data.data(), len, &soa));
93 TEST_F(LibraryTest, ParseSoaAnyReplyAllocFail) {
95 pkt.set_qid(0x1234).set_response().set_aa()
96 .add_question(new DNSQuestion("example.com", T_ANY))
97 .add_answer(new DNSSoaRR("example.com", 100,
98 "soa1.example.com", "fred.example.com",
100 std::vector<byte> data = pkt.data();
101 struct ares_soa_reply* soa = nullptr;
103 for (int ii = 1; ii <= 5; ii++) {
106 EXPECT_EQ(ARES_ENOMEM, ares_parse_soa_reply(data.data(), data.size(), &soa)) << ii;