1 /*
2 * Copyright (C) 2024 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 "user_auth_napi_client_test.h"
17
18 #include "iam_ptr.h"
19 #include "modal_callback_service.h"
20 #include "user_auth_modal_inner_callback.h"
21 #include "user_auth_napi_client_impl.h"
22
23 namespace OHOS {
24 namespace UserIam {
25 namespace UserAuth {
26 using namespace testing;
27 using namespace testing::ext;
28
SetUpTestCase()29 void UserAuthNapiClientTest::SetUpTestCase()
30 {
31 }
32
TearDownTestCase()33 void UserAuthNapiClientTest::TearDownTestCase()
34 {
35 }
36
SetUp()37 void UserAuthNapiClientTest::SetUp()
38 {
39 }
40
TearDown()41 void UserAuthNapiClientTest::TearDown()
42 {
43 }
44
45 HWTEST_F(UserAuthNapiClientTest, UserAuthNapiClientBeginWidgetAuth001, TestSize.Level0)
46 {
47 static const int32_t apiVersion = 0;
48 AuthParamInner authParam;
49 UserAuthNapiClientImpl::WidgetParamNapi widgetParam;
50 std::shared_ptr<MockAuthenticationCallback> testCallback = nullptr;
51 testCallback = Common::MakeShared<MockAuthenticationCallback>();
52 std::shared_ptr<UserAuthModalInnerCallback> testModalCallback = Common::MakeShared<UserAuthModalInnerCallback>();
53 uint64_t widgetAuth = UserAuthNapiClientImpl::Instance().BeginWidgetAuth(apiVersion, authParam,
54 widgetParam, testCallback, testModalCallback);
55 EXPECT_EQ(widgetAuth, 0);
56 }
57
58 HWTEST_F(UserAuthNapiClientTest, UserAuthNapiClientBeginWidgetAuth002, TestSize.Level0)
59 {
60 int32_t testVersion = 0;
61 AuthParamInner testParam = {};
62 testParam.challenge = {0};
63 testParam.authTypes = {ALL};
64 WidgetParamInner testWidgetParamInner = {};
65 testWidgetParamInner.title = "title";
66 auto testCallback = Common::MakeShared<MockAuthenticationCallback>();
67 EXPECT_NE(testCallback, nullptr);
68
69 uint64_t testContextVersion = 1;
70 auto service = Common::MakeShared<MockUserAuthService>();
71 EXPECT_NE(service, nullptr);
72 EXPECT_CALL(*service, AuthWidget(_, _, _, _, _)).WillRepeatedly(Return(true));
73 ON_CALL(*service, AuthWidget)
74 .WillByDefault(
75 [&testVersion, &testParam, &testWidgetParamInner, &testContextVersion](int32_t apiVersion,
76 const AuthParamInner &authParam, const WidgetParamInner &widgetParam,
__anon525c9e820102(int32_t apiVersion, const AuthParamInner &authParam, const WidgetParamInner &widgetParam, sptr<UserAuthCallbackInterface> &callback, sptr<ModalCallbackInterface> &modalCallback) 77 sptr<UserAuthCallbackInterface> &callback, sptr<ModalCallbackInterface> &modalCallback) {
78 EXPECT_EQ(apiVersion, testVersion);
79 EXPECT_EQ(authParam.authTypes, testParam.authTypes);
80 EXPECT_EQ(widgetParam.title, testWidgetParamInner.title);
81 if (callback != nullptr) {
82 Attributes extraInfo;
83 callback->OnResult(static_cast<int32_t>(ResultCode::GENERAL_ERROR), extraInfo);
84 }
85 return testContextVersion;
86 }
87 );
88
89 sptr<MockRemoteObject> obj = new MockRemoteObject();
90 sptr<IRemoteObject::DeathRecipient> dr(nullptr);
91 CallRemoteObject(service, obj, dr);
92 AuthParamInner testAuthParam = {};
93 UserAuthNapiClientImpl::WidgetParamNapi testWidgetParam = {};
94 testWidgetParam.title = "title";
95 std::shared_ptr<UserAuthModalInnerCallback> testModalCallback = Common::MakeShared<UserAuthModalInnerCallback>();
96 uint64_t widgetAuth = UserAuthNapiClientImpl::Instance().BeginWidgetAuth(testVersion, testAuthParam,
97 testWidgetParam, testCallback, testModalCallback);
98 EXPECT_EQ(widgetAuth, testContextVersion);
99 dr->OnRemoteDied(obj);
100 IpcClientUtils::ResetObj();
101 }
102
103 HWTEST_F(UserAuthNapiClientTest, UserAuthNapiClientBeginWidgetAuth003, TestSize.Level0)
104 {
105 static const int32_t apiVersion = 0;
106 AuthParamInner authParam;
107 authParam.userId = 101;
108 UserAuthNapiClientImpl::WidgetParamNapi widgetParam;
109 std::shared_ptr<MockAuthenticationCallback> testCallback = nullptr;
110 testCallback = Common::MakeShared<MockAuthenticationCallback>();
111 std::shared_ptr<UserAuthModalInnerCallback> testModalCallback = Common::MakeShared<UserAuthModalInnerCallback>();
112 uint64_t widgetAuth = UserAuthNapiClientImpl::Instance().BeginWidgetAuth(apiVersion, authParam,
113 widgetParam, testCallback, testModalCallback);
114 EXPECT_EQ(widgetAuth, 0);
115 }
116
117 HWTEST_F(UserAuthNapiClientTest, UserAuthNapiClientBeginWidgetAuth004, TestSize.Level0)
118 {
119 int32_t testVersion = 0;
120 AuthParamInner testParam = {};
121 testParam.userId = 101;
122 testParam.challenge = {0};
123 testParam.authTypes = {ALL};
124 WidgetParamInner testWidgetParamInner = {};
125 testWidgetParamInner.title = "title";
126 auto testCallback = Common::MakeShared<MockAuthenticationCallback>();
127 EXPECT_NE(testCallback, nullptr);
128
129 uint64_t testContextVersion = 1;
130 auto service = Common::MakeShared<MockUserAuthService>();
131 EXPECT_NE(service, nullptr);
132 EXPECT_CALL(*service, AuthWidget(_, _, _, _, _)).WillRepeatedly(Return(true));
133 ON_CALL(*service, AuthWidget)
134 .WillByDefault(
135 [&testVersion, &testParam, &testWidgetParamInner, &testContextVersion](int32_t apiVersion,
136 const AuthParamInner &authParam, const WidgetParamInner &widgetParam,
__anon525c9e820202(int32_t apiVersion, const AuthParamInner &authParam, const WidgetParamInner &widgetParam, sptr<UserAuthCallbackInterface> &callback, sptr<ModalCallbackInterface> &modalCallback) 137 sptr<UserAuthCallbackInterface> &callback, sptr<ModalCallbackInterface> &modalCallback) {
138 EXPECT_EQ(apiVersion, testVersion);
139 EXPECT_EQ(authParam.authTypes, testParam.authTypes);
140 EXPECT_EQ(widgetParam.title, testWidgetParamInner.title);
141 if (callback != nullptr) {
142 Attributes extraInfo;
143 callback->OnResult(static_cast<int32_t>(ResultCode::GENERAL_ERROR), extraInfo);
144 }
145 return testContextVersion;
146 }
147 );
148
149 sptr<MockRemoteObject> obj = new MockRemoteObject();
150 sptr<IRemoteObject::DeathRecipient> dr(nullptr);
151 CallRemoteObject(service, obj, dr);
152 AuthParamInner testAuthParam = {};
153 UserAuthNapiClientImpl::WidgetParamNapi testWidgetParam = {};
154 testWidgetParam.title = "title";
155 std::shared_ptr<UserAuthModalInnerCallback> testModalCallback = Common::MakeShared<UserAuthModalInnerCallback>();
156 uint64_t widgetAuth = UserAuthNapiClientImpl::Instance().BeginWidgetAuth(testVersion, testAuthParam,
157 testWidgetParam, testCallback, testModalCallback);
158 EXPECT_EQ(widgetAuth, testContextVersion);
159 dr->OnRemoteDied(obj);
160 IpcClientUtils::ResetObj();
161 }
162
CallRemoteObject(const std::shared_ptr<MockUserAuthService> service,const sptr<MockRemoteObject> & obj,sptr<IRemoteObject::DeathRecipient> & dr)163 void UserAuthNapiClientTest::CallRemoteObject(const std::shared_ptr<MockUserAuthService> service,
164 const sptr<MockRemoteObject> &obj, sptr<IRemoteObject::DeathRecipient> &dr)
165 {
166 EXPECT_NE(obj, nullptr);
167 EXPECT_CALL(*obj, IsProxyObject()).WillRepeatedly(Return(true));
168 EXPECT_CALL(*obj, RemoveDeathRecipient(_)).WillRepeatedly(Return(true));
169 EXPECT_CALL(*obj, AddDeathRecipient(_))
170 .WillRepeatedly([&dr](const sptr<IRemoteObject::DeathRecipient> &recipient) {
171 dr = recipient;
172 return true;
173 });
174
175 IpcClientUtils::SetObj(obj);
176 EXPECT_CALL(*obj, SendRequest(_, _, _, _)).Times(1);
177 ON_CALL(*obj, SendRequest)
178 .WillByDefault([&service](uint32_t code, MessageParcel &data, MessageParcel &reply, MessageOption &option) {
179 service->OnRemoteRequest(code, data, reply, option);
180 return OHOS::NO_ERROR;
181 });
182 }
183 } // namespace UserAuth
184 } // namespace UserIam
185 } // namespace OHOS