mirror of
https://gitlab.isc.org/isc-projects/kea
synced 2025-08-31 14:05:33 +00:00
[2656] Update std::string CNAME constructor to use the MasterLexer
Also adjust tests.
This commit is contained in:
@@ -3649,7 +3649,7 @@ TYPED_TEST(DatabaseClientTest, deleteRRset) {
|
||||
RRType::CNAME(), this->rrttl_));
|
||||
this->rrset_->addRdata(rdata::createRdata(this->rrset_->getType(),
|
||||
this->rrset_->getClass(),
|
||||
"www.example.org"));
|
||||
"www.example.org."));
|
||||
this->updater_->deleteRRset(*this->rrset_);
|
||||
|
||||
// The this->updater_ finder should immediately see the deleted results.
|
||||
@@ -3701,7 +3701,7 @@ TYPED_TEST(DatabaseClientTest, deleteRRsetToNXDOMAIN) {
|
||||
RRType::CNAME(), this->rrttl_));
|
||||
this->rrset_->addRdata(rdata::createRdata(this->rrset_->getType(),
|
||||
this->rrset_->getClass(),
|
||||
"www.example.org"));
|
||||
"www.example.org."));
|
||||
|
||||
this->updater_ = this->client_->getUpdater(this->zname_, false);
|
||||
this->updater_->deleteRRset(*this->rrset_);
|
||||
|
@@ -125,7 +125,7 @@ public:
|
||||
// This one will place rr_ns_a_ at a zone cut, making it a glue:
|
||||
{"ns.example.org. 300 IN NS 192.0.2.2.", &rr_ns_ns_},
|
||||
{"ns.example.org. 300 IN AAAA 2001:db8::2", &rr_ns_aaaa_},
|
||||
{"cname.example.org. 300 IN CNAME canonical.example.org",
|
||||
{"cname.example.org. 300 IN CNAME canonical.example.org.",
|
||||
&rr_cname_},
|
||||
{"cname.example.org. 300 IN A 192.0.2.3", &rr_cname_a_},
|
||||
{"dname.example.org. 300 IN DNAME target.example.org.",
|
||||
|
@@ -347,7 +347,7 @@ public:
|
||||
{"example.org. 300 IN A 192.0.2.1", &rr_a_},
|
||||
{"ns.example.org. 300 IN A 192.0.2.2", &rr_ns_a_},
|
||||
{"ns.example.org. 300 IN AAAA 2001:db8::2", &rr_ns_aaaa_},
|
||||
{"cname.example.org. 300 IN CNAME canonical.example.org",
|
||||
{"cname.example.org. 300 IN CNAME canonical.example.org.",
|
||||
&rr_cname_},
|
||||
{"cname.example.org. 300 IN A 192.0.2.3", &rr_cname_a_},
|
||||
{"dname.example.org. 300 IN DNAME target.example.org.",
|
||||
|
@@ -32,8 +32,25 @@ using isc::dns::rdata::generic::detail::createNameFromLexer;
|
||||
// BEGIN_RDATA_NAMESPACE
|
||||
|
||||
CNAME::CNAME(const std::string& namestr) :
|
||||
cname_(namestr)
|
||||
{}
|
||||
// Fill in dummy name and replace it soon below.
|
||||
cname_(Name::ROOT_NAME())
|
||||
{
|
||||
try {
|
||||
std::istringstream ss(namestr);
|
||||
MasterLexer lexer;
|
||||
lexer.pushSource(ss);
|
||||
|
||||
cname_ = createNameFromLexer(lexer, NULL);
|
||||
|
||||
if (lexer.getNextToken().getType() != MasterToken::END_OF_FILE) {
|
||||
isc_throw(InvalidRdataText, "extra input text for CNAME: "
|
||||
<< namestr);
|
||||
}
|
||||
} catch (const MasterLexer::LexerError& ex) {
|
||||
isc_throw(InvalidRdataText, "Failed to construct CNAME from '" <<
|
||||
namestr << "': " << ex.what());
|
||||
}
|
||||
}
|
||||
|
||||
CNAME::CNAME(InputBuffer& buffer, size_t) :
|
||||
Rdata(), cname_(buffer)
|
||||
|
@@ -36,8 +36,8 @@ class Rdata_CNAME_Test : public RdataTest {
|
||||
// there's nothing to specialize
|
||||
};
|
||||
|
||||
const generic::CNAME rdata_cname("cn.example.com");
|
||||
const generic::CNAME rdata_cname2("cn2.example.com");
|
||||
const generic::CNAME rdata_cname("cn.example.com.");
|
||||
const generic::CNAME rdata_cname2("cn2.example.com.");
|
||||
const uint8_t wiredata_cname[] = {
|
||||
0x02, 0x63, 0x6e, 0x07, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x03,
|
||||
0x63, 0x6f, 0x6d, 0x00 };
|
||||
@@ -50,16 +50,16 @@ const uint8_t wiredata_cname2[] = {
|
||||
0x03, 0x63, 0x6e, 0x32, 0xc0, 0x03 };
|
||||
|
||||
TEST_F(Rdata_CNAME_Test, createFromText) {
|
||||
EXPECT_EQ(0, rdata_cname.compare(generic::CNAME("cn.example.com")));
|
||||
EXPECT_EQ(0, rdata_cname.compare(generic::CNAME("cn.example.com.")));
|
||||
// explicitly add a trailing dot. should be the same RDATA.
|
||||
EXPECT_EQ(0, rdata_cname.compare(generic::CNAME("cn.example.com.")));
|
||||
// should be case sensitive.
|
||||
EXPECT_EQ(0, rdata_cname.compare(generic::CNAME("CN.EXAMPLE.COM")));
|
||||
EXPECT_EQ(0, rdata_cname.compare(generic::CNAME("CN.EXAMPLE.COM.")));
|
||||
// RDATA of a class-independent type should be recognized for any
|
||||
// "unknown" class.
|
||||
EXPECT_EQ(0, rdata_cname.compare(*createRdata(RRType("CNAME"),
|
||||
RRClass(65000),
|
||||
"cn.example.com")));
|
||||
"cn.example.com.")));
|
||||
}
|
||||
|
||||
TEST_F(Rdata_CNAME_Test, createFromWire) {
|
||||
@@ -79,7 +79,7 @@ TEST_F(Rdata_CNAME_Test, createFromWire) {
|
||||
"rdata_cname_fromWire", 71),
|
||||
DNSMessageFORMERR);
|
||||
|
||||
EXPECT_EQ(0, generic::CNAME("cn2.example.com").compare(
|
||||
EXPECT_EQ(0, generic::CNAME("cn2.example.com.").compare(
|
||||
*rdataFactoryFromFile(RRType("CNAME"), RRClass("IN"),
|
||||
"rdata_cname_fromWire", 55)));
|
||||
EXPECT_THROW(*rdataFactoryFromFile(RRType("CNAME"), RRClass("IN"),
|
||||
|
@@ -218,7 +218,7 @@ TEST_F(ZoneCheckerTest, checkNSData) {
|
||||
// If there's a CNAME at the name instead, it's an error.
|
||||
rrsets_->removeRRset(Name("*.example.com"), zclass_, RRType::A());
|
||||
RRsetPtr cname(new RRset(ns_name, zclass_, RRType::CNAME(), RRTTL(60)));
|
||||
cname->addRdata(generic::CNAME("cname.example.com"));
|
||||
cname->addRdata(generic::CNAME("cname.example.com."));
|
||||
rrsets_->addRRset(cname);
|
||||
EXPECT_FALSE(checkZone(zname_, zclass_, *rrsets_, callbacks_));
|
||||
expected_errors_.push_back("zone example.com/IN: NS 'ns.example.com' is "
|
||||
|
@@ -53,7 +53,7 @@ def create_ns(nsname, name=Name('example.com'), ttl=3600):
|
||||
rrset.add_rdata(Rdata(RRType.NS(), RRClass.IN(), nsname))
|
||||
return rrset
|
||||
|
||||
def create_cname(target='target.example.com', name=Name('example.com'),
|
||||
def create_cname(target='target.example.com.', name=Name('example.com'),
|
||||
ttl=3600):
|
||||
rrset = RRset(name, RRClass.IN(), RRType.CNAME(), RRTTL(ttl))
|
||||
rrset.add_rdata(Rdata(RRType.CNAME(), RRClass.IN(), target))
|
||||
|
@@ -131,9 +131,9 @@ public:
|
||||
|
||||
// ... the CNAME records
|
||||
rrs_in_cname_www1->addRdata(ConstRdataPtr(
|
||||
new CNAME("www.example.com")));
|
||||
new CNAME("www.example.com.")));
|
||||
rrs_in_cname_www2->addRdata(ConstRdataPtr(
|
||||
new CNAME("www1.example.com")));
|
||||
new CNAME("www1.example.com.")));
|
||||
}
|
||||
|
||||
Message msg_a; // Pointer to message in RENDER state
|
||||
|
Reference in New Issue
Block a user