]> git.ipfire.org Git - thirdparty/pdns.git/commitdiff
credentials: Add more unit tests
authorRemi Gacogne <remi.gacogne@powerdns.com>
Thu, 12 Jan 2023 14:49:03 +0000 (15:49 +0100)
committerRemi Gacogne <remi.gacogne@powerdns.com>
Thu, 12 Jan 2023 14:49:03 +0000 (15:49 +0100)
pdns/test-credentials_cc.cc

index d3738c47b06b242cbcff94a21d5a482fab44a8af..109f2b0c7b5311ae8dc70ea034db745df0ba69af 100644 (file)
@@ -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()