KeychainAccess icon indicating copy to clipboard operation
KeychainAccess copied to clipboard

Entitlements error while tests

Open vani2 opened this issue 1 year ago • 2 comments

I have no problem with calling from the main bundle.

But I want to write a unit test, and I've got

OSStatus error:[-34018] Internal error when a required entitlement isn't present, client has neither application-identifier nor keychain-access-groups entitlements.

My project structure is following:

  • Main Bundle
    • Modules (Swift Package)
      • API Target that has KeychainAccess as a dependency.
      • APITests Target where I tried to test class that uses KeychainAccess.

My package file

// swift-tools-version: 5.7
// The swift-tools-version declares the minimum version of Swift required to build this package.

import PackageDescription

let package = Package(
    name: "Modules",
    defaultLocalization: "en",
    platforms: [.iOS(.v15)],
    products: [
        .library(
            name: "Modules",
            targets: ["API"]
        )
    ],
    dependencies: [
        .package(url: "[email protected]:kishikawakatsumi/KeychainAccess.git", from: "4.2.0")
    ],
    targets: [
        .target(
            name: "API",
            dependencies: [
                .product(name: "KeychainAccess", package: "KeychainAccess")
            ]
        ),
        .testTarget(
            name: "APITests",
            dependencies: ["API"]
        )
    ]
)

I test at the iPhone Simulatore, Xcode 14.2. Keychain capability is on. I also tried https://github.com/kishikawakatsumi/KeychainAccess/issues/549#issuecomment-1304701780 but didn't help.

vani2 avatar Feb 24 '23 20:02 vani2

I am experiencing the same problem.

Running unit test in swift package gives the error:

OSStatus error:[-34018] Internal error when a required entitlement isn't present, client has neither application-identifier nor keychain-access-groups entitlements.

Keychain capability is on as well.

Executing the unit test in the app project works. There is a problem with swift package not handling entitlements.

https://forums.swift.org/t/host-application-for-spm-tests/24363

NikolaGrujic91 avatar Mar 16 '23 19:03 NikolaGrujic91

@NikolaGrujic91 @vani2 This is a while after but to anyone reading this, the solution I found was to select a host application in your unit test framework.

Targets->TestFramework->General->Testing->Host Application

nakajimayoshi avatar Dec 08 '23 06:12 nakajimayoshi