• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2023-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 
16 #include "pasteboard_web_controller.h"
17 #include <gtest/gtest.h>
18 
19 using namespace testing;
20 using namespace testing::ext;
21 using namespace OHOS::MiscServices;
22 class WebControllerTest : public testing::Test {
23 public:
WebControllerTest()24     WebControllerTest() {};
~WebControllerTest()25     ~WebControllerTest() {};
26     static void SetUpTestCase(void);
27     static void TearDownTestCase(void);
28     void SetUp();
29     void TearDown();
30 };
31 
SetUpTestCase(void)32 void WebControllerTest::SetUpTestCase(void)
33 {
34 }
35 
TearDownTestCase(void)36 void WebControllerTest::TearDownTestCase(void)
37 {
38 }
39 
SetUp(void)40 void WebControllerTest::SetUp(void)
41 {
42 }
43 
TearDown(void)44 void WebControllerTest::TearDown(void)
45 {
46 }
47 
48 /**
49  * @tc.name: SplitHtmlTest_001.
50  * @tc.desc: Test did not use local image address HTML with SplitHtml.
51  * @tc.type: FUNC.
52  * @tc.require:
53  * @tc.author:
54  */
55 HWTEST_F(WebControllerTest, SplitHtmlTest_001, TestSize.Level1)
56 {
57     auto webClipboardController = PasteboardWebController::GetInstance();
58     std::shared_ptr<std::string> html(
59         new std::string("<img data-ohos='clipboard' src='http://file1.jpg'><img data-ohos='clipboard' "
60                         "src='https://data/storage/el2/distributedfiles/202305301.png'>"));
61     auto pasteData = webClipboardController.SplitHtml(html);
62     EXPECT_EQ(pasteData->GetRecordCount(), 1);
63     std::vector<std::shared_ptr<PasteDataRecord>> pasteDataRecords = pasteData->AllRecords();
64     EXPECT_EQ(*(pasteDataRecords[0]->GetHtmlText()), *html);
65 }
66 
67 /**
68  * @tc.name: SplitHtmlTest_002.
69  * @tc.desc: Test contains a local image address HTML with SplitHtml.
70  * @tc.type: FUNC.
71  * @tc.require:
72  * @tc.author:
73  */
74 HWTEST_F(WebControllerTest, SplitHtmlTest_002, TestSize.Level1)
75 {
76     auto webClipboardController = PasteboardWebController::GetInstance();
77     std::shared_ptr<std::string> html(
78         new std::string("<img data-ohos='clipboard' src='file:///file1.jpg'><img data-ohos='clipboard' "
79                         "src='https://data/storage/el2/distributedfiles/202305301.png'>"));
80     auto pasteData = webClipboardController.SplitHtml(html);
81     EXPECT_NE(pasteData, nullptr);
82     std::vector<std::shared_ptr<PasteDataRecord>> pasteDataRecords = pasteData->AllRecords();
83     EXPECT_FALSE(pasteDataRecords.empty());
84 }
85 
86 /**
87  * @tc.name: SplitHtmlTest_003.
88  * @tc.desc: Test contains multiple local image addresses HTML with SplitHtml.
89  * @tc.type: FUNC.
90  * @tc.require:
91  * @tc.author:
92  */
93 HWTEST_F(WebControllerTest, SplitHtmlTest_003, TestSize.Level1)
94 {
95     auto webClipboardController = PasteboardWebController::GetInstance();
96     std::shared_ptr<std::string> html(
97         new std::string("<img data-ohos='clipboard' src='file:///file1.jpg'><img data-ohos='clipboard' "
98                         "src='file2.jpg'><img data-ohos='clipboard' "
99                         "src='https://data/storage/el2/distributedfiles/202305301.png'>"));
100     auto pasteData = webClipboardController.SplitHtml(html);
101     EXPECT_NE(pasteData, nullptr);
102     std::vector<std::shared_ptr<PasteDataRecord>> pasteDataRecords = pasteData->AllRecords();
103     EXPECT_FALSE(pasteDataRecords.empty());
104 }
105 
106 /**
107  * @tc.name: RebuildHtmlTest_004.
108  * @tc.desc: Test does not include local image address HTML with RebuildHtml.
109  * @tc.type: FUNC.
110  * @tc.require:
111  * @tc.author:
112  */
113 HWTEST_F(WebControllerTest, RebuildHtmlTest_004, TestSize.Level1)
114 {
115     auto webClipboardController = PasteboardWebController::GetInstance();
116     std::shared_ptr<std::string> html(
117         new std::string("<img data-ohos='clipboard' src='http://file1.jpg'><img data-ohos='clipboard' "
118                         "src='https://data/storage/el2/distributedfiles/202305301.png'>"));
119     auto pasteData = webClipboardController.SplitHtml(html);
120     EXPECT_EQ(pasteData->GetRecordCount(), 1);
121     std::shared_ptr<std::string> newHtml = webClipboardController.RebuildHtml(pasteData);
122     EXPECT_EQ(*newHtml, *html);
123 }
124 
125 /**
126  * @tc.name: RebuildHtmlTest_005.
127  * @tc.desc: Test contains a local image address HTML with RebuildHtml.
128  * @tc.type: FUNC.
129  * @tc.require:
130  * @tc.author:
131  */
132 HWTEST_F(WebControllerTest, RebuildHtmlTest_005, TestSize.Level1)
133 {
134     const std::string uri = "file:///data/storage/el2/distributedfiles/temp.png";
135     auto webClipboardController = PasteboardWebController::GetInstance();
136     std::shared_ptr<std::string> html(
137         new std::string("<img data-ohos='clipboard' src='file:///file1.jpg'><img data-ohos='clipboard' "
138                         "src='https://data/storage/el2/distributedfiles/202305301.png'>"));
139     const std::string execptHtml =
140         "<img data-ohos='clipboard' src='file:///data/storage/el2/distributedfiles/temp.png'><img "
141         "data-ohos='clipboard' "
142         "src='https://data/storage/el2/distributedfiles/202305301.png'>";
143     auto pasteData = webClipboardController.SplitHtml(html);
144     EXPECT_NE(pasteData, nullptr);
145     std::shared_ptr<PasteData> newPasteData = std::make_shared<PasteData>();
146     std::vector<std::shared_ptr<PasteDataRecord>> pasteDataRecords = pasteData->AllRecords();
147     EXPECT_EQ(*(pasteDataRecords[pasteData->GetRecordCount() - 1]->GetHtmlText()), *html);
148 
149     newPasteData->AddHtmlRecord(*html);
150     for (auto i = 0; i < pasteData->GetRecordCount() - 1; i++) {
151         PasteDataRecord::Builder builder(MIMETYPE_TEXT_URI);
152         auto newUri = std::make_shared<OHOS::Uri>(uri);
153         builder.SetUri(newUri);
154         builder.SetCustomData(pasteDataRecords[i]->GetCustomData());
155         auto record = builder.Build();
156         newPasteData->AddRecord(record);
157     }
158     std::shared_ptr<std::string> newHtml = webClipboardController.RebuildHtml(newPasteData);
159     EXPECT_NE(newHtml, nullptr);
160 }
161 
162 /**
163  * @tc.name: RebuildHtmlTest_006.
164  * @tc.desc: Test contains a multiple image address HTML with RebuildHtml.
165  * @tc.type: FUNC.
166  * @tc.require:
167  * @tc.author:
168  */
169 HWTEST_F(WebControllerTest, RebuildHtmlTest_006, TestSize.Level1)
170 {
171     const std::string uri = "file:///data/storage/el2/distributedfiles/temp.png";
172     auto webClipboardController = PasteboardWebController::GetInstance();
173     std::shared_ptr<std::string> html(
174         new std::string("<img data-ohos='clipboard' src='file:///file1.jpg'><img data-ohos='clipboard' "
175                         "src='file2.jpg'><img data-ohos='clipboard' "
176                         "src='https://data/storage/el2/distributedfiles/202305301.png'>"));
177     const std::string execptHtml =
178         "<img data-ohos='clipboard' src='file:///data/storage/el2/distributedfiles/temp.png'><img "
179         "data-ohos='clipboard' "
180         "src='file:///data/storage/el2/distributedfiles/temp.png'><img data-ohos='clipboard' "
181         "src='https://data/storage/el2/distributedfiles/202305301.png'>";
182     auto pasteData = webClipboardController.SplitHtml(html);
183     EXPECT_NE(pasteData, nullptr);
184     std::shared_ptr<PasteData> newPasteData = std::make_shared<PasteData>();
185     std::vector<std::shared_ptr<PasteDataRecord>> pasteDataRecords = pasteData->AllRecords();
186     EXPECT_EQ(*(pasteDataRecords[pasteData->GetRecordCount() - 1]->GetHtmlText()), *html);
187 
188     newPasteData->AddHtmlRecord(*html);
189     for (auto i = 0; i < pasteData->GetRecordCount() - 1; i++) {
190         PasteDataRecord::Builder builder(MIMETYPE_TEXT_URI);
191         auto newUri = std::make_shared<OHOS::Uri>(uri);
192         builder.SetUri(newUri);
193         builder.SetCustomData(pasteDataRecords[i]->GetCustomData());
194         auto record = builder.Build();
195         newPasteData->AddRecord(record);
196     }
197     std::shared_ptr<std::string> newHtml = webClipboardController.RebuildHtml(newPasteData);
198     EXPECT_NE(newHtml, nullptr);
199 }
200 
201 /**
202  * @tc.name: SplitHtmlTest_007.
203  * @tc.desc: Test contains invalid protocol image link HTML with SplitHtml.
204  * @tc.type: FUNC.
205  * @tc.require:
206  * @tc.author:
207  */
208 HWTEST_F(WebControllerTest, SplitHtmlTest_007, TestSize.Level1)
209 {
210     auto webClipboardController = PasteboardWebController::GetInstance();
211     std::shared_ptr<std::string> html(
212         new std::string("<img data-ohos='clipboard' src='xxx://file1.jpg'><img data-ohos='clipboard' "
213                         "src='yyy://data/storage/el2/distributedfiles/202305301.png'>"));
214     auto pasteData = webClipboardController.SplitHtml(html);
215     EXPECT_EQ(pasteData->GetRecordCount(), 1);
216     std::vector<std::shared_ptr<PasteDataRecord>> pasteDataRecords = pasteData->AllRecords();
217     EXPECT_EQ(*(pasteDataRecords[0]->GetHtmlText()), *html);
218 }
219 
220 /**
221  * @tc.name: RebuildHtmlTest_008.
222  * @tc.desc: Test contains invalid protocol image link HTML with RebuildHtml.
223  * @tc.type: FUNC.
224  * @tc.require:
225  * @tc.author:
226  */
227 HWTEST_F(WebControllerTest, RebuildHtmlTest_008, TestSize.Level1)
228 {
229     auto webClipboardController = PasteboardWebController::GetInstance();
230     std::shared_ptr<std::string> html(
231         new std::string("<img data-ohos='clipboard' src='xxx://file1.jpg'><img data-ohos='clipboard' "
232                         "src='ttt://data/storage/el2/distributedfiles/202305301.png'>"));
233     auto pasteData = webClipboardController.SplitHtml(html);
234     EXPECT_EQ(pasteData->GetRecordCount(), 1);
235     std::shared_ptr<std::string> newHtml = webClipboardController.RebuildHtml(pasteData);
236     EXPECT_EQ(*newHtml, *html);
237 }