1 /*
2  * Copyright (c) 2021 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 <memory>
16 
17 #include "gtest/gtest.h"
18 #include "gmock/gmock.h"
19 
20 #include "mock_data_obs_mgr_stub.h"
21 
22 #include "dataobs_mgr_proxy.h"
23 
24 namespace OHOS {
25 namespace AAFwk {
26 using namespace testing::ext;
27 using ::testing::_;
28 
29 class DataObsMgrProxyTest : public testing::Test {
30 public:
31     DataObsMgrProxyTest() = default;
32     virtual ~DataObsMgrProxyTest() = default;
33 
34     static void SetUpTestCase(void);
35     static void TearDownTestCase(void);
36     void SetUp();
37     void TearDown();
38 };
SetUpTestCase(void)39 void DataObsMgrProxyTest::SetUpTestCase(void)
40 {}
TearDownTestCase(void)41 void DataObsMgrProxyTest::TearDownTestCase(void)
42 {}
SetUp()43 void DataObsMgrProxyTest::SetUp()
44 {}
TearDown()45 void DataObsMgrProxyTest::TearDown()
46 {}
47 
48 /*
49  * Feature: DataObsManagerProxy
50  * Function: RegisterObserver
51  * SubFunction: NA
52  * FunctionPoints: DataObsManagerProxy RegisterObserver
53  * EnvConditions: NA
54  * CaseDescription: Verify that the DataObsManagerProxy RegisterObserver is normal.
55  */
56 HWTEST_F(DataObsMgrProxyTest, DataObsMgrProxyTest_RegisterObserver_0100, TestSize.Level1)
57 {
58     GTEST_LOG_(INFO) << "DataObsMgrProxyTest_RegisterObserver_0100 start";
59     const int32_t testVal = static_cast<int>(TEST_RETVAL_ONREMOTEREQUEST);
60     std::shared_ptr<MockDataObsMgrStub> dataobs = std::make_shared<MockDataObsMgrStub>();
61     std::shared_ptr<Uri> uri =
62         std::make_shared<Uri>("dataability://device_id/com.domainname.dataability.persondata/person/10");
63     sptr<MockDataObsMgrStub> mockDataobsMgrStub(new (std::nothrow) MockDataObsMgrStub());
64     std::shared_ptr<DataObsManagerProxy> dataObsManagerProxy =
65         std::make_shared<DataObsManagerProxy>(mockDataobsMgrStub);
66     sptr<AAFwk::IDataAbilityObserver> dataObserver(new (std::nothrow) MockDataAbilityObserverStub());
67 
68     int32_t retVal = dataObsManagerProxy->RegisterObserver(*uri, dataObserver);
69     EXPECT_EQ(testVal, retVal);
70 
71     GTEST_LOG_(INFO) << "DataObsMgrProxyTest_RegisterObserver_0100 end";
72 }
73 
74 /*
75  * Feature: DataObsManagerProxy
76  * Function: UnregisterObserver
77  * SubFunction: NA
78  * FunctionPoints: DataObsManagerProxy UnregisterObserver
79  * EnvConditions: NA
80  * CaseDescription: Verify that the DataObsManagerProxy UnregisterObserver is normal.
81  */
82 HWTEST_F(DataObsMgrProxyTest, DataObsMgrProxyTest_UnregisterObserver_0100, TestSize.Level1)
83 {
84     GTEST_LOG_(INFO) << "DataObsMgrProxyTest_UnregisterObserver_0100 start";
85     const int32_t testVal = static_cast<int>(TEST_RETVAL_ONREMOTEREQUEST);
86     std::shared_ptr<MockDataObsMgrStub> dataobs = std::make_shared<MockDataObsMgrStub>();
87     std::shared_ptr<Uri> uri =
88         std::make_shared<Uri>("dataability://device_id/com.domainname.dataability.persondata/person/10");
89     sptr<MockDataObsMgrStub> mockDataobsMgrStub(new (std::nothrow) MockDataObsMgrStub());
90     std::shared_ptr<DataObsManagerProxy> dataObsManagerProxy =
91         std::make_shared<DataObsManagerProxy>(mockDataobsMgrStub);
92     sptr<AAFwk::IDataAbilityObserver> dataObserver(new (std::nothrow) MockDataAbilityObserverStub());
93 
94     int32_t retVal = dataObsManagerProxy->UnregisterObserver(*uri, dataObserver);
95     EXPECT_EQ(testVal, retVal);
96 
97     GTEST_LOG_(INFO) << "DataObsMgrProxyTest_UnregisterObserver_0100 end";
98 }
99 
100 /*
101  * Feature: DataObsManagerProxy
102  * Function: NotifyChange
103  * SubFunction: NA
104  * FunctionPoints: DataObsManagerProxy NotifyChange
105  * EnvConditions: NA
106  * CaseDescription: Verify that the DataObsManagerProxy NotifyChange is normal.
107  */
108 HWTEST_F(DataObsMgrProxyTest, DataObsMgrProxyTest_NotifyChange_0100, TestSize.Level1)
109 {
110     GTEST_LOG_(INFO) << "DataObsMgrProxyTest_NotifyChange_0100 start";
111     const int32_t testVal = static_cast<int>(TEST_RETVAL_ONREMOTEREQUEST);
112     std::shared_ptr<Uri> uri =
113         std::make_shared<Uri>("dataability://device_id/com.domainname.dataability.persondata/person/10");
114     sptr<MockDataObsMgrStub> mockDataobsMgrStub(new (std::nothrow) MockDataObsMgrStub());
115     std::shared_ptr<DataObsManagerProxy> dataObsManagerProxy =
116         std::make_shared<DataObsManagerProxy>(mockDataobsMgrStub);
117 
118     int32_t retVal = dataObsManagerProxy->NotifyChange(*uri);
119     EXPECT_EQ(testVal, retVal);
120 
121     GTEST_LOG_(INFO) << "DataObsMgrProxyTest_NotifyChange_0100 end";
122 }
123 
124 /*
125  * Feature: DataObsManagerProxy
126  * Function: RegisterObserverExt
127  * SubFunction: NA
128  * FunctionPoints: DataObsManagerProxy RegisterObserverExt
129  * EnvConditions: NA
130  * CaseDescription: Verify that the DataObsManagerProxy RegisterObserverExt is normal.
131  */
132 HWTEST_F(DataObsMgrProxyTest, DataObsMgrProxyTest_RegisterObserverExt_0100, TestSize.Level1)
133 {
134     GTEST_LOG_(INFO) << "DataObsMgrProxyTest_RegisterObserverExt_0100 start";
135     const int32_t testVal = static_cast<int>(TEST_RETVAL_ONREMOTEREQUEST);
136     std::shared_ptr<MockDataObsMgrStub> dataobs = std::make_shared<MockDataObsMgrStub>();
137     std::shared_ptr<Uri> uri = std::make_shared<Uri>("datashare://Authority/com.domainname.persondata");
138     sptr<MockDataObsMgrStub> mockDataobsMgrStub(new (std::nothrow) MockDataObsMgrStub());
139     std::shared_ptr<DataObsManagerProxy> dataObsManagerProxy =
140         std::make_shared<DataObsManagerProxy>(mockDataobsMgrStub);
141     sptr<AAFwk::IDataAbilityObserver> dataObserver(new (std::nothrow) MockDataAbilityObserverStub());
142 
143     int32_t retVal = dataObsManagerProxy->RegisterObserverExt(*uri, dataObserver, true);
144     EXPECT_EQ(testVal, retVal);
145 
146     GTEST_LOG_(INFO) << "DataObsMgrProxyTest_RegisterObserverExt_0100 end";
147 }
148 
149 /*
150  * Feature: DataObsManagerProxy
151  * Function: UnregisterObserverExt
152  * SubFunction: NA
153  * FunctionPoints: DataObsManagerProxy UnregisterObserverExt
154  * EnvConditions: NA
155  * CaseDescription: Verify that the DataObsManagerProxy UnregisterObserverExt is normal.
156  */
157 HWTEST_F(DataObsMgrProxyTest, DataObsMgrProxyTest_UnregisterObserverExt_0100, TestSize.Level1)
158 {
159     GTEST_LOG_(INFO) << "DataObsMgrProxyTest_UnregisterObserverExt_0100 start";
160     const int32_t testVal = static_cast<int>(TEST_RETVAL_ONREMOTEREQUEST);
161     std::shared_ptr<MockDataObsMgrStub> dataobs = std::make_shared<MockDataObsMgrStub>();
162     std::shared_ptr<Uri> uri = std::make_shared<Uri>("datashare://Authority/com.domainname.persondata");
163     sptr<MockDataObsMgrStub> mockDataobsMgrStub(new (std::nothrow) MockDataObsMgrStub());
164     std::shared_ptr<DataObsManagerProxy> dataObsManagerProxy =
165         std::make_shared<DataObsManagerProxy>(mockDataobsMgrStub);
166     sptr<AAFwk::IDataAbilityObserver> dataObserver(new (std::nothrow) MockDataAbilityObserverStub());
167 
168     int32_t retVal = dataObsManagerProxy->UnregisterObserverExt(*uri, dataObserver);
169     EXPECT_EQ(testVal, retVal);
170     retVal = dataObsManagerProxy->UnregisterObserverExt(dataObserver);
171     EXPECT_EQ(testVal, retVal);
172 
173     GTEST_LOG_(INFO) << "DataObsMgrProxyTest_UnregisterObserverExt_0100 end";
174 }
175 
176 /*
177  * Feature: DataObsManagerProxy
178  * Function: NotifyChangeExt
179  * SubFunction: NA
180  * FunctionPoints: DataObsManagerProxy NotifyChangeExt
181  * EnvConditions: NA
182  * CaseDescription: Verify that the DataObsManagerProxy NotifyChangeExt is normal.
183  */
184 HWTEST_F(DataObsMgrProxyTest, DataObsMgrProxyTest_NotifyChangeExt_0100, TestSize.Level1)
185 {
186     GTEST_LOG_(INFO) << "DataObsMgrProxyTest_NotifyChangeExt_0100 start";
187     const int32_t testVal = static_cast<int>(TEST_RETVAL_ONREMOTEREQUEST);
188     std::shared_ptr<Uri> uri = std::make_shared<Uri>("datashare://Authority/com.domainname.persondata");
189     sptr<MockDataObsMgrStub> mockDataobsMgrStub(new (std::nothrow) MockDataObsMgrStub());
190     std::shared_ptr<DataObsManagerProxy> dataObsManagerProxy =
191         std::make_shared<DataObsManagerProxy>(mockDataobsMgrStub);
192 
193     int32_t retVal = dataObsManagerProxy->NotifyChangeExt({ ChangeInfo::ChangeType::INSERT, { *uri } });
194     EXPECT_EQ(testVal, retVal);
195 
196     GTEST_LOG_(INFO) << "DataObsMgrProxyTest_NotifyChangeExt_0100 end";
197 }
198 }  // namespace AAFwk
199 }  // namespace OHOS
200