diff --git a/.changeset/rekor-fetch-on-conflict.md b/.changeset/rekor-fetch-on-conflict.md new file mode 100644 index 000000000..5492f7ab9 --- /dev/null +++ b/.changeset/rekor-fetch-on-conflict.md @@ -0,0 +1,5 @@ +--- +"@sigstore/sign": patch +--- + +Fetch existing Rekor entries by default when a create request returns a conflict. diff --git a/packages/sign/src/__tests__/witness/tlog/client.test.ts b/packages/sign/src/__tests__/witness/tlog/client.test.ts index 241feceb3..6e4f69fef 100644 --- a/packages/sign/src/__tests__/witness/tlog/client.test.ts +++ b/packages/sign/src/__tests__/witness/tlog/client.test.ts @@ -125,6 +125,23 @@ describe('TLogClient', () => { .reply(409, {}, { Location: `/api/v1/log/entries/${uuid}` }); }); + describe('by default', () => { + const subject = new TLogClient({ rekorBaseURL }); + + describe('when the fetch is successful', () => { + beforeEach(() => { + nock(rekorBaseURL) + .get(`/api/v1/log/entries/${uuid}`) + .reply(200, rekorEntry); + }); + + it('returns a tlog entry', async () => { + const entry = await subject.createEntry(proposedEntry); + expect(entry).toBeTruthy(); + }); + }); + }); + describe('when fetchOnConflict is false', () => { const subject = new TLogClient({ rekorBaseURL, diff --git a/packages/sign/src/witness/tlog/client.ts b/packages/sign/src/witness/tlog/client.ts index 0e133220c..c5ec490c4 100644 --- a/packages/sign/src/witness/tlog/client.ts +++ b/packages/sign/src/witness/tlog/client.ts @@ -40,7 +40,7 @@ export class TLogClient implements TLog { private fetchOnConflict: boolean; constructor(options: TLogClientOptions) { - this.fetchOnConflict = options.fetchOnConflict ?? false; + this.fetchOnConflict = options.fetchOnConflict ?? true; this.rekor = new Rekor({ baseURL: options.rekorBaseURL, retry: options.retry,