diff --git a/interfaces/inner_api/dlp_fuse/test/BUILD.gn b/interfaces/inner_api/dlp_fuse/test/BUILD.gn index 088482adace4c19cd4a06d34acaa26df69a0efa6..b0881169f50abf4bb8122bbc1bf7bfa94e49d7b1 100644 --- a/interfaces/inner_api/dlp_fuse/test/BUILD.gn +++ b/interfaces/inner_api/dlp_fuse/test/BUILD.gn @@ -73,7 +73,6 @@ ohos_unittest("dlp_file_test") { "${dlp_root_dir}/interfaces/inner_api/dlp_permission:libdlp_permission_common_interface", "${dlp_root_dir}/interfaces/inner_api/dlp_permission:dlp_permission_interface", "${dlp_root_dir}/interfaces/inner_api/dlp_permission:libdlp_permission_sdk", - "${dlp_root_dir}/interfaces/inner_api/dlp_permission:dlp_permission_interface", "${dlp_root_dir}/services/dlp_permission/sa:dlp_hex_string_static", "${dlp_root_dir}/services/dlp_permission/sa:dlp_permission_serializer_static", "${dlp_permission_public_config_path}/:dlp_permission_stub", diff --git a/interfaces/inner_api/dlp_parse/test/dlp_file_test.cpp b/interfaces/inner_api/dlp_parse/test/dlp_file_test.cpp index ce6cc02d8044e68bce838c241cf8a990f005f091..5425acfae66e8dc2720aa219c9fac34255c970fa 100644 --- a/interfaces/inner_api/dlp_parse/test/dlp_file_test.cpp +++ b/interfaces/inner_api/dlp_parse/test/dlp_file_test.cpp @@ -717,6 +717,7 @@ HWTEST_F(DlpFileTest, ParseDlpHeader001, TestSize.Level0) testFile.dlpFd_ = 1000; testFile.isFuseLink_ = false; ASSERT_EQ(DLP_PARSE_ERROR_FILE_OPERATE_FAIL, testFile.ProcessDlpFile()); + ASSERT_NE(DLP_OK, testFile.RemoveDlpPermission(-1)); } /** diff --git a/interfaces/inner_api/dlp_parse/test/dlp_raw_file_test.cpp b/interfaces/inner_api/dlp_parse/test/dlp_raw_file_test.cpp index 09b831f2c270f93126ef11325519686b9a0a6089..be45ea6eabcb21f5835c3c29c5bb907efe2bf182 100644 --- a/interfaces/inner_api/dlp_parse/test/dlp_raw_file_test.cpp +++ b/interfaces/inner_api/dlp_parse/test/dlp_raw_file_test.cpp @@ -40,6 +40,8 @@ static const uint64_t DLP_CERT_SIZE = 1024 * 1024; static const uint32_t DLP_HEAD_SIZE = 10 * 1024 * 1024; static const std::string DLP_TEST_DIR = "/data/dlpTest/"; static constexpr int32_t SECOND = 2; +static const uint32_t FILE_HEAD = 8; +static const uint32_t MAX_CERT_SIZE = 30 * 1024; } void DlpRawFileTest::SetUpTestCase() {} @@ -364,3 +366,89 @@ HWTEST_F(DlpRawFileTest, ParseEnterpriseFileIdTest, TestSize.Level1) std::shared_ptr filePtr = std::make_shared(-1, "mp4"); ASSERT_NE(filePtr->ParseEnterpriseFileId(0, 0), DLP_OK); } + +/** + * @tc.name: IsValidEnterpriseDlpHeader + * @tc.desc: test IsValidEnterpriseDlpHeader + * @tc.type: FUNC + * @tc.require: + */ +HWTEST_F(DlpRawFileTest, IsValidEnterpriseDlpHeader, TestSize.Level1) +{ + std::shared_ptr testFile = std::make_shared(1000, "txt"); + struct DlpHeader header = { + .magic = DLP_FILE_MAGIC, + .fileType = 10, + .offlineAccess = 0, + .algType = DLP_MODE_CTR, + .txtOffset = sizeof(struct DlpHeader) + 108, + .txtSize = 100, + .hmacOffset = sizeof(struct DlpHeader) + 208, + .hmacSize = 64, + .certOffset = sizeof(struct DlpHeader) + 272, + .certSize = 256, + .contactAccountOffset = sizeof(struct DlpHeader) + 8, + .contactAccountSize = 0, + .offlineCertOffset = sizeof(struct DlpHeader) + 272, + .offlineCertSize = 0 + }; + uint32_t dlpHeaderSize = sizeof(struct DlpHeader); + + // valid header + ASSERT_TRUE(testFile->IsValidEnterpriseDlpHeader(header, dlpHeaderSize)); + + // wrong magic + header.magic = 0; + ASSERT_FALSE(testFile->IsValidEnterpriseDlpHeader(header, dlpHeaderSize)); + header.magic = DLP_FILE_MAGIC; + + // certSize 0 + header.certSize = 0; + ASSERT_FALSE(testFile->IsValidEnterpriseDlpHeader(header, dlpHeaderSize)); + + // certSize too large + header.certSize = DLP_MAX_CERT_SIZE + 1; + ASSERT_FALSE(testFile->IsValidEnterpriseDlpHeader(header, dlpHeaderSize)); + header.certSize = 20; + + // certOffset invalid + header.certOffset = 100; + ASSERT_FALSE(testFile->IsValidEnterpriseDlpHeader(header, dlpHeaderSize)); + header.certOffset = sizeof(struct DlpHeader) + 272; + + // contactAccountSize 100 + header.contactAccountSize = 100; + ASSERT_FALSE(testFile->IsValidEnterpriseDlpHeader(header, dlpHeaderSize)); + + // contactAccountSize too large + header.contactAccountSize = DLP_MAX_CERT_SIZE + 1; + ASSERT_FALSE(testFile->IsValidEnterpriseDlpHeader(header, dlpHeaderSize)); + + // contactAccountOffset invalid + header.contactAccountOffset = 100; + ASSERT_FALSE(testFile->IsValidEnterpriseDlpHeader(header, dlpHeaderSize)); + header.contactAccountOffset = sizeof(struct DlpHeader); + + // txtOffset invalid + header.txtOffset = 100; + ASSERT_FALSE(testFile->IsValidEnterpriseDlpHeader(header, dlpHeaderSize)); + header.txtOffset = sizeof(struct DlpHeader) + 20; + + // txtOffset invalid + header.txtSize = DLP_MAX_CONTENT_SIZE + 1; + ASSERT_FALSE(testFile->IsValidEnterpriseDlpHeader(header, dlpHeaderSize)); +} + +/** + * @tc.name: ParseEnterpriseRawDlpHeader + * @tc.desc: test ParseEnterpriseRawDlpHeader + * @tc.type: FUNC + * @tc.require: + */ +HWTEST_F(DlpRawFileTest, ParseEnterpriseRawDlpHeader, TestSize.Level1) +{ + std::shared_ptr testFile = std::make_shared(-1, "txt"); + ASSERT_NE(testFile->ParseEnterpriseRawDlpHeader(FILE_HEAD, 1), DLP_OK); + ASSERT_NE(testFile->ParseEnterpriseRawDlpHeader(FILE_HEAD, MAX_CERT_SIZE), DLP_OK); + ASSERT_NE(testFile->ParseEnterpriseRawDlpHeader(FILE_HEAD + FILE_HEAD, 1), DLP_OK); +} diff --git a/interfaces/inner_api/dlp_parse/test/dlp_utils_test.cpp b/interfaces/inner_api/dlp_parse/test/dlp_utils_test.cpp index 4fb992ce7cb16aac4527df62cb7866161a6d9e7a..84d93d6d55797e1f0c56d0ba0bb650a69d12093b 100644 --- a/interfaces/inner_api/dlp_parse/test/dlp_utils_test.cpp +++ b/interfaces/inner_api/dlp_parse/test/dlp_utils_test.cpp @@ -35,6 +35,7 @@ using namespace std; namespace { static constexpr OHOS::HiviewDFX::HiLogLabel LABEL = {LOG_CORE, SECURITY_DOMAIN_DLP_PERMISSION, "DlpUtilsTest"}; +static const std::string DEFAULT_STRINGS = ""; } void DlpUtilsTest::SetUpTestCase() {} @@ -345,4 +346,65 @@ HWTEST_F(DlpUtilsTest, GetRealTypeForEnterpriseWithFd004, TestSize.Level0) DlpUtils::GetRealTypeForEnterpriseWithFd(fd, isFromUriName); close(fd); unlink("/data/fuse_test.txt.dlp"); -} \ No newline at end of file +} + +/** + * @tc.name: GetFileType + * @tc.desc: test GetFileType + * @tc.type: FUNC + * @tc.require: + */ +HWTEST_F(DlpUtilsTest, GetFileType, TestSize.Level1) +{ + std::string realFileType = "1234567890"; + ASSERT_EQ(DlpUtils::GetFileType(realFileType), false); + realFileType = "12"; + ASSERT_EQ(DlpUtils::GetFileType(realFileType), false); + realFileType = DLP_HIAE_TYPE; + ASSERT_EQ(DlpUtils::GetFileType(realFileType), true); +} + +/** + * @tc.name: GetRealTypeWithFd + * @tc.desc: test GetRealTypeWithFd + * @tc.type: FUNC + * @tc.require: + */ +HWTEST_F(DlpUtilsTest, GetRealTypeWithFd, TestSize.Level1) +{ + bool isFromUriName = false; + ASSERT_EQ(DlpUtils::GetRealTypeWithFd(-1, isFromUriName), DEFAULT_STRINGS); + isFromUriName = true; + ASSERT_EQ(DlpUtils::GetRealTypeWithFd(-1, isFromUriName), DEFAULT_STRINGS); + int fd = open("/data/fuse_test.txt.dlp", O_RDWR | O_CREAT | O_TRUNC, S_IRWXU); + ASSERT_NE(fd, -1); + struct DlpHeader header = { + .magic = DLP_FILE_MAGIC, + .certSize = 20, + .contactAccountSize = 20, + .fileType = 1000, + }; + uint8_t buffer[8] = {0}; + write(fd, buffer, 8); + write(fd, &header, sizeof(header)); + lseek(fd, 0, SEEK_SET); + ASSERT_EQ(DlpUtils::GetRealTypeWithFd(fd, isFromUriName), DEFAULT_STRINGS); + close(fd); + unlink("/data/fuse_test.txt.dlp"); +} + +/** + * @tc.name: GetBundleInfoWithBundleName + * @tc.desc: test GetBundleInfoWithBundleName + * @tc.type: FUNC + * @tc.require: + */ +HWTEST_F(DlpUtilsTest, GetBundleInfoWithBundleName, TestSize.Level1) +{ + OHOS::AppExecFwk::BundleInfo bundleInfo; + ASSERT_EQ(DlpUtils::GetBundleInfoWithBundleName("", 0, bundleInfo, 0), false); + std::string appId; + ASSERT_EQ(DlpUtils::GetAppIdFromToken(appId), false); + int32_t userId = 0; + (void)DlpUtils::GetUserIdByForegroundAccount(userId); +} diff --git a/interfaces/inner_api/dlp_parse/test/dlp_zip_file_test.cpp b/interfaces/inner_api/dlp_parse/test/dlp_zip_file_test.cpp index d0fd48d32a24febd08566284868d9df513955d8b..df1facc5ad1e46561c501ff1161174a67e5e2c5a 100644 --- a/interfaces/inner_api/dlp_parse/test/dlp_zip_file_test.cpp +++ b/interfaces/inner_api/dlp_parse/test/dlp_zip_file_test.cpp @@ -62,6 +62,8 @@ HWTEST_F(DlpZipFileTest, IsZipFile, TestSize.Level0) DlpBlob certBlob = { 0, nullptr }; std::shared_ptr filePtr = std::make_shared(-1, DLP_TEST_DIR, 0, "txt"); ASSERT_EQ(filePtr->UpdateCertAndText(cert, certBlob), DLP_PARSE_ERROR_MEMORY_OPERATE_FAIL); + ASSERT_NE(filePtr->GenFile(-1), DLP_OK); + ASSERT_NE(filePtr->GenFile(0), DLP_OK); } /** diff --git a/services/dlp_permission/sa/BUILD.gn b/services/dlp_permission/sa/BUILD.gn index 13bd56ef090f8936dd181ea050cc845737328e71..efd6d3096fa9c4a0cbbd2422e3cb7504ab0a6713 100644 --- a/services/dlp_permission/sa/BUILD.gn +++ b/services/dlp_permission/sa/BUILD.gn @@ -78,7 +78,7 @@ ohos_static_library("dlp_permission_serializer_static") { deps = [ ":dlp_hex_string_static", - "${dlp_root_dir}/interfaces/inner_api/dlp_permission:libdlp_permission_common_interface", + "${dlp_root_dir}/interfaces/inner_api/dlp_permission:dlp_permission_interface", ] external_deps = [ diff --git a/services/dlp_permission/sa/test/BUILD.gn b/services/dlp_permission/sa/test/BUILD.gn index dc53e84a866376eae53f9e89139717d136efa173..e986242d7841b84fdf27e614153dbbaef3f40d65 100644 --- a/services/dlp_permission/sa/test/BUILD.gn +++ b/services/dlp_permission/sa/test/BUILD.gn @@ -193,7 +193,7 @@ ohos_unittest("dlp_permission_serializer_test") { cflags = [ "-DHILOG_ENABLE" ] deps = [ - "${dlp_root_dir}/interfaces/inner_api/dlp_permission:libdlp_permission_common_interface", + "${dlp_root_dir}/interfaces/inner_api/dlp_permission:dlp_permission_interface", "${dlp_root_dir}/services/dlp_permission/sa:dlp_hex_string_static", ]