summaryrefslogtreecommitdiff
path: root/src/base64_test.cpp
diff options
context:
space:
mode:
authorEd Tanous <ed.tanous@intel.com>2017-03-01 03:05:13 +0300
committerEd Tanous <ed.tanous@intel.com>2017-03-01 03:05:13 +0300
commitf927347406ef6ea49edf710897b213ccd8c8e284 (patch)
treef5fa40edeb9e177e07ff6b58939e9315ba667d5e /src/base64_test.cpp
parent5f34a9c5820b4a60352f40cb7fa86011012b9801 (diff)
downloadbmcweb-f927347406ef6ea49edf710897b213ccd8c8e284.tar.xz
incremental
Diffstat (limited to 'src/base64_test.cpp')
-rw-r--r--src/base64_test.cpp62
1 files changed, 62 insertions, 0 deletions
diff --git a/src/base64_test.cpp b/src/base64_test.cpp
new file mode 100644
index 0000000000..3484976034
--- /dev/null
+++ b/src/base64_test.cpp
@@ -0,0 +1,62 @@
+#include "base64.hpp"
+#include "gtest/gtest.h"
+#include "big_list_of_naughty_strings.hpp"
+
+// Tests that Base64 basic strings work
+TEST(Base64, EncodeBasicString)
+{
+ std::string output;
+ EXPECT_TRUE(base64::base64_encode("Foo", output));
+}
+
+// Tests the test vectors available in the base64 spec
+TEST(Base64, EncodeRFC4648)
+{
+ std::string output;
+ EXPECT_TRUE(base64::base64_encode("", output));
+ EXPECT_EQ(output, "");
+ EXPECT_TRUE(base64::base64_encode("f", output));
+ EXPECT_EQ(output, "Zg==");
+ EXPECT_TRUE(base64::base64_encode("fo", output));
+ EXPECT_EQ(output, "Zm8=");
+ EXPECT_TRUE(base64::base64_encode("foo", output));
+ EXPECT_EQ(output, "Zm9v");
+ EXPECT_TRUE(base64::base64_encode("foob", output));
+ EXPECT_EQ(output, "Zm9vYg==");
+ EXPECT_TRUE(base64::base64_encode("fooba", output));
+ EXPECT_EQ(output, "Zm9vYmE=");
+ EXPECT_TRUE(base64::base64_encode("foobar", output));
+ EXPECT_EQ(output, "Zm9vYmFy");
+}
+
+// Tests the test vectors available in the base64 spec
+TEST(Base64, DecodeRFC4648)
+{
+ std::string output;
+ EXPECT_TRUE(base64::base64_decode("", output));
+ EXPECT_EQ(output, "");
+ EXPECT_TRUE(base64::base64_decode("Zg==", output));
+ EXPECT_EQ(output, "f");
+ EXPECT_TRUE(base64::base64_decode("Zm8=", output));
+ EXPECT_EQ(output, "fo");
+ EXPECT_TRUE(base64::base64_decode("Zm9v", output));
+ EXPECT_EQ(output, "foo");
+ EXPECT_TRUE(base64::base64_decode("Zm9vYg==", output));
+ EXPECT_EQ(output, "foob");
+ EXPECT_TRUE(base64::base64_decode("Zm9vYmE=", output));
+ EXPECT_EQ(output, "fooba");
+ EXPECT_TRUE(base64::base64_decode("Zm9vYmFy", output));
+ EXPECT_EQ(output, "foobar");
+}
+
+// Tests using pathalogical cases for all escapings
+TEST(Base64, NaugtyStrings){
+ std::string base64_string;
+ std::string decoded_string;
+ for (auto& str: naughty_strings){
+ EXPECT_TRUE(base64::base64_encode(str, base64_string));
+ EXPECT_TRUE(base64::base64_decode(base64_string, decoded_string));
+ EXPECT_EQ(str, decoded_string);
+ }
+}
+