|  | // Copyright 2019 The Fuchsia Authors. All rights reserved. | 
|  | // Use of this source code is governed by a BSD-style license that can be | 
|  | // found in the LICENSE file. | 
|  |  | 
|  | #include "src/modular/lib/base64url/base64url.h" | 
|  |  | 
|  | #include "gtest/gtest.h" | 
|  |  | 
|  | namespace base64url { | 
|  | namespace { | 
|  |  | 
|  | TEST(Base64UrlTest, Base64UrlEncode) { | 
|  | // These examples are from RFC 4648. | 
|  | EXPECT_EQ(Base64UrlEncode(""), ""); | 
|  | EXPECT_EQ(Base64UrlEncode("f"), "Zg=="); | 
|  | EXPECT_EQ(Base64UrlEncode("fo"), "Zm8="); | 
|  | EXPECT_EQ(Base64UrlEncode("foo"), "Zm9v"); | 
|  | EXPECT_EQ(Base64UrlEncode("foob"), "Zm9vYg=="); | 
|  | EXPECT_EQ(Base64UrlEncode("fooba"), "Zm9vYmE="); | 
|  | EXPECT_EQ(Base64UrlEncode("foobar"), "Zm9vYmFy"); | 
|  |  | 
|  | // Extra tests for URL safe version. | 
|  | EXPECT_EQ(Base64UrlEncode(".s>"), "LnM-"); | 
|  | EXPECT_EQ(Base64UrlEncode(".s?"), "LnM_"); | 
|  | } | 
|  |  | 
|  | TEST(Base64UrlTest, Base64UrlDecode) { | 
|  | std::string decoded; | 
|  |  | 
|  | // These examples are from RFC 4648. | 
|  | EXPECT_TRUE(Base64UrlDecode("", &decoded)); | 
|  | EXPECT_EQ(decoded, ""); | 
|  | EXPECT_TRUE(Base64UrlDecode("Zg==", &decoded)); | 
|  | EXPECT_EQ(decoded, "f"); | 
|  | EXPECT_TRUE(Base64UrlDecode("Zm8=", &decoded)); | 
|  | EXPECT_EQ(decoded, "fo"); | 
|  | EXPECT_TRUE(Base64UrlDecode("Zm9v", &decoded)); | 
|  | EXPECT_EQ(decoded, "foo"); | 
|  | EXPECT_TRUE(Base64UrlDecode("Zm9vYg==", &decoded)); | 
|  | EXPECT_EQ(decoded, "foob"); | 
|  | EXPECT_TRUE(Base64UrlDecode("Zm9vYmE=", &decoded)); | 
|  | EXPECT_EQ(decoded, "fooba"); | 
|  | EXPECT_TRUE(Base64UrlDecode("Zm9vYmFy", &decoded)); | 
|  | EXPECT_EQ(decoded, "foobar"); | 
|  |  | 
|  | // Extra tests for URL safe version. | 
|  | EXPECT_TRUE(Base64UrlDecode("LnM-", &decoded)); | 
|  | EXPECT_EQ(decoded, ".s>"); | 
|  | EXPECT_TRUE(Base64UrlDecode("LnM_", &decoded)); | 
|  | EXPECT_EQ(decoded, ".s?"); | 
|  | } | 
|  |  | 
|  | }  // namespace | 
|  | }  // namespace base64url |