1 /*
2 * Copyright (c) 2022 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 <gtest/gtest.h>
17
18 #include "account_log_wrapper.h"
19 #include "app_mgr_constants.h"
20 #define protected public
21 #define private public
22 #include "app_account_authenticator_session.h"
23 #include "app_account_check_labels_callback.h"
24 #include "app_account_check_labels_session.h"
25 #include "app_account_info.h"
26 #include "app_account_constants.h"
27 #undef private
28 #undef protected
29
30 using namespace testing;
31 using namespace testing::ext;
32 using namespace OHOS;
33 using namespace OHOS::AccountSA;
34
35 namespace {
36 const std::string NAME = "NAME";
37 const std::string SESSION_ID = "256";
38 const std::string OWNER = "owner";
39 const std::int32_t NUMBER_SIZE = 1;
40 const std::int32_t NUMBER_ZERO = 0;
41 }
42
43 class AppAccountCheckLabelsModuleTest : public testing::Test {
44 public:
45 static void SetUpTestCase(void);
46 static void TearDownTestCase(void);
47 void SetUp(void) override;
48 void TearDown(void) override;
49 std::shared_ptr<AppAccountCheckLabelsSession> appAccountCheckLabelsSessionPtr;
50 std::shared_ptr<AppAccountCheckLabelsCallback> appAccountCheckLabelsCallbackPtr;
51 };
52
SetUpTestCase(void)53 void AppAccountCheckLabelsModuleTest::SetUpTestCase(void)
54 {}
55
TearDownTestCase(void)56 void AppAccountCheckLabelsModuleTest::TearDownTestCase(void)
57 {}
58
SetUp(void)59 void AppAccountCheckLabelsModuleTest::SetUp(void) __attribute__((no_sanitize("cfi")))
60 {
61 testing::UnitTest *test = testing::UnitTest::GetInstance();
62 ASSERT_NE(test, nullptr);
63 const testing::TestInfo *testinfo = test->current_test_info();
64 ASSERT_NE(testinfo, nullptr);
65 string testCaseName = string(testinfo->name());
66 ACCOUNT_LOGI("[SetUp] %{public}s start", testCaseName.c_str());
67
68 AppAccountInfo testAppAccountInfo(NAME, OWNER);
69 std::vector<AppAccountInfo> accounts;
70 accounts.emplace_back(testAppAccountInfo);
71 AuthenticatorSessionRequest request;
72 request.name = NAME;
73 appAccountCheckLabelsSessionPtr = std::make_shared<AppAccountCheckLabelsSession>(accounts, request);
74 appAccountCheckLabelsCallbackPtr = std::make_shared<AppAccountCheckLabelsCallback>(accounts, request, SESSION_ID);
75 }
76
TearDown(void)77 void AppAccountCheckLabelsModuleTest::TearDown(void)
78 {}
79
80 /**
81 * @tc.name: AppAccountAuthenticateTest_Open_0100
82 * @tc.desc: test AppAccountCheckLabelsSession func failed with open twice.
83 * @tc.type: FUNC
84 * @tc.require:
85 */
86 HWTEST_F(AppAccountCheckLabelsModuleTest, AppAccountCheckLabelsModuleTest_Open_0100, TestSize.Level1)
87 {
88 ASSERT_NE(appAccountCheckLabelsSessionPtr, nullptr);
89
90 ErrCode result = appAccountCheckLabelsSessionPtr->Open();
91 ASSERT_EQ(result, ERR_OK);
92 result = appAccountCheckLabelsSessionPtr->Open();
93 ASSERT_EQ(result, ERR_APPACCOUNT_SERVICE_OAUTH_SERVICE_EXCEPTION);
94 }
95
96 /**
97 * @tc.name: AppAccountAuthenticateTest_CheckLabels_0100
98 * @tc.desc: test AppAccountCheckLabelsSession func CheckLabels success.
99 * @tc.type: FUNC
100 * @tc.require:
101 */
102 HWTEST_F(AppAccountCheckLabelsModuleTest, AppAccountCheckLabelsModuleTest_CheckLabels_0100, TestSize.Level1)
103 {
104 ASSERT_NE(appAccountCheckLabelsSessionPtr, nullptr);
105
106 std::vector<AppAccountInfo> accounts;
107 AuthenticatorSessionRequest request;
108 std::string sessionId = SESSION_ID;
109 AppAccountInfo testAppAccountInfo(NAME, OWNER);
110 accounts.emplace_back(testAppAccountInfo);
111 appAccountCheckLabelsSessionPtr->checkCallback_ =
112 new (std::nothrow) AppAccountCheckLabelsCallback(accounts, request, sessionId);
113 ASSERT_NE(appAccountCheckLabelsSessionPtr->checkCallback_, nullptr);
114 ErrCode result = appAccountCheckLabelsSessionPtr->CheckLabels();
115 ASSERT_EQ(result, ERR_OK);
116 }
117
118 /**
119 * @tc.name: AppAccountAuthenticateTest_GetRequest_0100
120 * @tc.desc: test AppAccountCheckLabelsSession func GetRequest success.
121 * @tc.type: FUNC
122 * @tc.require:
123 */
124 HWTEST_F(AppAccountCheckLabelsModuleTest, AppAccountCheckLabelsModuleTest_GetRequest_0100, TestSize.Level1)
125 {
126 ASSERT_NE(appAccountCheckLabelsSessionPtr, nullptr);
127
128 AuthenticatorSessionRequest resultRequest;
129 appAccountCheckLabelsSessionPtr->GetRequest(resultRequest);
130 ASSERT_EQ(resultRequest.name, NAME);
131 }
132
133 /**
134 * @tc.name: AppAccountAuthenticateTest_GetRequest_0100
135 * @tc.desc: test AppAccountCheckLabelsCallback func OnResult success.
136 * @tc.type: FUNC
137 * @tc.require:
138 */
139 HWTEST_F(AppAccountCheckLabelsModuleTest, AppAccountCheckLabelsModuleTest_OnResult_0100, TestSize.Level1)
140 {
141 ASSERT_NE(appAccountCheckLabelsCallbackPtr, nullptr);
142
143 int32_t resultCode = -1;
144 AAFwk::Want result;
145 result.SetParam(Constants::KEY_BOOLEAN_RESULT, true);
146 ASSERT_EQ(appAccountCheckLabelsCallbackPtr->accountsWithLabels_.size(), NUMBER_ZERO);
147 ASSERT_EQ(appAccountCheckLabelsCallbackPtr->index_, NUMBER_ZERO);
148 appAccountCheckLabelsCallbackPtr->isRequesting_ = true;
149 appAccountCheckLabelsCallbackPtr->OnResult(resultCode, result);
150 ASSERT_EQ(appAccountCheckLabelsCallbackPtr->index_, NUMBER_SIZE);
151 ASSERT_EQ(appAccountCheckLabelsCallbackPtr->accountsWithLabels_.size(), NUMBER_SIZE);
152 }
153
154 /**
155 * @tc.name: AppAccountAuthenticateTest_OnRequestRedirected_0100
156 * @tc.desc: test AppAccountCheckLabelsCallback func OnRequestRedirected success.
157 * @tc.type: FUNC
158 * @tc.require:
159 */
160 HWTEST_F(AppAccountCheckLabelsModuleTest, AppAccountCheckLabelsModuleTest_OnRequestRedirected_0100, TestSize.Level1)
161 {
162 ASSERT_NE(appAccountCheckLabelsCallbackPtr, nullptr);
163
164 AAFwk::Want request;
165 ASSERT_EQ(appAccountCheckLabelsCallbackPtr->index_, NUMBER_ZERO);
166 appAccountCheckLabelsCallbackPtr->isRequesting_ = true;
167 appAccountCheckLabelsCallbackPtr->OnRequestRedirected(request);
168 ASSERT_EQ(appAccountCheckLabelsCallbackPtr->index_, NUMBER_SIZE);
169 }
170
171 /**
172 * @tc.name: AppAccountAuthenticateTest_OnRequestContinued_0100
173 * @tc.desc: test AppAccountCheckLabelsCallback func OnRequestContinued success.
174 * @tc.type: FUNC
175 * @tc.require:
176 */
177 HWTEST_F(AppAccountCheckLabelsModuleTest, AppAccountCheckLabelsModuleTest_OnRequestContinued_0100, TestSize.Level1)
178 {
179 ASSERT_NE(appAccountCheckLabelsCallbackPtr, nullptr);
180
181 ASSERT_EQ(appAccountCheckLabelsCallbackPtr->index_, NUMBER_ZERO);
182 appAccountCheckLabelsCallbackPtr->isRequesting_ = true;
183 appAccountCheckLabelsCallbackPtr->OnRequestContinued();
184 ASSERT_EQ(appAccountCheckLabelsCallbackPtr->index_, NUMBER_SIZE);
185 }