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#include <iostream>
16#include <map>
17
18#include <gtest/gtest.h>
19
20#include "app_event_store.h"
21#include "hiappevent_base.h"
22#include "hiappevent_config.h"
23#include "hiappevent_userinfo.h"
24
25using namespace testing::ext;
26using namespace OHOS::HiviewDFX;
27
28namespace {
29const std::string TEST_DIR = "/data/test/hiappevent/";
30const std::string TEST_USER_ID_NAME = "testUserName";
31const std::string TEST_USER_ID_VALUE = "testUserId";
32const std::string TEST_USER_PROP_NAME = "testUserName";
33const std::string TEST_USER_PROP_VALUE = "testUserProperty";
34
35class HiAppEventUserInfoTest : public testing::Test {
36public:
37    void SetUp();
38    void TearDown();
39};
40
41void HiAppEventUserInfoTest::SetUp()
42{
43    HiAppEventConfig::GetInstance().SetStorageDir(TEST_DIR);
44    (void)AppEventStore::GetInstance().InitDbStore();
45    HiAppEvent::UserInfo::GetInstance().RemoveUserId(TEST_USER_ID_NAME);
46    HiAppEvent::UserInfo::GetInstance().RemoveUserProperty(TEST_USER_PROP_NAME);
47}
48
49void HiAppEventUserInfoTest::TearDown()
50{
51    (void)AppEventStore::GetInstance().DestroyDbStore();
52}
53}
54
55/**
56 * @tc.name: HiAppEventUserInfoTest001
57 * @tc.desc: Test to set and get user id.
58 * @tc.type: FUNC
59 * @tc.require: issueI8EOLQ
60 */
61HWTEST_F(HiAppEventUserInfoTest, HiAppEventUserInfoTest001, TestSize.Level3)
62{
63    std::cout << "HiAppEventUserInfoTest001 start" << std::endl;
64
65    {
66        int ret = HiAppEvent::UserInfo::GetInstance().SetUserId(TEST_USER_ID_NAME, TEST_USER_ID_VALUE);
67        ASSERT_EQ(ret, 0);
68    }
69    {
70        std::string strUserId;
71        int ret = HiAppEvent::UserInfo::GetInstance().GetUserId(TEST_USER_ID_NAME, strUserId);
72        ASSERT_EQ(ret, 0);
73        ASSERT_NE(strUserId, "");
74    }
75
76    std::cout << "HiAppEventUserInfoTest001 end" << std::endl;
77}
78
79/**
80 * @tc.name: HiAppEventUserInfoTest002
81 * @tc.desc: Test failed to get user id.
82 * @tc.type: FUNC
83 * @tc.require: issueI8EOLQ
84 */
85HWTEST_F(HiAppEventUserInfoTest, HiAppEventUserInfoTest002, TestSize.Level3)
86{
87    std::cout << "HiAppEventUserInfoTest002 start" << std::endl;
88
89    {
90        int ret = HiAppEvent::UserInfo::GetInstance().SetUserId(TEST_USER_ID_NAME, TEST_USER_ID_VALUE);
91        ASSERT_EQ(ret, 0);
92    }
93    {
94        std::string strUserId;
95        int ret = HiAppEvent::UserInfo::GetInstance().GetUserId("", strUserId);
96        ASSERT_EQ(ret, 0);
97        ASSERT_EQ(strUserId, "");
98    }
99
100    std::cout << "HiAppEventUserInfoTest002 end" << std::endl;
101}
102
103/**
104 * @tc.name: HiAppEventUserInfoTest003
105 * @tc.desc: Test to replace and get user id.
106 * @tc.type: FUNC
107 * @tc.require: issueI8EOLQ
108 */
109HWTEST_F(HiAppEventUserInfoTest, HiAppEventUserInfoTest003, TestSize.Level3)
110{
111    std::cout << "HiAppEventUserInfoTest003 start" << std::endl;
112
113    {
114        int ret = HiAppEvent::UserInfo::GetInstance().SetUserId(TEST_USER_ID_NAME, TEST_USER_ID_VALUE);
115        ASSERT_EQ(ret, 0);
116
117        ret = HiAppEvent::UserInfo::GetInstance().SetUserId(TEST_USER_ID_NAME, "testUserId1");
118        ASSERT_EQ(ret, 0);
119    }
120    {
121        std::string strUserId;
122        int ret = HiAppEvent::UserInfo::GetInstance().GetUserId(TEST_USER_ID_NAME, strUserId);
123        ASSERT_EQ(ret, 0);
124        ASSERT_EQ(strUserId, "testUserId1");
125    }
126
127    std::cout << "HiAppEventUserInfoTest003 end" << std::endl;
128}
129
130/**
131 * @tc.name: HiAppEventUserInfoTest004
132 * @tc.desc: Test to remove and get user id.
133 * @tc.type: FUNC
134 * @tc.require: issueI8EOLQ
135 */
136HWTEST_F(HiAppEventUserInfoTest, HiAppEventUserInfoTest004, TestSize.Level3)
137{
138    std::cout << "HiAppEventUserInfoTest004 start" << std::endl;
139
140    {
141        int ret = HiAppEvent::UserInfo::GetInstance().SetUserId(TEST_USER_ID_NAME, TEST_USER_ID_VALUE);
142        ASSERT_EQ(ret, 0);
143
144        ret = HiAppEvent::UserInfo::GetInstance().SetUserId(TEST_USER_ID_NAME, "");
145        ASSERT_EQ(ret, 0);
146    }
147    {
148        std::string strUserId;
149        int ret = HiAppEvent::UserInfo::GetInstance().GetUserId(TEST_USER_ID_NAME, strUserId);
150        ASSERT_EQ(ret, 0);
151        ASSERT_EQ(strUserId, "");
152    }
153
154    std::cout << "HiAppEventUserInfoTest004 end" << std::endl;
155}
156
157/**
158 * @tc.name: HiAppEventUserInfoTest005
159 * @tc.desc: Test to set and get user property.
160 * @tc.type: FUNC
161 * @tc.require: issueI8EOLQ
162 */
163HWTEST_F(HiAppEventUserInfoTest, HiAppEventUserInfoTest005, TestSize.Level3)
164{
165    std::cout << "HiAppEventUserInfoTest005 start" << std::endl;
166
167    {
168        int ret = HiAppEvent::UserInfo::GetInstance().SetUserProperty(TEST_USER_PROP_NAME, TEST_USER_PROP_VALUE);
169        ASSERT_EQ(ret, 0);
170    }
171    {
172        std::string strUserProperty;
173        int ret = HiAppEvent::UserInfo::GetInstance().GetUserProperty(TEST_USER_PROP_NAME, strUserProperty);
174        ASSERT_EQ(ret, 0);
175        ASSERT_NE(strUserProperty, "");
176    }
177
178    std::cout << "HiAppEventUserInfoTest005 end" << std::endl;
179}
180
181/**
182 * @tc.name: HiAppEventUserInfoTest006
183 * @tc.desc: Test failed to get user property.
184 * @tc.type: FUNC
185 * @tc.require: issueI8EOLQ
186 */
187HWTEST_F(HiAppEventUserInfoTest, HiAppEventUserInfoTest006, TestSize.Level3)
188{
189    std::cout << "HiAppEventUserInfoTest006 start" << std::endl;
190
191    {
192        int ret = HiAppEvent::UserInfo::GetInstance().SetUserProperty(TEST_USER_PROP_NAME, TEST_USER_PROP_VALUE);
193        ASSERT_EQ(ret, 0);
194    }
195    {
196        std::string strUserProperty;
197        int ret = HiAppEvent::UserInfo::GetInstance().GetUserProperty("", strUserProperty);
198        ASSERT_EQ(ret, 0);
199        ASSERT_EQ(strUserProperty, "");
200    }
201
202    std::cout << "HiAppEventUserInfoTest006 end" << std::endl;
203}
204
205/**
206 * @tc.name: HiAppEventUserInfoTest007
207 * @tc.desc: Test to set and get user property.
208 * @tc.type: FUNC
209 * @tc.require: issueI8EOLQ
210 */
211HWTEST_F(HiAppEventUserInfoTest, HiAppEventUserInfoTest007, TestSize.Level3)
212{
213    std::cout << "HiAppEventUserInfoTest007 start" << std::endl;
214
215    {
216        int ret = HiAppEvent::UserInfo::GetInstance().SetUserProperty(TEST_USER_PROP_NAME, TEST_USER_PROP_VALUE);
217        ASSERT_EQ(ret, 0);
218
219        ret = HiAppEvent::UserInfo::GetInstance().SetUserProperty(TEST_USER_PROP_NAME, "testUserProperty1");
220        ASSERT_EQ(ret, 0);
221    }
222    {
223        std::string strUserProperty;
224        int ret = HiAppEvent::UserInfo::GetInstance().GetUserProperty(TEST_USER_PROP_NAME, strUserProperty);
225        ASSERT_EQ(ret, 0);
226        ASSERT_EQ(strUserProperty, "testUserProperty1");
227    }
228
229    std::cout << "HiAppEventUserInfoTest007 end" << std::endl;
230}
231
232/**
233 * @tc.name: HiAppEventUserInfoTest008
234 * @tc.desc: Test to remove and get user property.
235 * @tc.type: FUNC
236 * @tc.require: issueI8EOLQ
237 */
238HWTEST_F(HiAppEventUserInfoTest, HiAppEventUserInfoTest008, TestSize.Level3)
239{
240    std::cout << "HiAppEventUserInfoTest008 start" << std::endl;
241
242    {
243        int ret = HiAppEvent::UserInfo::GetInstance().SetUserProperty(TEST_USER_PROP_NAME, TEST_USER_PROP_VALUE);
244        ASSERT_EQ(ret, 0);
245
246        ret = HiAppEvent::UserInfo::GetInstance().SetUserProperty(TEST_USER_PROP_NAME, "");
247        ASSERT_EQ(ret, 0);
248    }
249    {
250        std::string strUserProperty;
251        int ret = HiAppEvent::UserInfo::GetInstance().GetUserProperty(TEST_USER_PROP_NAME, strUserProperty);
252        ASSERT_EQ(ret, 0);
253        ASSERT_EQ(strUserProperty, "");
254    }
255
256    std::cout << "HiAppEventUserInfoTest008 end" << std::endl;
257}