1 /*
2 * Copyright (c) 2025 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 private public
17 #define protected public
18 #include <string>
19 #include <vector>
20 #include <memory>
21 #include "gtest/gtest.h"
22 #include "refbase.h"
23 #include "distributed_device_profile_constants.h"
24 #include "distributed_device_profile_errors.h"
25 #include "distributed_device_profile_enums.h"
26 #include "ikv_adapter.h"
27 #include "business_event_adapter.h"
28 #include "kv_data_change_listener.h"
29 #include "kv_sync_completed_listener.h"
30 #include "kv_store_death_recipient.h"
31 #undef private
32 #undef protected
33
34 namespace OHOS {
35 namespace DistributedDeviceProfile {
36 using namespace testing::ext;
37 using namespace std;
38 namespace {
39 const std::string STORE_ID = "dp_kv_store_business";
40 shared_ptr<IKVAdapter> kvStore = nullptr;
41 }
42
43 class BusinessAdapterTest : public testing::Test {
44 public:
45 static void SetUpTestCase(void);
46 static void TearDownTestCase(void);
47 void SetUp();
48 void TearDown();
49 };
50
SetUpTestCase(void)51 void BusinessAdapterTest::SetUpTestCase(void)
52 {
53 kvStore = make_shared<BusinessEventAdapter>(make_shared<KvDeathRecipient>(STORE_ID), DistributedKv::TYPE_DYNAMICAL);
54 }
55
TearDownTestCase(void)56 void BusinessAdapterTest::TearDownTestCase(void) {
57 }
58
SetUp()59 void BusinessAdapterTest::SetUp()
60 {
61 kvStore->Init();
62 }
63
TearDown()64 void BusinessAdapterTest::TearDown()
65 {
66 kvStore->UnInit();
67 }
68
69 /**
70 * @tc.name: Init001
71 * @tc.desc: Init succeed.
72 * @tc.type: FUNC
73 * @tc.require:
74 */
75 HWTEST_F(BusinessAdapterTest, Init001, TestSize.Level1)
76 {
77 kvStore->UnInit();
78 EXPECT_EQ(DP_SUCCESS, kvStore->Init());
79 }
80
81 /**
82 * @tc.name: UnInit001
83 * @tc.desc: UnInit succeed.
84 * @tc.type: FUNC
85 * @tc.require:
86 */
87 HWTEST_F(BusinessAdapterTest, UnInit001, TestSize.Level1)
88 {
89 EXPECT_EQ(DP_SUCCESS, kvStore->UnInit());
90 }
91
92 /**
93 * @tc.name: Put001
94 * @tc.desc: Put succeed.
95 * @tc.type: FUNC
96 * @tc.require:
97 */
98 HWTEST_F(BusinessAdapterTest, Put001, TestSize.Level1)
99 {
100 EXPECT_EQ(DP_SUCCESS, kvStore->Put("business_id_cast+_disturbance_event", "value"));
101 }
102
103 /**
104 * @tc.name: Put002
105 * @tc.desc: Put failed, Param is invalid.
106 * @tc.type: FUNC
107 * @tc.require:
108 */
109 HWTEST_F(BusinessAdapterTest, Put002, TestSize.Level1)
110 {
111 EXPECT_EQ(DP_INVALID_PARAMS, kvStore->Put("", "value"));
112 EXPECT_EQ(DP_INVALID_PARAMS, kvStore->Put("key", ""));
113 }
114
115 /**
116 * @tc.name: Put003
117 * @tc.desc: Put failed, kvDBPtr is null.
118 * @tc.type: FUNC
119 * @tc.require:
120 */
121 HWTEST_F(BusinessAdapterTest, Put003, TestSize.Level1)
122 {
123 kvStore->UnInit();
124 EXPECT_EQ(DP_KV_DB_PTR_NULL, kvStore->Put("key", "value"));
125 }
126
127 /**
128 * @tc.name: Put004
129 * @tc.desc: Put first if.
130 * @tc.type: FUNC
131 * @tc.require:
132 */
133 HWTEST_F(BusinessAdapterTest, Put004, TestSize.Level1)
134 {
135 string key = "key";
136 string value = "value";
137 EXPECT_EQ(DP_SUCCESS, kvStore->Put(key, value));
138
139 for (int32_t i = 0; i < MAX_STRING_LEN + 5; i++) {
140 value += 'a';
141 }
142 EXPECT_EQ(DP_INVALID_PARAMS, kvStore->Put(key, value));
143
144 value = "";
145 EXPECT_EQ(DP_INVALID_PARAMS, kvStore->Put(key, value));
146
147 for (int32_t i = 0; i < MAX_STRING_LEN + 5; i++) {
148 key += 'a';
149 }
150 EXPECT_EQ(DP_INVALID_PARAMS, kvStore->Put(key, value));
151
152 key = "";
153 EXPECT_EQ(DP_INVALID_PARAMS, kvStore->Put(key, value));
154 }
155
156 /**
157 * @tc.name: Delete001
158 * @tc.desc: Delete succeed.
159 * @tc.type: FUNC
160 * @tc.require:
161 */
162 HWTEST_F(BusinessAdapterTest, Delete001, TestSize.Level1)
163 {
164 kvStore->Put("key", "value");
165 EXPECT_EQ(DP_SUCCESS, kvStore->Delete("key"));
166 }
167
168 /**
169 * @tc.name: Delete002
170 * @tc.desc: Delete failed, kvDBPtr is null.
171 * @tc.type: FUNC
172 * @tc.require:
173 */
174 HWTEST_F(BusinessAdapterTest, Delete002, TestSize.Level1)
175 {
176 kvStore->Put("key", "value");
177 kvStore->UnInit();
178 EXPECT_EQ(DP_KV_DB_PTR_NULL, kvStore->Delete("key"));
179 }
180
181 /**
182 * @tc.name: Get001
183 * @tc.desc: Get succeed.
184 * @tc.type: FUNC
185 * @tc.require:
186 */
187 HWTEST_F(BusinessAdapterTest, Get001, TestSize.Level1)
188 {
189 kvStore->Put("business_id_cast+_disturbance_event", "value");
190 string value;
191 EXPECT_EQ(DP_SUCCESS, kvStore->Get("business_id_cast+_disturbance_event", value));
192 EXPECT_EQ("value", value);
193 }
194
195 /**
196 * @tc.name: Get002
197 * @tc.desc: Get failed, kvDBPtr is null.
198 * @tc.type: FUNC
199 * @tc.require:
200 */
201 HWTEST_F(BusinessAdapterTest, Get002, TestSize.Level1)
202 {
203 kvStore->Put("business_id_cast+_disturbance_event", "value");
204 kvStore->UnInit();
205 string value;
206 EXPECT_EQ(DP_KV_DB_PTR_NULL, kvStore->Get("business_id_cast+_disturbance_event", value));
207 }
208 } // namespace DistributedDeviceProfile
209 } // namespace OHOS
210