|
@@ -23,7 +23,7 @@ describe('Desktop local packaging configuration', () => {
|
|
|
it('selects the platform file, preserves literal secrets, and excludes stale ambient release settings', async () => {
|
|
it('selects the platform file, preserves literal secrets, and excludes stale ambient release settings', async () => {
|
|
|
await withDirectory(async (directory) => {
|
|
await withDirectory(async (directory) => {
|
|
|
await writeFile(join(directory, '.env.windows'), '\uFEFFDSH_DESKTOP_APP_ID=com.example.windows\r\nDSH_DESKTOP_WINDOWS_TOKEN_PIN=" #!$%&literal "\r\nDSH_DESKTOP_WINDOWS_CER_FILE="keys/public certificate.cer"\r\n')
|
|
await writeFile(join(directory, '.env.windows'), '\uFEFFDSH_DESKTOP_APP_ID=com.example.windows\r\nDSH_DESKTOP_WINDOWS_TOKEN_PIN=" #!$%&literal "\r\nDSH_DESKTOP_WINDOWS_CER_FILE="keys/public certificate.cer"\r\n')
|
|
|
- await writeFile(join(directory, '.env.macos'), 'DSH_DESKTOP_APP_ID=com.example.mac\nAPPLE_KEYCHAIN_PROFILE=release\n')
|
|
|
|
|
|
|
+ await writeFile(join(directory, '.env.macos'), 'DSH_DESKTOP_APP_ID=com.example.mac\nAPPLE_KEYCHAIN_PROFILE=release\nCSC_LINK=keys/signing.p12\nCSC_KEY_PASSWORD=" # literal "\n')
|
|
|
const parent = {
|
|
const parent = {
|
|
|
PATH: 'build-tools', DSH_DESKTOP_APP_ID: 'com.stale.desktop',
|
|
PATH: 'build-tools', DSH_DESKTOP_APP_ID: 'com.stale.desktop',
|
|
|
DSH_DESKTOP_MANDATORY_UPDATE_CONFIG: '{"origin":"https://stale.example.com"}',
|
|
DSH_DESKTOP_MANDATORY_UPDATE_CONFIG: '{"origin":"https://stale.example.com"}',
|
|
@@ -41,6 +41,7 @@ describe('Desktop local packaging configuration', () => {
|
|
|
})
|
|
})
|
|
|
expect(loadDesktopPackageEnvironment('darwin', parent, directory)).toEqual({
|
|
expect(loadDesktopPackageEnvironment('darwin', parent, directory)).toEqual({
|
|
|
PATH: 'build-tools', DSH_DESKTOP_APP_ID: 'com.example.mac', APPLE_KEYCHAIN_PROFILE: 'release',
|
|
PATH: 'build-tools', DSH_DESKTOP_APP_ID: 'com.example.mac', APPLE_KEYCHAIN_PROFILE: 'release',
|
|
|
|
|
+ CSC_LINK: join(directory, 'keys/signing.p12'), CSC_KEY_PASSWORD: ' # literal ',
|
|
|
})
|
|
})
|
|
|
expect(parent.DSH_DESKTOP_WINDOWS_TOKEN_PIN).toBe('stale-pin')
|
|
expect(parent.DSH_DESKTOP_WINDOWS_TOKEN_PIN).toBe('stale-pin')
|
|
|
expect(parent.dsh_desktop_mandatory_update_config).toBe('stale-policy')
|
|
expect(parent.dsh_desktop_mandatory_update_config).toBe('stale-policy')
|
|
@@ -105,16 +106,16 @@ describe('Desktop local packaging configuration', () => {
|
|
|
}).toThrow(/APPLE_API_KEY_ID/u)
|
|
}).toThrow(/APPLE_API_KEY_ID/u)
|
|
|
expect(() => {
|
|
expect(() => {
|
|
|
validateDesktopPackageEnvironment({ ...RELEASE, ...MAC_IDENTITY, APPLE_KEYCHAIN_PROFILE: 'release' }, MACOS)
|
|
validateDesktopPackageEnvironment({ ...RELEASE, ...MAC_IDENTITY, APPLE_KEYCHAIN_PROFILE: 'release' }, MACOS)
|
|
|
- }).not.toThrow()
|
|
|
|
|
|
|
+ }).toThrow(/CSC_LINK/u)
|
|
|
expect(() => {
|
|
expect(() => {
|
|
|
validateDesktopPackageEnvironment({ ...RELEASE, ...MAC_IDENTITY, APPLE_KEYCHAIN_PROFILE: 'release', APPLE_API_KEY: '' }, MACOS)
|
|
validateDesktopPackageEnvironment({ ...RELEASE, ...MAC_IDENTITY, APPLE_KEYCHAIN_PROFILE: 'release', APPLE_API_KEY: '' }, MACOS)
|
|
|
}).toThrow(/exactly one macOS notarization strategy/u)
|
|
}).toThrow(/exactly one macOS notarization strategy/u)
|
|
|
expect(() => {
|
|
expect(() => {
|
|
|
validateDesktopPackageEnvironment({ ...RELEASE, ...MAC_IDENTITY, APPLE_ID: 'user@example.com', APPLE_APP_SPECIFIC_PASSWORD: 'fixture', APPLE_TEAM_ID: 'TEAMID1234' }, MACOS)
|
|
validateDesktopPackageEnvironment({ ...RELEASE, ...MAC_IDENTITY, APPLE_ID: 'user@example.com', APPLE_APP_SPECIFIC_PASSWORD: 'fixture', APPLE_TEAM_ID: 'TEAMID1234' }, MACOS)
|
|
|
- }).not.toThrow()
|
|
|
|
|
|
|
+ }).toThrow(/CSC_LINK/u)
|
|
|
await withDirectory(async (directory) => {
|
|
await withDirectory(async (directory) => {
|
|
|
const appleApiKey = join(directory, 'AuthKey.p8')
|
|
const appleApiKey = join(directory, 'AuthKey.p8')
|
|
|
- const environment = { ...RELEASE, ...MAC_IDENTITY, APPLE_API_KEY: appleApiKey, APPLE_API_KEY_ID: 'TEST123456', APPLE_API_ISSUER: '11111111-2222-3333-4444-555555555555' }
|
|
|
|
|
|
|
+ const environment = { ...RELEASE, ...MAC_IDENTITY, CSC_LINK: appleApiKey, CSC_KEY_PASSWORD: '', APPLE_API_KEY: appleApiKey, APPLE_API_KEY_ID: 'TEST123456', APPLE_API_ISSUER: '11111111-2222-3333-4444-555555555555' }
|
|
|
expect(() => {
|
|
expect(() => {
|
|
|
validateDesktopPackageEnvironment(environment, MACOS)
|
|
validateDesktopPackageEnvironment(environment, MACOS)
|
|
|
}).toThrow(/APPLE_API_KEY must identify a readable local file/u)
|
|
}).toThrow(/APPLE_API_KEY must identify a readable local file/u)
|
|
@@ -122,6 +123,11 @@ describe('Desktop local packaging configuration', () => {
|
|
|
expect(() => {
|
|
expect(() => {
|
|
|
validateDesktopPackageEnvironment(environment, MACOS)
|
|
validateDesktopPackageEnvironment(environment, MACOS)
|
|
|
}).not.toThrow()
|
|
}).not.toThrow()
|
|
|
|
|
+ expect(() => {
|
|
|
|
|
+ validateDesktopPackageEnvironment({ ...environment, CSC_KEY_PASSWORD: undefined }, MACOS)
|
|
|
|
|
+ }).toThrow(/CSC_KEY_PASSWORD/u)
|
|
|
|
|
+ expect(() => { validateDesktopPackageEnvironment({ ...environment, CSC_LINK: directory }, MACOS) }).toThrow(/CSC_LINK/u)
|
|
|
|
|
+ expect(() => { validateDesktopPackageEnvironment({ ...environment, CSC_LINK: 'missing.p12' }, MACOS, { prepareOnly: true }) }).toThrow(/CSC_LINK/u)
|
|
|
expect(() => {
|
|
expect(() => {
|
|
|
validateDesktopPackageEnvironment({ ...RELEASE, ...MAC_IDENTITY, APPLE_KEYCHAIN_PROFILE: 'release', APPLE_KEYCHAIN: directory }, MACOS)
|
|
validateDesktopPackageEnvironment({ ...RELEASE, ...MAC_IDENTITY, APPLE_KEYCHAIN_PROFILE: 'release', APPLE_KEYCHAIN: directory }, MACOS)
|
|
|
}).toThrow(/APPLE_KEYCHAIN/u)
|
|
}).toThrow(/APPLE_KEYCHAIN/u)
|