UNPKG

appstore-cli

Version:

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

109 lines (86 loc) 3 kB
import { AppStoreConnectAPI } from './api-client'; import axios from 'axios'; import MockAdapter from 'axios-mock-adapter'; // Mock the modules before importing them jest.mock('./config', () => ({ loadConfig: jest.fn() })); jest.mock('./auth', () => ({ generateJwt: jest.fn() })); import { generateJwt } from './auth'; import { loadConfig } from './config'; describe('AppStoreConnectAPI', () => { let mock: MockAdapter; beforeEach(() => { mock = new MockAdapter(axios); (loadConfig as jest.Mock).mockReturnValue({ keyId: 'test-key-id', issuerId: 'test-issuer-id' }); (generateJwt as jest.Mock).mockResolvedValue('test-jwt'); }); afterEach(() => { mock.restore(); }); it('should make a successful GET request', async () => { const api = new AppStoreConnectAPI(); await api.initialize(); const data = { users: ['John Doe'] }; mock.onGet('https://api.appstoreconnect.apple.com/v1/users').reply(200, data); const response = await api.get('/users'); expect(response).toEqual(data); }); it('should handle API errors gracefully', async () => { const api = new AppStoreConnectAPI(); await api.initialize(); mock.onGet('https://api.appstoreconnect.apple.com/v1/users').reply(404, { error: 'Not Found' }); await expect(api.get('/users')).rejects.toThrow('API request failed with status 404'); }); it('should create an app successfully', async () => { const api = new AppStoreConnectAPI(); await api.initialize(); const appData = { data: { id: '12345', attributes: { name: 'Test App', bundleId: 'com.test.app', sku: 'TESTAPP123', primaryLocale: 'en-US', } } }; mock.onPost('https://api.appstoreconnect.apple.com/v1/apps').reply(200, appData); const response = await api.createApp('Test App', 'com.test.app', 'TESTAPP123', 'en-US', '1.0.0'); expect(response).toEqual(appData); }); it('should create a beta group successfully', async () => { const api = new AppStoreConnectAPI(); await api.initialize(); const betaGroupData = { data: [{ id: '67890', attributes: { name: 'Test Group', isInternalGroup: true, } }] }; mock.onPost('https://api.appstoreconnect.apple.com/v1/betaGroups').reply(200, betaGroupData); const response = await api.createBetaGroup('Test Group', '12345', true); expect(response).toEqual(betaGroupData); }); it('should submit a build for review successfully', async () => { const api = new AppStoreConnectAPI(); await api.initialize(); const submissionData = { data: { id: 'abcde', } }; mock.onPost('https://api.appstoreconnect.apple.com/v1/appStoreReviewDetails').reply(200, submissionData); const response = await api.submitBuildForReview('build123', 'app456'); expect(response).toEqual(submissionData); }); });