• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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