1 /*
2  * Copyright (C) 2023 Huawei Device Co., Ltd.
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at
6  *
7  *    http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  */
15 
16 #include <cinttypes>
17 #include <unistd.h>
18 #include <gtest/gtest.h>
19 
20 #include "asy_token_manager.h"
21 #include "common_defs.h"
22 #include "device_auth.h"
23 #include "device_auth_defines.h"
24 #include "hc_log.h"
25 #include "json_utils.h"
26 #include "securec.h"
27 
28 using namespace std;
29 using namespace testing::ext;
30 
31 namespace {
32 class AsyTokenManagerTest : public testing::Test {
33 public:
34     static void SetUpTestCase();
35     static void TearDownTestCase();
36     void SetUp();
37     void TearDown();
38 };
39 
SetUpTestCase()40 void AsyTokenManagerTest::SetUpTestCase() {}
41 
TearDownTestCase()42 void AsyTokenManagerTest::TearDownTestCase() {}
43 
SetUp()44 void AsyTokenManagerTest::SetUp()
45 {
46     int ret = InitDeviceAuthService();
47     EXPECT_EQ(ret, HC_SUCCESS);
48 }
49 
TearDown()50 void AsyTokenManagerTest::TearDown()
51 {
52     DestroyDeviceAuthService();
53 }
54 
55 HWTEST_F(AsyTokenManagerTest, AsyTokenManagerTest001, TestSize.Level0)
56 {
57     InitTokenManager();
58     int32_t ret = GetAccountAuthTokenManager()->addToken(DEFAULT_OS_ACCOUNT, OP_BIND, nullptr);
59     EXPECT_NE(ret, HC_SUCCESS);
60 
61     CJson *in = CreateJson();
62     do {
63         if (in == nullptr) {
64             break;
65         }
66         ret = GetAccountAuthTokenManager()->addToken(DEFAULT_OS_ACCOUNT, OP_BIND, in);
67         EXPECT_NE(ret, HC_SUCCESS);
68 
69         ret = GetAccountAuthTokenManager()->addToken(DEFAULT_OS_ACCOUNT, OP_BIND, in);
70         EXPECT_NE(ret, HC_SUCCESS);
71 
72         if (AddStringToJson(in, FIELD_USER_ID, "test_id") != HC_SUCCESS) { // For unit test.
73             break;
74         }
75         ret = GetAccountAuthTokenManager()->addToken(DEFAULT_OS_ACCOUNT, OP_BIND, in);
76         EXPECT_NE(ret, HC_SUCCESS);
77     } while (0);
78     FreeJson(in);
79 }
80 
81 HWTEST_F(AsyTokenManagerTest, AsyTokenManagerTest002, TestSize.Level0)
82 {
83     InitTokenManager();
84     int32_t ret;
85     AccountToken accountToken;
86     do {
87         ret = GetAccountAuthTokenManager()->getToken(DEFAULT_OS_ACCOUNT, nullptr, nullptr, nullptr);
88         EXPECT_NE(ret, HC_SUCCESS);
89 
90         ret = GetAccountAuthTokenManager()->getToken(DEFAULT_OS_ACCOUNT, &accountToken, nullptr, nullptr);
91         EXPECT_NE(ret, HC_SUCCESS);
92 
93         ret = GetAccountAuthTokenManager()->getToken(DEFAULT_OS_ACCOUNT, &accountToken, "userId", nullptr);
94         EXPECT_NE(ret, HC_SUCCESS);
95     } while (0);
96 }
97 
98 HWTEST_F(AsyTokenManagerTest, AsyTokenManagerTest003, TestSize.Level0)
99 {
100     InitTokenManager();
101     int32_t ret;
102 
103     do {
104         ret = GetAccountAuthTokenManager()->deleteToken(DEFAULT_OS_ACCOUNT, nullptr, nullptr);
105         EXPECT_NE(ret, HC_SUCCESS);
106 
107         ret = GetAccountAuthTokenManager()->deleteToken(DEFAULT_OS_ACCOUNT, "userId", nullptr); // For unit test.
108         EXPECT_NE(ret, HC_SUCCESS);
109 
110         ret = GetAccountAuthTokenManager()->deleteToken(DEFAULT_OS_ACCOUNT, "userId", "deviceId"); // For unit test.
111         EXPECT_NE(ret, HC_SUCCESS);
112     } while (0);
113 }
114 
115 HWTEST_F(AsyTokenManagerTest, AsyTokenManagerTest004, TestSize.Level0)
116 {
117     InitTokenManager();
118     int32_t ret;
119 
120     CJson *in = CreateJson();
121     do {
122         if (in == nullptr) {
123             break;
124         }
125         ret = GetAccountAuthTokenManager()->getRegisterProof(DEFAULT_OS_ACCOUNT, nullptr, nullptr);
126         EXPECT_NE(ret, HC_SUCCESS);
127 
128         ret = GetAccountAuthTokenManager()->getRegisterProof(DEFAULT_OS_ACCOUNT, in, nullptr);
129         EXPECT_NE(ret, HC_SUCCESS);
130 
131         if (AddStringToJson(in, FIELD_USER_ID, "userId")) { // For unit test.
132             break;
133         }
134         ret = GetAccountAuthTokenManager()->getRegisterProof(DEFAULT_OS_ACCOUNT, in, nullptr);
135         EXPECT_NE(ret, HC_SUCCESS);
136 
137         if (AddStringToJson(in, FIELD_VERSION, "version")) { // For unit test.
138             break;
139         }
140         ret = GetAccountAuthTokenManager()->getRegisterProof(DEFAULT_OS_ACCOUNT, in, nullptr);
141         EXPECT_NE(ret, HC_SUCCESS);
142     } while (0);
143     FreeJson(in);
144 }
145 
146 HWTEST_F(AsyTokenManagerTest, AsyTokenManagerTest005, TestSize.Level0)
147 {
148     int32_t ret = HC_SUCCESS;
149     (void)DestroyAccountToken(nullptr);
150     EXPECT_EQ(ret, HC_SUCCESS);
151 }
152 }