From: Remi Gacogne Date: Thu, 12 Jan 2023 14:49:03 +0000 (+0100) Subject: credentials: Add more unit tests X-Git-Tag: dnsdist-1.8.0-rc1~109^2~5 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=71f6572ade2c2f0f631e5a09d61a2bfe80f8ecd2;p=thirdparty%2Fpdns.git credentials: Add more unit tests --- diff --git a/pdns/test-credentials_cc.cc b/pdns/test-credentials_cc.cc index d3738c47b0..109f2b0c7b 100644 --- a/pdns/test-credentials_cc.cc +++ b/pdns/test-credentials_cc.cc @@ -44,6 +44,13 @@ BOOST_AUTO_TEST_CASE(test_CredentialsUtils) BOOST_CHECK(verifyPassword(customParams, plaintext)); } + { + // hash password with invalid parameters + BOOST_CHECK_THROW(hashPassword(plaintext, 0, 2, 16), std::runtime_error); + BOOST_CHECK_THROW(hashPassword(plaintext, 512, 0, 16), std::runtime_error); + BOOST_CHECK_THROW(hashPassword(plaintext, 512, 2, 0), std::runtime_error); + } + // empty BOOST_CHECK(!isPasswordHashed("")); // missing leading $ @@ -79,6 +86,12 @@ BOOST_AUTO_TEST_CASE(test_CredentialsUtils) BOOST_CHECK_THROW(verifyPassword("$scrypt$ln=A,p=1,r=8$1GZ10YdmSGtTmKK9jTH85Q==$JHeICW1mUCnTC+nnULDr7QFQ3kRrZ7u12djruJdrPhI=", plaintext), std::runtime_error); // invalid p BOOST_CHECK_THROW(verifyPassword("$scrypt$ln=10,p=p,r=8$1GZ10YdmSGtTmKK9jTH85Q==$JHeICW1mUCnTC+nnULDr7QFQ3kRrZ7u12djruJdrPhI=", plaintext), std::runtime_error); + // missing ln + BOOST_CHECK_THROW(verifyPassword("$scrypt$la=10,p=1,r=8$1GZ10YdmSGtTmKK9jTH85Q==$JHeICW1mUCnTC+nnULDr7QFQ3kRrZ7u12djruJdrPhI=", plaintext), std::runtime_error); + // missing p + BOOST_CHECK_THROW(verifyPassword("$scrypt$ln=10,q=1,r=8$1GZ10YdmSGtTmKK9jTH85Q==$JHeICW1mUCnTC+nnULDr7QFQ3kRrZ7u12djruJdrPhI=", plaintext), std::runtime_error); + // missing r + BOOST_CHECK_THROW(verifyPassword("$scrypt$l,ln=10,q=1,s=8$1GZ10YdmSGtTmKK9jTH85Q==$JHeICW1mUCnTC+nnULDr7QFQ3kRrZ7u12djruJdrPhI=", plaintext), std::runtime_error); // work factor is too large BOOST_CHECK_THROW(verifyPassword("$scrypt$ln=16,p=1,r=8$1GZ10YdmSGtTmKK9jTH85Q==$JHeICW1mUCnTC+nnULDr7QFQ3kRrZ7u12djruJdrPhI=", plaintext), std::runtime_error); // salt is too long @@ -121,4 +134,19 @@ BOOST_AUTO_TEST_CASE(test_CredentialsHolder) #endif } +BOOST_AUTO_TEST_CASE(test_SensitiveData) +{ + size_t bytes = 16; + SensitiveData data(bytes); + BOOST_CHECK_EQUAL(data.getString().size(), bytes); + + SensitiveData data2("test"); + data2 = std::move(data); + BOOST_CHECK_EQUAL(data2.getString().size(), bytes); + BOOST_CHECK_EQUAL(data.getString().size(), 0U); + + data2.clear(); + BOOST_CHECK_EQUAL(data2.getString().size(), 0U); +} + BOOST_AUTO_TEST_SUITE_END()