blob: 946185814d14e9ba8931f515ebcc5a10b8aceac8 [file] [log] [blame]
// Copyright 2014 The Chromium 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 "components/proximity_auth/base64url.h"
#include "base/base64.h"
#include "testing/gtest/include/gtest/gtest.h"
namespace proximity_auth {
TEST(ProximityAuthBase64UrlTest, EncodeRegularString) {
const std::string input = "Hello world!";
const std::string expected_output = "SGVsbG8gd29ybGQh";
std::string web_safe_output;
Base64UrlEncode(input, &web_safe_output);
EXPECT_EQ(expected_output, web_safe_output);
// For good measure, make sure that the encoding matches the //base
// implemenation as well.
std::string non_web_safe_output;
base::Base64Encode(input, &non_web_safe_output);
EXPECT_EQ(web_safe_output, non_web_safe_output);
}
TEST(ProximityAuthBase64UrlTest, DecodeRegularString) {
const std::string input = "SGVsbG8gd29ybGQh";
const std::string expected_output = "Hello world!";
std::string web_safe_output;
EXPECT_TRUE(Base64UrlDecode(input, &web_safe_output));
EXPECT_EQ(expected_output, web_safe_output);
// For good measure, make sure that the encoding matches the //base
// implemenation as well.
std::string non_web_safe_output;
EXPECT_TRUE(base::Base64Decode(input, &non_web_safe_output));
EXPECT_EQ(web_safe_output, non_web_safe_output);
}
TEST(ProximityAuthBase64UrlTest, EncodeSpecialCharacters) {
// This happens to be a stable encoding, i.e. encode(decode(s)) gives back s.
const std::string encoded = "/+Y=";
std::string decoded;
ASSERT_TRUE(base::Base64Decode(encoded, &decoded));
// Decoded strings that encode to special characters are non-printable, so,
// for ease of testing, just compare the web-safe and non-web-safe encodings.
std::string web_safe_encoded;
Base64UrlEncode(decoded, &web_safe_encoded);
EXPECT_EQ("_-Y=", web_safe_encoded);
}
TEST(ProximityAuthBase64UrlTest, DecodeSpecialCharacters) {
const std::string encoded = "_-Y=";
std::string decoded;
ASSERT_TRUE(Base64UrlDecode(encoded, &decoded));
// Decoded strings that encode to special characters are non-printable, so,
// for ease of testing, just compare the web-safe and non-web-safe encodings.
std::string non_web_safe_encoded;
base::Base64Encode(decoded, &non_web_safe_encoded);
EXPECT_EQ("/+Y=", non_web_safe_encoded);
}
} // namespace proximity_auth