1fc223305Sopenharmony_ci/*
2fc223305Sopenharmony_ci * Copyright (c) 2021 Huawei Device Co., Ltd.
3fc223305Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
4fc223305Sopenharmony_ci * you may not use this file except in compliance with the License.
5fc223305Sopenharmony_ci * You may obtain a copy of the License at
6fc223305Sopenharmony_ci *
7fc223305Sopenharmony_ci *     http://www.apache.org/licenses/LICENSE-2.0
8fc223305Sopenharmony_ci *
9fc223305Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software
10fc223305Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
11fc223305Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12fc223305Sopenharmony_ci * See the License for the specific language governing permissions and
13fc223305Sopenharmony_ci * limitations under the License.
14fc223305Sopenharmony_ci */
15fc223305Sopenharmony_ci
16fc223305Sopenharmony_ci#include "base64_helper.h"
17fc223305Sopenharmony_ci
18fc223305Sopenharmony_ci#include <gtest/gtest.h>
19fc223305Sopenharmony_ci
20fc223305Sopenharmony_ci#include <string>
21fc223305Sopenharmony_ci
22fc223305Sopenharmony_ci#include "log_print.h"
23fc223305Sopenharmony_ci
24fc223305Sopenharmony_ciusing namespace testing::ext;
25fc223305Sopenharmony_ciusing namespace OHOS::NativePreferences;
26fc223305Sopenharmony_cinamespace {
27fc223305Sopenharmony_ciclass Base64HelperTest : public testing::Test {
28fc223305Sopenharmony_cipublic:
29fc223305Sopenharmony_ci    static void SetUpTestCase(void);
30fc223305Sopenharmony_ci    static void TearDownTestCase(void);
31fc223305Sopenharmony_ci    void SetUp();
32fc223305Sopenharmony_ci    void TearDown();
33fc223305Sopenharmony_ci};
34fc223305Sopenharmony_ci
35fc223305Sopenharmony_civoid Base64HelperTest::SetUpTestCase(void)
36fc223305Sopenharmony_ci{
37fc223305Sopenharmony_ci}
38fc223305Sopenharmony_ci
39fc223305Sopenharmony_civoid Base64HelperTest::TearDownTestCase(void)
40fc223305Sopenharmony_ci{
41fc223305Sopenharmony_ci}
42fc223305Sopenharmony_ci
43fc223305Sopenharmony_civoid Base64HelperTest::SetUp(void)
44fc223305Sopenharmony_ci{
45fc223305Sopenharmony_ci}
46fc223305Sopenharmony_ci
47fc223305Sopenharmony_civoid Base64HelperTest::TearDown(void)
48fc223305Sopenharmony_ci{
49fc223305Sopenharmony_ci}
50fc223305Sopenharmony_ci
51fc223305Sopenharmony_ci/**
52fc223305Sopenharmony_ci * @tc.name: Base64HelperTest_0001
53fc223305Sopenharmony_ci * @tc.desc: normal testcase of base64 encode
54fc223305Sopenharmony_ci * @tc.type: FUNC
55fc223305Sopenharmony_ci * @tc.require: SR000CU2BL
56fc223305Sopenharmony_ci * @tc.author: xiuhongju
57fc223305Sopenharmony_ci */
58fc223305Sopenharmony_ciHWTEST_F(Base64HelperTest, Base64HelperTest_001, TestSize.Level1)
59fc223305Sopenharmony_ci{
60fc223305Sopenharmony_ci    std::vector<uint8_t> emptyArray {};
61fc223305Sopenharmony_ci    std::vector<uint8_t> oneArray { 'a' };
62fc223305Sopenharmony_ci    std::vector<uint8_t> twoArray { 'a', 'b' };
63fc223305Sopenharmony_ci    std::vector<uint8_t> threeArray { 'a', 'b', 'c' };
64fc223305Sopenharmony_ci    auto result = Base64Helper::Encode(emptyArray);
65fc223305Sopenharmony_ci    EXPECT_EQ(result, "");
66fc223305Sopenharmony_ci
67fc223305Sopenharmony_ci    result = Base64Helper::Encode(oneArray);
68fc223305Sopenharmony_ci    EXPECT_EQ(result.length(), 4);
69fc223305Sopenharmony_ci    EXPECT_EQ(result, "YQ==");
70fc223305Sopenharmony_ci
71fc223305Sopenharmony_ci    result = Base64Helper::Encode(twoArray);
72fc223305Sopenharmony_ci    EXPECT_EQ(result.length(), 4);
73fc223305Sopenharmony_ci    EXPECT_EQ(result, "YWI=");
74fc223305Sopenharmony_ci
75fc223305Sopenharmony_ci    result = Base64Helper::Encode(threeArray);
76fc223305Sopenharmony_ci    EXPECT_EQ(result.length(), 4);
77fc223305Sopenharmony_ci    EXPECT_EQ(result, "YWJj");
78fc223305Sopenharmony_ci}
79fc223305Sopenharmony_ci
80fc223305Sopenharmony_ci/**
81fc223305Sopenharmony_ci * @tc.name: Base64HelperTest_002
82fc223305Sopenharmony_ci * @tc.desc: normal testcase of base64 decode
83fc223305Sopenharmony_ci * @tc.type: FUNC
84fc223305Sopenharmony_ci */
85fc223305Sopenharmony_ciHWTEST_F(Base64HelperTest, Base64HelperTest_002, TestSize.Level1)
86fc223305Sopenharmony_ci{
87fc223305Sopenharmony_ci    std::vector<uint8_t> oneArray { 1 };
88fc223305Sopenharmony_ci    std::vector<uint8_t> twoArray { 1, 2 };
89fc223305Sopenharmony_ci    std::vector<uint8_t> threeArray { 1, 2, 3 };
90fc223305Sopenharmony_ci    std::vector<uint8_t> result {};
91fc223305Sopenharmony_ci
92fc223305Sopenharmony_ci    EXPECT_TRUE(Base64Helper::Decode(Base64Helper::Encode(oneArray), result));
93fc223305Sopenharmony_ci    EXPECT_EQ(result, oneArray);
94fc223305Sopenharmony_ci
95fc223305Sopenharmony_ci    EXPECT_TRUE(Base64Helper::Decode(Base64Helper::Encode(twoArray), result));
96fc223305Sopenharmony_ci    EXPECT_EQ(result, twoArray);
97fc223305Sopenharmony_ci
98fc223305Sopenharmony_ci    EXPECT_TRUE(Base64Helper::Decode(Base64Helper::Encode(threeArray), result));
99fc223305Sopenharmony_ci    EXPECT_EQ(result, threeArray);
100fc223305Sopenharmony_ci}
101fc223305Sopenharmony_ci
102fc223305Sopenharmony_ci/**
103fc223305Sopenharmony_ci * @tc.name: Base64HelperTest_003
104fc223305Sopenharmony_ci * @tc.desc: error testcase of base64 decode
105fc223305Sopenharmony_ci * @tc.type: FUNC
106fc223305Sopenharmony_ci */
107fc223305Sopenharmony_ciHWTEST_F(Base64HelperTest, Base64HelperTest_003, TestSize.Level1)
108fc223305Sopenharmony_ci{
109fc223305Sopenharmony_ci    std::string wrongText = "abc";
110fc223305Sopenharmony_ci    std::vector<uint8_t> result {};
111fc223305Sopenharmony_ci    EXPECT_FALSE(Base64Helper::Decode(wrongText, result));
112fc223305Sopenharmony_ci
113fc223305Sopenharmony_ci    wrongText = "@bcd";
114fc223305Sopenharmony_ci    EXPECT_FALSE(Base64Helper::Decode(wrongText, result));
115fc223305Sopenharmony_ci
116fc223305Sopenharmony_ci    wrongText = "a@cd";
117fc223305Sopenharmony_ci    EXPECT_FALSE(Base64Helper::Decode(wrongText, result));
118fc223305Sopenharmony_ci
119fc223305Sopenharmony_ci    wrongText = "ab@d";
120fc223305Sopenharmony_ci    EXPECT_FALSE(Base64Helper::Decode(wrongText, result));
121fc223305Sopenharmony_ci
122fc223305Sopenharmony_ci    wrongText = "abc@";
123fc223305Sopenharmony_ci    EXPECT_FALSE(Base64Helper::Decode(wrongText, result));
124fc223305Sopenharmony_ci}
125fc223305Sopenharmony_ci
126fc223305Sopenharmony_ci/**
127fc223305Sopenharmony_ci * @tc.name: Base64HelperTest_004
128fc223305Sopenharmony_ci * @tc.desc: error testcase of base64 decode
129fc223305Sopenharmony_ci * @tc.type: FUNC
130fc223305Sopenharmony_ci */
131fc223305Sopenharmony_ciHWTEST_F(Base64HelperTest, Base64HelperTest_004, TestSize.Level1)
132fc223305Sopenharmony_ci{
133fc223305Sopenharmony_ci    std::vector<uint8_t> array;
134fc223305Sopenharmony_ci    for (size_t i = 0; i < 256; ++i) {
135fc223305Sopenharmony_ci        array.push_back(i);
136fc223305Sopenharmony_ci    }
137fc223305Sopenharmony_ci    std::string encodeStr = Base64Helper::Encode(array);
138fc223305Sopenharmony_ci    std::vector<uint8_t> decodeArray;
139fc223305Sopenharmony_ci    EXPECT_TRUE(Base64Helper::Decode(encodeStr, decodeArray));
140fc223305Sopenharmony_ci    EXPECT_TRUE(array == decodeArray);
141fc223305Sopenharmony_ci}
142fc223305Sopenharmony_ci}
143