UNPKG

appstore-cli

Version:

A command-line interface (CLI) to interact with the Apple App Store Connect API.

134 lines (98 loc) 4.47 kB
import { validateCertificateConfiguration, validateCertificateConfigurationArgs } from './certificate-configuration'; describe('certificate-configuration', () => { describe('validateCertificateConfiguration', () => { it('should validate a valid certificate configuration', () => { const config = { provisioningProfilePath: '/path/to/profile.mobileprovision', certificatePath: '/path/to/cert.p12', certificatePassword: 'password123', }; const errors = validateCertificateConfiguration(config); expect(errors).toHaveLength(0); }); it('should validate a valid certificate configuration with PEM certificate', () => { const config = { provisioningProfilePath: '/path/to/profile.mobileprovision', certificatePath: '/path/to/cert.pem', }; const errors = validateCertificateConfiguration(config); expect(errors).toHaveLength(0); }); it('should validate a valid certificate configuration with automatic signing', () => { const config = { useAutomaticSigning: true, }; const errors = validateCertificateConfiguration(config); expect(errors).toHaveLength(0); }); it('should reject invalid provisioning profile extension', () => { const config = { provisioningProfilePath: '/path/to/profile.invalid', }; const errors = validateCertificateConfiguration(config); expect(errors).toContain('Provisioning profile file must have .mobileprovision extension'); }); it('should reject invalid certificate extension', () => { const config = { certificatePath: '/path/to/cert.invalid', }; const errors = validateCertificateConfiguration(config); expect(errors).toContain('Certificate file must have .p12 or .pem extension'); }); it('should require password for .p12 certificates', () => { const config = { certificatePath: '/path/to/cert.p12', }; const errors = validateCertificateConfiguration(config); expect(errors).toContain('Certificate password is required for .p12 certificate files'); }); it('should reject automatic signing with manual paths', () => { const config = { useAutomaticSigning: true, provisioningProfilePath: '/path/to/profile.mobileprovision', }; const errors = validateCertificateConfiguration(config); expect(errors).toContain('Cannot use automatic signing with manual provisioning profile or certificate paths'); }); }); describe('validateCertificateConfigurationArgs', () => { it('should validate valid CLI arguments', () => { const argv = { provisioningProfilePath: '/path/to/profile.mobileprovision', certificatePath: '/path/to/cert.p12', certificatePassword: 'password123', }; const errors = validateCertificateConfigurationArgs(argv); expect(errors).toHaveLength(0); }); it('should reject invalid provisioning profile extension', () => { const argv = { provisioningProfilePath: '/path/to/profile.invalid', }; const errors = validateCertificateConfigurationArgs(argv); expect(errors).toContain('Provisioning profile file must have .mobileprovision extension'); }); it('should reject invalid certificate extension', () => { const argv = { certificatePath: '/path/to/cert.invalid', }; const errors = validateCertificateConfigurationArgs(argv); expect(errors).toContain('Certificate file must have .p12 or .pem extension'); }); it('should require password for .p12 certificates', () => { const argv = { certificatePath: '/path/to/cert.p12', }; const errors = validateCertificateConfigurationArgs(argv); expect(errors).toContain('Certificate password is required for .p12 certificate files'); }); it('should reject automatic signing with manual paths', () => { const argv = { useAutomaticSigning: true, provisioningProfilePath: '/path/to/profile.mobileprovision', }; const errors = validateCertificateConfigurationArgs(argv); expect(errors).toContain('Cannot use automatic signing with manual provisioning profile or certificate paths'); }); }); });