🏡 index : quine-global-boneyard/electron-builder.git

import { Arch, Platform } from "electron-builder"
import * as path from "path"
import { CheckingMacPackager } from "../helpers/CheckingPackager"
import { assertPack, createMacTargetTest, signed } from "../helpers/packTester"

describe.runIf(process.platform === "darwin" && process.env.CSC_KEY_PASSWORD != null)("mas", () => {
  test("mas", ({ expect }) => createMacTargetTest(expect, ["mas"]))
  test.ifNotCi("dev", ({ expect }) => createMacTargetTest(expect, ["mas-dev"]))
  test.ifNotCi("mas and 7z", ({ expect }) => createMacTargetTest(expect, ["mas", "7z"]))

  const entitlement = (fileName: string) => path.join("build", fileName)
  const entitlementsConfig = {
    entitlements: entitlement("entitlements.mac.plist"),
    entitlementsInherit: entitlement("entitlements.mac.inherit.plist"),
    entitlementsLoginHelper: entitlement("entitlements.mac.login.plist"),
  }

  const targets = Platform.MAC.createTarget(undefined, Arch.x64)

  test.skip("custom mas", ({ expect }) => {
    let platformPackager: CheckingMacPackager | null = null
    return assertPack(
      expect,
      "test-app-one",
      signed({
        targets,
        platformPackagerFactory: (packager, platform) => (platformPackager = new CheckingMacPackager(packager)),
        config: {
          mac: {
            target: ["mas"],
          },
          mas: entitlementsConfig,
        },
      }),
      {
        checkMacApp(appDir, info) {
          const appEntitlements = (filePath: string) => platformPackager!.effectiveSignOptions?.optionsForFile?.(filePath)
          expect(appEntitlements(appDir)?.entitlements).toBe(entitlementsConfig.entitlements)
          expect(appEntitlements("Library/LoginItems")?.entitlements).toBe(entitlementsConfig.entitlementsLoginHelper)
          expect(appEntitlements("anything")?.entitlements).toBe(entitlementsConfig.entitlementsInherit)

          expect(appEntitlements(appDir)?.hardenedRuntime).toBe(false)
          return Promise.resolve()
        },
      }
    )
  })

  test("entitlements in the package.json", ({ expect }) => {
    let platformPackager: CheckingMacPackager | null = null
    return assertPack(
      expect,
      "test-app-one",
      signed({
        targets,
        platformPackagerFactory: (packager, platform) => (platformPackager = new CheckingMacPackager(packager)),
        config: {
          mac: entitlementsConfig,
        },
      }),
      {
        checkMacApp(appDir, info) {
          const appEntitlements = (filePath: string) => platformPackager!.effectiveSignOptions?.optionsForFile?.(filePath)
          expect(appEntitlements(appDir)?.entitlements).toBe(entitlementsConfig.entitlements)
          expect(appEntitlements("Library/LoginItems")?.entitlements).toBe(entitlementsConfig.entitlementsLoginHelper)
          expect(appEntitlements("anything")?.entitlements).toBe(entitlementsConfig.entitlementsInherit)

          expect(appEntitlements(appDir)?.hardenedRuntime).toBe(true)
          return Promise.resolve()
        },
      }
    )
  })

  test("entitlements template", ({ expect }) => {
    let platformPackager: CheckingMacPackager | null = null
    return assertPack(
      expect,
      "test-app-one",
      signed({
        targets,
        platformPackagerFactory: (packager, platform) => (platformPackager = new CheckingMacPackager(packager)),
      }),
      {
        checkMacApp(appDir, info) {
          const appEntitlements = (filePath: string) => platformPackager!.effectiveSignOptions?.optionsForFile?.(filePath)
          expect(appEntitlements(appDir)?.entitlements).toBe(entitlementsConfig.entitlements)
          expect(appEntitlements("Library/LoginItems")?.entitlements).toBe(entitlementsConfig.entitlements)
          expect(appEntitlements("anything")?.entitlements).toBe(entitlementsConfig.entitlements)
          return Promise.resolve()
        },
      }
    )
  })
})