Skip to content
Open
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion Sources/XKit/Model/Entitlements/EntitlementTypes.swift
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ extension EntitlementContainer {
TeamIdentifierEntitlement.self,
KeychainAccessGroupsEntitlement.self,
GetTaskAllowEntitlement.self,
// AssociatedDomainsEntitlement.self,
AssociatedDomainsEntitlement.self,
APSEnvironmentEntitlement.self,
AppGroupEntitlement.self,
// NetworkExtensionEntitlement.self,
Expand Down
37 changes: 37 additions & 0 deletions Tests/XToolTests/AssociatedDomainsEntitlementTests.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
import Foundation
import Testing
@testable import XKit

@Test func associatedDomainsEntitlementMapsToDeveloperCapability() throws {
let plist = """
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>com.apple.developer.associated-domains</key>
<array>
<string>applinks:example.com</string>
</array>
</dict>
</plist>
"""

let entitlements = try PropertyListDecoder().decode(
Entitlements.self,
from: Data(plist.utf8)
)
let associatedDomains = try #require(
entitlements.entitlements().compactMap { $0 as? AssociatedDomainsEntitlement }.first
)

#expect(associatedDomains.rawValue == ["applinks:example.com"])
#expect(associatedDomains.capability.capabilityType.value1 == .associatedDomains)
#expect(!associatedDomains.capability.isFree)

let encoded = try PropertyListEncoder().encode(entitlements)
let dictionary = try #require(
PropertyListSerialization.propertyList(from: encoded, format: nil) as? [String: Any]
)

#expect(dictionary[AssociatedDomainsEntitlement.identifier] as? [String] == ["applinks:example.com"])
}