1 /* 2 * Copyright (c) 2022-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 <iostream> 17 #include <map> 18 #include <sstream> 19 20 #include <gtest/gtest.h> 21 22 #include "b_resources/b_constants.h" 23 #include "tools_op.h" 24 #include "utils_mock_global_variable.h" 25 26 namespace OHOS::FileManagement::Backup { 27 using namespace std; 28 class ToolsOpBackupTest : public testing::Test { 29 public: SetUpTestCase(void)30 static void SetUpTestCase(void) {}; TearDownTestCase()31 static void TearDownTestCase() {}; SetUp()32 void SetUp() {}; TearDown()33 void TearDown() {}; 34 }; 35 36 /** 37 * @tc.number: SUB_backup_tools_op_backup_0100 38 * @tc.name: SUB_backup_tools_op_backup_0100 39 * @tc.desc: 测试backup流程 40 * @tc.size: MEDIUM 41 * @tc.type: FUNC 42 * @tc.level Level 1 43 * @tc.require: I6F3GV 44 */ 45 HWTEST_F(ToolsOpBackupTest, SUB_backup_tools_op_backup_0100, testing::ext::TestSize.Level1) 46 { 47 GTEST_LOG_(INFO) << "ToolsOpBackupTest-begin SUB_backup_tools_op_backup_0100"; 48 try { 49 SetMockGetInstance(true); 50 GTEST_LOG_(INFO) << "ToolsOpBackupTest-info"; 51 map<string, vector<string>> mapArgToVal; 52 string localCap = string(BConstants::GetSaBundleBackupToolDir(BConstants::DEFAULT_USER_ID).data()) + "/tmp"; 53 vector<string> path = {localCap.data()}; 54 mapArgToVal.insert(make_pair("pathCapFile", path)); 55 vector<string> bundles = {"com.example.app2backup"}; 56 mapArgToVal.insert(make_pair("bundles", bundles)); 57 vector<string> local = {"true"}; 58 mapArgToVal.insert(make_pair("isLocal", local)); 59 60 // 尝试匹配当前命令,成功后执行 61 GTEST_LOG_(INFO) << "ToolsOpBackupTest-backup"; 62 vector<string_view> curOp; 63 curOp.emplace_back("backup"); __anon6c052b480102(const ToolsOp &op) 64 auto tryOpSucceed = [&curOp](const ToolsOp &op) { return op.TryMatch(curOp); }; 65 auto &&opeartions = ToolsOp::GetAllOperations(); 66 auto matchedOp = find_if(opeartions.begin(), opeartions.end(), tryOpSucceed); 67 if (matchedOp != opeartions.end()) { 68 auto ret = matchedOp->Execute(mapArgToVal); 69 EXPECT_EQ(ret, 0); 70 } 71 } catch (...) { 72 EXPECT_TRUE(false); 73 GTEST_LOG_(INFO) << "ToolsOpBackupTest-an exception occurred by construction."; 74 } 75 GTEST_LOG_(INFO) << "ToolsOpBackupTest-end SUB_backup_tools_op_backup_0100"; 76 } 77 78 /** 79 * @tc.number: SUB_backup_tools_op_backup_0200 80 * @tc.name: SUB_backup_tools_op_backup_0200 81 * @tc.desc: 测试Exec分支 82 * @tc.size: MEDIUM 83 * @tc.type: FUNC 84 * @tc.level Level 1 85 * @tc.require: I6F3GV 86 */ 87 HWTEST_F(ToolsOpBackupTest, SUB_backup_tools_op_backup_0200, testing::ext::TestSize.Level1) 88 { 89 GTEST_LOG_(INFO) << "ToolsOpBackupTest-begin SUB_backup_tools_op_backup_0200"; 90 try { 91 GTEST_LOG_(INFO) << "ToolsOpBackupTest-The pathCapFile field is not contained."; 92 map<string, vector<string>> mapArgToVal; 93 vector<string> bundles = {"com.example.app2backup"}; 94 vector<string> path = {"/data/backup/tmp"}; 95 vector<string> local = {"true"}; 96 mapArgToVal.insert(make_pair("bundles", bundles)); 97 mapArgToVal.insert(make_pair("isLocal", local)); 98 99 vector<string_view> curOp; 100 curOp.emplace_back("backup"); __anon6c052b480202(const ToolsOp &op) 101 auto tryOpSucceed = [&curOp](const ToolsOp &op) { return op.TryMatch(curOp); }; 102 auto &&opeartions = ToolsOp::GetAllOperations(); 103 auto matchedOp = find_if(opeartions.begin(), opeartions.end(), tryOpSucceed); 104 int ret = 0; 105 if (matchedOp != opeartions.end()) { 106 ret = matchedOp->Execute(mapArgToVal); 107 EXPECT_NE(ret, 0); 108 } 109 110 GTEST_LOG_(INFO) << "ToolsOpBackupTest-The bundles field is noGt contained."; 111 mapArgToVal.clear(); 112 mapArgToVal.insert(make_pair("pathCapFile", path)); 113 mapArgToVal.insert(make_pair("isLocal", local)); 114 if (matchedOp != opeartions.end()) { 115 ret = matchedOp->Execute(mapArgToVal); 116 EXPECT_NE(ret, 0); 117 } 118 119 GTEST_LOG_(INFO) << "ToolsOpBackupTest-The isLocal field is noGt contained."; 120 mapArgToVal.clear(); 121 mapArgToVal.insert(make_pair("pathCapFile", path)); 122 mapArgToVal.insert(make_pair("bundles", bundles)); 123 if (matchedOp != opeartions.end()) { 124 ret = matchedOp->Execute(mapArgToVal); 125 EXPECT_NE(ret, 0); 126 } 127 128 mapArgToVal.clear(); 129 if (matchedOp != opeartions.end()) { 130 ret = matchedOp->Execute(mapArgToVal); 131 EXPECT_NE(ret, 0); 132 } 133 } catch (...) { 134 EXPECT_TRUE(false); 135 GTEST_LOG_(INFO) << "ToolsOpBackupTest-an exception occurred by construction."; 136 } 137 GTEST_LOG_(INFO) << "ToolsOpBackupTest-end SUB_backup_tools_op_backup_0200"; 138 } 139 140 /** 141 * @tc.number: SUB_backup_tools_op_backup_0300 142 * @tc.name: SUB_backup_tools_op_backup_0300 143 * @tc.desc: 测试Exec分支 144 * @tc.size: MEDIUM 145 * @tc.type: FUNC 146 * @tc.level Level 1 147 * @tc.require: I6F3GV 148 */ 149 HWTEST_F(ToolsOpBackupTest, SUB_backup_tools_op_backup_0300, testing::ext::TestSize.Level1) 150 { 151 GTEST_LOG_(INFO) << "ToolsOpBackupTest-begin SUB_backup_tools_op_backup_0300"; 152 try { 153 GTEST_LOG_(INFO) << "ToolsOpBackupTest-info"; 154 map<string, vector<string>> mapArgToVal; 155 vector<string> path = {"/data/backup/tmp"}; 156 mapArgToVal.insert(make_pair("pathCapFile", path)); 157 vector<string> bundles = {"com.example.app2backup"}; 158 mapArgToVal.insert(make_pair("bundles", bundles)); 159 vector<string> local = {"false"}; 160 mapArgToVal.insert(make_pair("isLocal", local)); 161 162 // 尝试匹配当前命令,成功后执行 163 GTEST_LOG_(INFO) << "ToolsOpBackupTest-backup"; 164 vector<string_view> curOp; 165 curOp.emplace_back("backup"); __anon6c052b480302(const ToolsOp &op) 166 auto tryOpSucceed = [&curOp](const ToolsOp &op) { return op.TryMatch(curOp); }; 167 auto &&opeartions = ToolsOp::GetAllOperations(); 168 auto matchedOp = find_if(opeartions.begin(), opeartions.end(), tryOpSucceed); 169 if (matchedOp != opeartions.end()) { 170 auto ret = matchedOp->Execute(mapArgToVal); 171 EXPECT_EQ(ret, 0); 172 } 173 } catch (...) { 174 EXPECT_TRUE(false); 175 GTEST_LOG_(INFO) << "ToolsOpBackupTest-an exception occurred by construction."; 176 } 177 GTEST_LOG_(INFO) << "ToolsOpBackupTest-end SUB_backup_tools_op_backup_0300"; 178 } 179 } // namespace OHOS::FileManagement::Backup