[svn] commit: r4049 - /branches/trac451/src/bin/auth/tests/config_unittest.cc
BIND 10 source code commits
bind10-changes at lists.isc.org
Tue Dec 28 19:02:15 UTC 2010
Author: vorner
Date: Tue Dec 28 19:02:15 2010
New Revision: 4049
Log:
Test config when load throws an exception
Modified:
branches/trac451/src/bin/auth/tests/config_unittest.cc
Modified: branches/trac451/src/bin/auth/tests/config_unittest.cc
==============================================================================
--- branches/trac451/src/bin/auth/tests/config_unittest.cc (original)
+++ branches/trac451/src/bin/auth/tests/config_unittest.cc Tue Dec 28 19:02:15 2010
@@ -17,6 +17,7 @@
#include <exceptions/exceptions.h>
#include <dns/rrclass.h>
+#include <dns/masterload.h>
#include <cc/data.h>
@@ -203,6 +204,41 @@
Name("example.com")).code);
}
+TEST_F(MemoryDatasrcConfigTest, exception) {
+ // Load a zone
+ EXPECT_NO_THROW(parser->build(Element::fromJSON(
+ "[{\"type\": \"memory\","
+ " \"zones\": [{\"origin\": \"example.com\","
+ " \"file\": \"" TEST_DATA_DIR
+ "/example.zone\"}]}]")));
+ EXPECT_NO_THROW(parser->commit());
+ EXPECT_EQ(1, server.getMemoryDataSrc(rrclass)->getZoneCount());
+ EXPECT_EQ(isc::datasrc::result::SUCCESS,
+ server.getMemoryDataSrc(rrclass)->findZone(
+ Name("example.com")).code);
+
+ // create a new parser, and try to load something. It will throw,
+ // the given master file should not exist
+ delete parser;
+ parser = createAuthConfigParser(server, "datasources");
+ EXPECT_THROW(parser->build(Element::fromJSON(
+ "[{\"type\": \"memory\","
+ " \"zones\": [{\"origin\": \"example.org\","
+ " \"file\": \"" TEST_DATA_DIR
+ "/example.org.zone\"},"
+ " {\"origin\": \"example.net\","
+ " \"file\": \"" TEST_DATA_DIR
+ "/nonexistent.zone\"}]}]")), isc::dns::MasterLoadError);
+ // As that one throwed exception, it is not expected from us to
+ // commit it
+
+ // The original should be untouched
+ EXPECT_EQ(1, server.getMemoryDataSrc(rrclass)->getZoneCount());
+ EXPECT_EQ(isc::datasrc::result::SUCCESS,
+ server.getMemoryDataSrc(rrclass)->findZone(
+ Name("example.com")).code);
+}
+
TEST_F(MemoryDatasrcConfigTest, remove) {
EXPECT_NO_THROW(parser->build(Element::fromJSON(
"[{\"type\": \"memory\","
More information about the bind10-changes
mailing list