apple testflight distribute: a build's groups read per group (GET /v1/betaGroups/{id}/relationships/builds) instead of GET /v1/betaGroups?filter[builds]=, which App Store Connect refuses with 400 although the spec declares it; internal all-builds groups reported as already available and never sent the build; a re-run adds nothing; configured groups missing on App Store Connect point at groups sync, unknown ones list what exists; APPLE_LIVE_REJECTED (refused by storebound api too), tests/asc-query-guard.test.ts checks every App Store Connect GET with a query in cli/ against the spec's declared parameters, and the fake App Store Connect answers 400 to undeclared or live-refused parameters (pitfall 42)
This commit is contained in:
parent
f741c15829
commit
bba46b5c7f
13 changed files with 354 additions and 14 deletions
|
|
@ -4,7 +4,7 @@ import { parseCsv, parseCsvRecords, toCsv } from '../cli/lib/csv';
|
|||
import { validateConfig } from '../cli/lib/config';
|
||||
import {
|
||||
betaDescriptions, betaReadiness, betaReviewReq, buildsWithVersion, type Group, groupFromApi, inviteReq, maskEmail, parseTesters, pickBuild,
|
||||
planBetaInfo, planBetaReviewDetail, planDistribute, planGroups, planTesters, planWhatToTest, validateTestflight, whatToTestFromListing,
|
||||
planBetaInfo, planBetaReviewDetail, planDistribute, planGroups, planTesters, planWhatToTest, unknownGroupMessage, validateTestflight, whatToTestFromListing,
|
||||
} from '../cli/lib/testflight';
|
||||
import { TOOLS, toArgv, validateInput } from '../cli/mcp-tools';
|
||||
|
||||
|
|
@ -103,6 +103,13 @@ describe('testflight builds', () => {
|
|||
expect(betaReadiness({ processingState: 'VALID', expired: true }, null)[0]).toContain('expired');
|
||||
expect(betaReadiness({ processingState: 'VALID', usesNonExemptEncryption: null }, { internalBuildState: 'MISSING_EXPORT_COMPLIANCE' })[0]).toContain('export compliance');
|
||||
});
|
||||
test('unknown groups: configured ones point at groups sync, others list what exists', () => {
|
||||
const cfg = [{ name: 'Team', internal: true }, { name: 'QA' }];
|
||||
expect(unknownGroupMessage(['Team'], [], cfg)).toBe('group "Team" is in the config but not on App Store Connect yet: create it with `storebound apple testflight groups sync`');
|
||||
expect(unknownGroupMessage(['Team', 'QA'], [], cfg)).toContain('groups "Team", "QA" are in the config');
|
||||
expect(unknownGroupMessage(['Nope'], G, cfg)).toBe('unknown group "Nope": App Store Connect has "Team", "Everyone inside", "Friends"');
|
||||
expect(unknownGroupMessage(['Nope'], [], cfg)).toContain('no beta groups yet');
|
||||
});
|
||||
test('distribute skips groups that have it and internal all-builds groups', () => {
|
||||
expect(planDistribute('b1', G, ['g-ext']).map(r => r.path)).toEqual(['/v1/betaGroups/g-int/relationships/builds']);
|
||||
expect(planDistribute('b1', G, [])[0]!.body).toEqual({ data: [{ type: 'builds', id: 'b1' }] });
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue