From: Remi Gacogne Date: Thu, 8 Apr 2021 16:19:43 +0000 (+0200) Subject: Run the credentials unit tests in the auth and rec as well X-Git-Tag: dnsdist-1.7.0-alpha1~12^2~22 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=3a338f790e3b129353f53d5f7ef47c60a19af86f;p=thirdparty%2Fpdns.git Run the credentials unit tests in the auth and rec as well --- diff --git a/pdns/Makefile.am b/pdns/Makefile.am index 2eed01ecd6..d521a2e36f 100644 --- a/pdns/Makefile.am +++ b/pdns/Makefile.am @@ -1320,6 +1320,7 @@ testrunner_SOURCES = \ base64.cc \ bindlexer.l \ bindparser.yy \ + credentials.cc credentials.hh \ dbdnsseckeeper.cc \ dns.cc \ dns_random.cc \ @@ -1366,6 +1367,7 @@ testrunner_SOURCES = \ test-bindparser_cc.cc \ test-common.hh \ test-communicator_hh.cc \ + test-credentials_cc.cc \ test-digests_hh.cc \ test-distributor_hh.cc \ test-dns_random_hh.cc \ diff --git a/pdns/dnsdistdist/test-credentials_cc.cc b/pdns/dnsdistdist/test-credentials_cc.cc deleted file mode 100644 index c28067bc57..0000000000 --- a/pdns/dnsdistdist/test-credentials_cc.cc +++ /dev/null @@ -1,57 +0,0 @@ - -#define BOOST_TEST_DYN_LINK -#define BOOST_TEST_NO_MAIN - -#include - -#include "config.h" -#include "credentials.hh" - -BOOST_AUTO_TEST_SUITE(credentials_cc) - -#ifdef HAVE_LIBSODIUM -BOOST_AUTO_TEST_CASE(test_CredentialsUtils) -{ - const std::string plaintext("test"); - /* generated with hashPassword("test") */ - const std::string sampleHash("$argon2id$v=19$m=65536,t=2,p=1$ndQKu3+ZsWedqRrlNFUaNw$tnb0MJVe5C2hlqkDt0Ln3R6VKCYkfMYdxDy+puXes3s"); - - auto hashed = hashPassword(plaintext); - BOOST_CHECK(!hashed.empty()); - - BOOST_CHECK(verifyPassword(hashed, plaintext)); - BOOST_CHECK(verifyPassword(sampleHash, plaintext)); - - BOOST_CHECK(!verifyPassword(hashed, "not test")); - BOOST_CHECK(!verifyPassword(sampleHash, "not test")); - - BOOST_CHECK(isPasswordHashed(hashed)); - BOOST_CHECK(isPasswordHashed(sampleHash)); - BOOST_CHECK(!isPasswordHashed(plaintext)); -} -#endif - -BOOST_AUTO_TEST_CASE(test_CredentialsHolder) -{ - const std::string plaintext("test"); - - auto holder = CredentialsHolder(std::string(plaintext)); - - BOOST_CHECK(holder.matches(plaintext)); - BOOST_CHECK(!holder.matches("not test")); - BOOST_CHECK(!holder.wasHashed()); - -#ifdef HAVE_LIBSODIUM - BOOST_CHECK(CredentialsHolder::isHashingAvailable()); - const std::string sampleHash("$argon2id$v=19$m=65536,t=2,p=1$ndQKu3+ZsWedqRrlNFUaNw$tnb0MJVe5C2hlqkDt0Ln3R6VKCYkfMYdxDy+puXes3s"); - - auto fromHashedHolder = CredentialsHolder(std::string(sampleHash)); - BOOST_CHECK(fromHashedHolder.wasHashed()); - BOOST_CHECK(fromHashedHolder.matches(plaintext)); - BOOST_CHECK(!fromHashedHolder.matches("not test")); -#else - BOOST_CHECK(!CredentialsHolder::isHashingAvailable()); -#endif -} - -BOOST_AUTO_TEST_SUITE_END() diff --git a/pdns/dnsdistdist/test-credentials_cc.cc b/pdns/dnsdistdist/test-credentials_cc.cc new file mode 120000 index 0000000000..8f713318b2 --- /dev/null +++ b/pdns/dnsdistdist/test-credentials_cc.cc @@ -0,0 +1 @@ +../test-credentials_cc.cc \ No newline at end of file diff --git a/pdns/recursordist/Makefile.am b/pdns/recursordist/Makefile.am index d4d49da8cc..3af8225c94 100644 --- a/pdns/recursordist/Makefile.am +++ b/pdns/recursordist/Makefile.am @@ -241,6 +241,7 @@ testrunner_SOURCES = \ base32.cc \ base64.cc base64.hh \ circular_buffer.hh \ + credentials.cc credentials.hh \ dns.cc dns.hh \ dns_random.cc dns_random.hh \ dnslabeltext.cc \ @@ -291,6 +292,7 @@ testrunner_SOURCES = \ test-base32_cc.cc \ test-base64_cc.cc \ test-common.hh \ + test-credentials_cc.cc \ test-dns_random_hh.cc \ test-dnsname_cc.cc \ test-dnsparser_hh.cc \ diff --git a/pdns/recursordist/test-credentials_cc.cc b/pdns/recursordist/test-credentials_cc.cc new file mode 120000 index 0000000000..8f713318b2 --- /dev/null +++ b/pdns/recursordist/test-credentials_cc.cc @@ -0,0 +1 @@ +../test-credentials_cc.cc \ No newline at end of file diff --git a/pdns/test-credentials_cc.cc b/pdns/test-credentials_cc.cc new file mode 100644 index 0000000000..c28067bc57 --- /dev/null +++ b/pdns/test-credentials_cc.cc @@ -0,0 +1,57 @@ + +#define BOOST_TEST_DYN_LINK +#define BOOST_TEST_NO_MAIN + +#include + +#include "config.h" +#include "credentials.hh" + +BOOST_AUTO_TEST_SUITE(credentials_cc) + +#ifdef HAVE_LIBSODIUM +BOOST_AUTO_TEST_CASE(test_CredentialsUtils) +{ + const std::string plaintext("test"); + /* generated with hashPassword("test") */ + const std::string sampleHash("$argon2id$v=19$m=65536,t=2,p=1$ndQKu3+ZsWedqRrlNFUaNw$tnb0MJVe5C2hlqkDt0Ln3R6VKCYkfMYdxDy+puXes3s"); + + auto hashed = hashPassword(plaintext); + BOOST_CHECK(!hashed.empty()); + + BOOST_CHECK(verifyPassword(hashed, plaintext)); + BOOST_CHECK(verifyPassword(sampleHash, plaintext)); + + BOOST_CHECK(!verifyPassword(hashed, "not test")); + BOOST_CHECK(!verifyPassword(sampleHash, "not test")); + + BOOST_CHECK(isPasswordHashed(hashed)); + BOOST_CHECK(isPasswordHashed(sampleHash)); + BOOST_CHECK(!isPasswordHashed(plaintext)); +} +#endif + +BOOST_AUTO_TEST_CASE(test_CredentialsHolder) +{ + const std::string plaintext("test"); + + auto holder = CredentialsHolder(std::string(plaintext)); + + BOOST_CHECK(holder.matches(plaintext)); + BOOST_CHECK(!holder.matches("not test")); + BOOST_CHECK(!holder.wasHashed()); + +#ifdef HAVE_LIBSODIUM + BOOST_CHECK(CredentialsHolder::isHashingAvailable()); + const std::string sampleHash("$argon2id$v=19$m=65536,t=2,p=1$ndQKu3+ZsWedqRrlNFUaNw$tnb0MJVe5C2hlqkDt0Ln3R6VKCYkfMYdxDy+puXes3s"); + + auto fromHashedHolder = CredentialsHolder(std::string(sampleHash)); + BOOST_CHECK(fromHashedHolder.wasHashed()); + BOOST_CHECK(fromHashedHolder.matches(plaintext)); + BOOST_CHECK(!fromHashedHolder.matches("not test")); +#else + BOOST_CHECK(!CredentialsHolder::isHashingAvailable()); +#endif +} + +BOOST_AUTO_TEST_SUITE_END()