blob: f0b2606f485619d359136941948f829848b93021 [file] [log] [blame]
// Copyright 2016 The Goma 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 "base64.h"
#include <gtest/gtest.h>
namespace devtools_goma {
TEST(Base64Test, Base64UrlEncodeRFC4648TestVector) {
// https://tools.ietf.org/html/rfc4648#page-12
EXPECT_EQ("", Base64UrlEncode("", true));
EXPECT_EQ("Zg==", Base64UrlEncode("f", true));
EXPECT_EQ("Zm8=", Base64UrlEncode("fo", true));
EXPECT_EQ("Zm9v", Base64UrlEncode("foo", true));
EXPECT_EQ("Zm9vYg==", Base64UrlEncode("foob", true));
EXPECT_EQ("Zm9vYmE=", Base64UrlEncode("fooba", true));
EXPECT_EQ("Zm9vYmFy", Base64UrlEncode("foobar", true));
}
TEST(Base64Test, Base64UrlEncodeRFC4648TestVectorNoPadding) {
EXPECT_EQ("", Base64UrlEncode("", false));
EXPECT_EQ("Zg", Base64UrlEncode("f", false));
EXPECT_EQ("Zm8", Base64UrlEncode("fo", false));
EXPECT_EQ("Zm9v", Base64UrlEncode("foo", false));
EXPECT_EQ("Zm9vYg", Base64UrlEncode("foob", false));
EXPECT_EQ("Zm9vYmE", Base64UrlEncode("fooba", false));
EXPECT_EQ("Zm9vYmFy", Base64UrlEncode("foobar", false));
}
TEST(Base64Test, Base64UrlEncodeForJsonWebToken) {
EXPECT_EQ("eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9",
Base64UrlEncode("{\"alg\":\"RS256\",\"typ\":\"JWT\"}", false));
EXPECT_EQ("eyJpc3MiOiI3NjEzMjY3OTgwNjktcjVtbGpsbG4xcmQ0bHJiaG"
"c3NWVmZ2lncDM2bTc4ajVAZGV2ZWxvcGVyLmdzZXJ2aWNlYWNj"
"b3VudC5jb20iLCJzY29wZSI6Imh0dHBzOi8vd3d3Lmdvb2dsZW"
"FwaXMuY29tL2F1dGgvcHJlZGljdGlvbiIsImF1ZCI6Imh0dHBz"
"Oi8vYWNjb3VudHMuZ29vZ2xlLmNvbS9vL29hdXRoMi90b2tlbi"
"IsImV4cCI6MTMyODU1NDM4NSwiaWF0IjoxMzI4NTUwNzg1fQ",
Base64UrlEncode("{"
"\"iss\":\"761326798069-"
"r5mljlln1rd4lrbhg75efgigp36m78j5"
"@developer.gserviceaccount.com\","
"\"scope\":\"https://www.googleapis.com/auth/"
"prediction\","
"\"aud\":\"https://accounts.google.com/o/oauth2/"
"token\","
"\"exp\":1328554385,\"iat\":1328550785}", false));
}
} // namespace devtools_goma