import assert from 'node:assert/strict' import test from 'node:test' import { BUGCOLLECT_ARTIFACT_UPLOAD_PATH, createArtifactUploadRequest, createRnSourceMapForm, } from './artifact-upload.mjs' test('RN Source Map uses the frozen artifact upload contract', () => { const form = createRnSourceMapForm({ appKey: 'app', platform: 'android', appVersion: '8.0.0', buildId: 'build-1', moduleId: 'orders', moduleVersion: '1.0.2', bundleHash: 'a'.repeat(64), fileBytes: new Uint8Array([1, 2, 3]), fileName: 'orders.android.map', }) assert.equal(BUGCOLLECT_ARTIFACT_UPLOAD_PATH, '/bugcollect/v1/artifacts/upload') assert.deepEqual( Object.fromEntries( [...form.entries()] .filter(([, value]) => typeof value === 'string') .map(([key, value]) => [key, value]), ), { artifactType: 'RN_SOURCEMAP', appKey: 'app', platform: 'android', appVersion: '8.0.0', buildId: 'build-1', moduleId: 'orders', moduleVersion: '1.0.2', bundleHash: 'a'.repeat(64), }, ) assert.equal(form.get('file') instanceof Blob, true) const request = createArtifactUploadRequest('release-token', form) assert.deepEqual(request.headers, { Authorization: 'Bearer release-token' }) assert.equal(request.body, form) assert.throws(() => createArtifactUploadRequest('', form), /requires an API token/) })