From: Mukund Sivaraman Date: Thu, 28 Mar 2013 02:28:09 +0000 (+0530) Subject: [2387] Unify NSEC3PARAM string and lexer constructor tests X-Git-Tag: bind10-1.2.0beta1-release~481^2~25 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=c70bba06b9157645d6493b16ef0ee414277ce7b1;p=thirdparty%2Fkea.git [2387] Unify NSEC3PARAM string and lexer constructor tests --- diff --git a/src/lib/dns/tests/rdata_nsec3param_unittest.cc b/src/lib/dns/tests/rdata_nsec3param_unittest.cc index 79e255a23b..9752a3c25a 100644 --- a/src/lib/dns/tests/rdata_nsec3param_unittest.cc +++ b/src/lib/dns/tests/rdata_nsec3param_unittest.cc @@ -40,27 +40,72 @@ using namespace isc::dns::rdata; namespace { class Rdata_NSEC3PARAM_Test : public RdataTest { -public: +protected: Rdata_NSEC3PARAM_Test() : nsec3param_txt("1 1 1 D399EAAB"), - nsec3param_nosalt_txt("1 1 1 -") + nsec3param_nosalt_txt("1 1 1 -"), + rdata_nsec3param(nsec3param_txt) {} + + void checkFromText_None(const string& rdata_str) { + checkFromText( + rdata_str, rdata_nsec3param, false, false); + } + + void checkFromText_InvalidText(const string& rdata_str) { + checkFromText( + rdata_str, rdata_nsec3param, true, true); + } + + void checkFromText_BadValue(const string& rdata_str) { + checkFromText( + rdata_str, rdata_nsec3param, true, true); + } + + void checkFromText_LexerError(const string& rdata_str) { + checkFromText + ( + rdata_str, rdata_nsec3param, true, true); + } + const string nsec3param_txt; const string nsec3param_nosalt_txt; + const generic::NSEC3PARAM rdata_nsec3param; }; TEST_F(Rdata_NSEC3PARAM_Test, fromText) { - // With a salt - EXPECT_EQ(1, generic::NSEC3PARAM(nsec3param_txt).getHashalg()); - EXPECT_EQ(1, generic::NSEC3PARAM(nsec3param_txt).getFlags()); - // (salt is checked in the toText test) - // Empty salt is okay. EXPECT_EQ(0, generic::NSEC3PARAM(nsec3param_nosalt_txt).getSalt().size()); + + // Salt is missing. + checkFromText_LexerError("1 1 1"); + + // Salt has whitespace within. This only fails in the string + // constructor, as the lexer constructor stops reading at the end of + // its RDATA. + const generic::NSEC3PARAM rdata_nsec3param2("1 1 1 D399"); + checkFromText( + "1 1 1 D399 EAAB", rdata_nsec3param2, true, false); + + // Hash algorithm out of range. + checkFromText_InvalidText("256 1 1 D399EAAB"); + + // Flags out of range. + checkFromText_InvalidText("1 256 1 D399EAAB"); + + // Iterations out of range. + checkFromText_InvalidText("1 1 65536 D399EAAB"); + + // Bad base32 hex sequence + checkFromText_BadValue("1 1 256 D399EAABZOO"); + + // String instead of number + checkFromText_LexerError("foo 1 256 D399EAAB"); + checkFromText_LexerError("1 foo 256 D399EAAB"); + checkFromText_LexerError("1 1 foo D399EAAB"); } TEST_F(Rdata_NSEC3PARAM_Test, toText) { - const generic::NSEC3PARAM rdata_nsec3param(nsec3param_txt); EXPECT_EQ(nsec3param_txt, rdata_nsec3param.toText()); // Garbage space at the end should be ok. RFC5155 only forbids @@ -78,36 +123,7 @@ TEST_F(Rdata_NSEC3PARAM_Test, toText) { EXPECT_NO_THROW(generic::NSEC3PARAM("1 1 65535 D399EAAB")); } -TEST_F(Rdata_NSEC3PARAM_Test, badText) { - // Salt is missing. - EXPECT_THROW(generic::NSEC3PARAM("1 1 1"), InvalidRdataText); - - // Salt has whitespace within. - EXPECT_THROW(generic::NSEC3PARAM("1 1 1 D399 EAAB"), InvalidRdataText); - - // Hash algorithm out of range. - EXPECT_THROW(generic::NSEC3PARAM("256 1 1 D399EAAB"), InvalidRdataText); - - // Flags out of range. - EXPECT_THROW(generic::NSEC3PARAM("1 256 1 D399EAAB"), InvalidRdataText); - - // Iterations out of range. - EXPECT_THROW(generic::NSEC3PARAM("1 1 65536 D399EAAB"), InvalidRdataText); - - // Bad base32 hex sequence - EXPECT_THROW(generic::NSEC3PARAM("1 1 256 D399EAABZOO"), BadValue); - - // String instead of number - EXPECT_THROW(generic::NSEC3PARAM("foo 1 256 D399EAAB"), - InvalidRdataText); - EXPECT_THROW(generic::NSEC3PARAM("1 foo 256 D399EAAB"), - InvalidRdataText); - EXPECT_THROW(generic::NSEC3PARAM("1 1 foo D399EAAB"), - InvalidRdataText); -} - TEST_F(Rdata_NSEC3PARAM_Test, createFromWire) { - const generic::NSEC3PARAM rdata_nsec3param(nsec3param_txt); EXPECT_EQ(0, rdata_nsec3param.compare( *rdataFactoryFromFile(RRType::NSEC3PARAM(), RRClass::IN(), "rdata_nsec3param_fromWire1"))); @@ -127,7 +143,6 @@ TEST_F(Rdata_NSEC3PARAM_Test, createFromWire) { } TEST_F(Rdata_NSEC3PARAM_Test, createFromLexer) { - const generic::NSEC3PARAM rdata_nsec3param(nsec3param_txt); EXPECT_EQ(0, rdata_nsec3param.compare( *test::createRdataUsingLexer(RRType::NSEC3PARAM(), RRClass::IN(), nsec3param_txt))); @@ -137,30 +152,10 @@ TEST_F(Rdata_NSEC3PARAM_Test, createFromLexer) { EXPECT_EQ(0, rdata_nosalt_nsec3param.compare( *test::createRdataUsingLexer(RRType::NSEC3PARAM(), RRClass::IN(), nsec3param_nosalt_txt))); - - // Exceptions cause NULL to be returned. - - // hash algorithm out of range - EXPECT_FALSE(test::createRdataUsingLexer(RRType::NSEC3PARAM(), - RRClass::IN(), - "256 1 1 D399EAAB")); - // flags out of range - EXPECT_FALSE(test::createRdataUsingLexer(RRType::NSEC3PARAM(), - RRClass::IN(), - "1 256 1 D399EAAB")); - // iterations out of range - EXPECT_FALSE(test::createRdataUsingLexer(RRType::NSEC3PARAM(), - RRClass::IN(), - "1 1 65536 D399EAAB")); - // space is not allowed in salt - EXPECT_FALSE(test::createRdataUsingLexer(RRType::NSEC3PARAM(), - RRClass::IN(), - "1 1 1 D399 EAAB")); } TEST_F(Rdata_NSEC3PARAM_Test, toWireRenderer) { renderer.skip(2); - const generic::NSEC3PARAM rdata_nsec3param(nsec3param_txt); rdata_nsec3param.toWire(renderer); vector data; @@ -171,12 +166,18 @@ TEST_F(Rdata_NSEC3PARAM_Test, toWireRenderer) { } TEST_F(Rdata_NSEC3PARAM_Test, toWireBuffer) { - const generic::NSEC3PARAM rdata_nsec3param(nsec3param_txt); rdata_nsec3param.toWire(obuffer); } +TEST_F(Rdata_NSEC3PARAM_Test, getHashAlg) { + EXPECT_EQ(1, rdata_nsec3param.getHashalg()); +} + +TEST_F(Rdata_NSEC3PARAM_Test, getFlags) { + EXPECT_EQ(1, rdata_nsec3param.getFlags()); +} + TEST_F(Rdata_NSEC3PARAM_Test, assign) { - generic::NSEC3PARAM rdata_nsec3param(nsec3param_txt); generic::NSEC3PARAM other_nsec3param = rdata_nsec3param; EXPECT_EQ(0, rdata_nsec3param.compare(other_nsec3param)); }