DailyView/Carthage/Checkouts/facebook-ios-sdk/FBSDKShareKit/FBSDKShareKitTests/Internal/PrivacyManifestTests.swift
2025-12-30 16:40:31 +08:00

59 lines
1.8 KiB
Swift

/*
* Copyright (c) Meta Platforms, Inc. and affiliates.
* All rights reserved.
*
* This source code is licensed under the license found in the
* LICENSE file in the root directory of this source tree.
*/
@testable import FBSDKShareKit
import XCTest
final class PrivacyManifestTests: XCTestCase {
var manifestUrl: URL?
override func setUp() {
super.setUp()
let bundle = Bundle(for: Hashtag.self)
manifestUrl = bundle.url(forResource: "PrivacyInfo", withExtension: "xcprivacy")
}
override func tearDown() {
manifestUrl = nil
super.tearDown()
}
func testTrackingDomains() {
guard let manifestUrl else {
return XCTFail("Could not find Privacy Manifest file")
}
let manifest = NSDictionary(contentsOf: manifestUrl)
guard let trackingDomains = manifest?["NSPrivacyTrackingDomains"] as? NSArray else {
return XCTFail("Could not find tracking domains")
}
XCTAssertTrue(trackingDomains.count == 1)
XCTAssertTrue(trackingDomains.contains("ep1.facebook.com"))
}
func testRequiredReasonAPIs() {
guard let manifestUrl else {
return XCTFail("Could not find Privacy Manifest file")
}
if NSDictionary(contentsOf: manifestUrl)?["NSPrivacyAccessedAPITypes"] != nil {
return XCTFail("Should not contain Privacy Accessed API Types")
}
}
func testPrivacyTracking() {
guard let manifestUrl else {
return XCTFail("Could not find Privacy Manifest file")
}
let manifest = NSDictionary(contentsOf: manifestUrl)
guard let privacyTrackingFlag = manifest?["NSPrivacyTracking"] as? Bool else {
return XCTFail("Could not find NSPrivacyTracking key")
}
XCTAssertTrue(privacyTrackingFlag, "NSPrivacyTracking is expected to be true in the Privacy Manifest file")
}
}