appstore-cli
Version:
A command-line interface (CLI) to interact with the Apple App Store Connect API.
134 lines (98 loc) • 4.47 kB
text/typescript
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');
});
});
});