• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2021-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 #define LOG_TAG "AccountDelegateTest"
17 #include <gtest/gtest.h>
18 #include <memory.h>
19 #include "account_delegate.h"
20 #include "ipc_skeleton.h"
21 #include "log_print.h"
22 
23 namespace {
24 using namespace OHOS::DistributedKv;
25 using namespace testing::ext;
26 class AccountObserver : public AccountDelegate::Observer {
27 public:
OnAccountChanged(const AccountEventInfo & info)28     void OnAccountChanged(const AccountEventInfo &info) override
29     {
30     }
31     // must specify unique name for observer
Name()32     std::string Name() override
33     {
34         return name_;
35     }
36 
GetLevel()37     LevelType GetLevel() override
38     {
39         return LevelType::LOW;
40     }
41 
SetName(const std::string & name)42     void SetName(const std::string &name)
43     {
44         name_ = name;
45     }
46 private:
47     std::string name_ = "accountTestObserver";
48 };
49 
50 class AccountDelegateTest : public testing::Test {
51 public:
SetUpTestCase(void)52     static void SetUpTestCase(void) {}
TearDownTestCase(void)53     static void TearDownTestCase(void) {}
SetUp()54     void SetUp() {}
TearDown()55     void TearDown() {}
56 
57 protected:
58     static const std::string DEFAULT_OHOS_ACCOUNT_UID;
59     static const uint32_t INVALID_TOKEN_ID;
60     static const int32_t INVALID_USER;
61 };
62 const std::string AccountDelegateTest::DEFAULT_OHOS_ACCOUNT_UID = "ohosAnonymousUid";
63 const uint32_t AccountDelegateTest::INVALID_TOKEN_ID = -1;
64 const int32_t AccountDelegateTest::INVALID_USER = -1;
65 
66 /**
67 * @tc.name: Subscribe001
68 * @tc.desc: subscribe user change, the observer is invalid
69 * @tc.type: FUNC
70 * @tc.require: AR000D08K2 AR000CQDUM
71 * @tc.author: hongbo
72 */
73 HWTEST_F(AccountDelegateTest, Subscribe001, TestSize.Level0)
74 {
75     auto account = AccountDelegate::GetInstance();
76     EXPECT_NE(account, nullptr);
77     auto status = account->Subscribe(nullptr);
78     EXPECT_EQ(status, Status::INVALID_ARGUMENT);
79     auto observer = std::make_shared<AccountObserver>();
80     observer->SetName("");
81     status = account->Subscribe(observer);
82     EXPECT_EQ(status, Status::INVALID_ARGUMENT);
83 }
84 
85 /**
86 * @tc.name: Subscribe002
87 * @tc.desc: subscribe user change
88 * @tc.type: FUNC
89 * @tc.require:
90 * @tc.author: zuojiangjiang
91 */
92 HWTEST_F(AccountDelegateTest, Subscribe002, TestSize.Level0)
93 {
94     auto account = AccountDelegate::GetInstance();
95     EXPECT_NE(account, nullptr);
96     auto observer = std::make_shared<AccountObserver>();
97     auto status = account->Subscribe(observer);
98     EXPECT_EQ(status, Status::SUCCESS);
99     observer->SetName("Subscribe002Observer");
100     status = account->Subscribe(observer);
101     EXPECT_EQ(status, Status::SUCCESS);
102 }
103 
104 /**
105 * @tc.name: Unsubscribe001
106 * @tc.desc: unsubscribe user change, the observer is invalid
107 * @tc.type: FUNC
108 * @tc.require:
109 * @tc.author: zuojiangjiang
110 */
111 HWTEST_F(AccountDelegateTest, Unsubscribe001, TestSize.Level0)
112 {
113     auto account = AccountDelegate::GetInstance();
114     EXPECT_NE(account, nullptr);
115     auto status = account->Unsubscribe(nullptr);
116     EXPECT_EQ(status, Status::INVALID_ARGUMENT);
117     auto observer = std::make_shared<AccountObserver>();
118     observer->SetName("");
119     status = account->Unsubscribe(observer);
120     EXPECT_EQ(status, Status::INVALID_ARGUMENT);
121     observer->SetName("Unsubscribe001Observer");
122     status = account->Unsubscribe(observer);
123     EXPECT_EQ(status, Status::INVALID_ARGUMENT);
124 }
125 
126 /**
127 * @tc.name: Unsubscribe002
128 * @tc.desc: unsubscribe user change
129 * @tc.type: FUNC
130 * @tc.require:
131 * @tc.author: zuojiangjiang
132 */
133 HWTEST_F(AccountDelegateTest, Unsubscribe002, TestSize.Level0)
134 {
135     auto account = AccountDelegate::GetInstance();
136     EXPECT_NE(account, nullptr);
137     auto observer = std::make_shared<AccountObserver>();
138     account->Subscribe(observer);
139     auto status = account->Unsubscribe(observer);
140     EXPECT_EQ(status, Status::SUCCESS);
141     observer->SetName("Unsubscribe002ObserverPre");
142     status = account->Subscribe(observer);
143     EXPECT_EQ(status, Status::SUCCESS);
144     observer->SetName("Unsubscribe002ObserverAfter");
145     status = account->Subscribe(observer);
146     EXPECT_EQ(status, Status::SUCCESS);
147     status = account->Unsubscribe(observer);
148     EXPECT_EQ(status, Status::SUCCESS);
149     observer->SetName("Unsubscribe002ObserverPre");
150     status = account->Unsubscribe(observer);
151     EXPECT_EQ(status, Status::SUCCESS);
152 }
153 
154 /**
155 * @tc.name: GetCurrentAccountId
156 * @tc.desc: get current account Id
157 * @tc.type: FUNC
158 * @tc.require:
159 * @tc.author: zuojiangjiang
160 */
161 HWTEST_F(AccountDelegateTest, GetCurrentAccountId, TestSize.Level0)
162 {
163     auto accountId = AccountDelegate::GetInstance()->GetCurrentAccountId();
164     EXPECT_EQ(accountId, DEFAULT_OHOS_ACCOUNT_UID);
165 }
166 
167 /**
168 * @tc.name: GetUserByToken
169 * @tc.desc: get user by token
170 * @tc.type: FUNC
171 * @tc.require:
172 * @tc.author: zuojiangjiang
173 */
174 HWTEST_F(AccountDelegateTest, GetUserByToken, TestSize.Level0)
175 {
176     auto user = AccountDelegate::GetInstance()->GetUserByToken(INVALID_TOKEN_ID);
177     EXPECT_EQ(user, INVALID_USER);
178     user = AccountDelegate::GetInstance()->GetUserByToken(OHOS::IPCSkeleton::GetCallingTokenID());
179     EXPECT_EQ(user, 0);
180 }
181 
182 /**
183 * @tc.name: QueryUsers
184 * @tc.desc: query users
185 * @tc.type: FUNC
186 * @tc.require:
187 * @tc.author: zuojiangjiang
188 */
189 HWTEST_F(AccountDelegateTest, QueryUsers, TestSize.Level0)
190 {
191     std::vector<int32_t> users;
192     AccountDelegate::GetInstance()->QueryUsers(users);
193     EXPECT_GT(users.size(), 0);
194 }
195 } // namespace
196