diff --git a/src/app/services/retriever/retriever-url.spec.ts b/src/app/services/retriever/retriever-url.spec.ts index 0cfd5ef..d59153b 100644 --- a/src/app/services/retriever/retriever-url.spec.ts +++ b/src/app/services/retriever/retriever-url.spec.ts @@ -26,4 +26,10 @@ describe('appendRetrieverQuestion', () => { expect(appendRetrieverQuestion(undefined, 'open')).toBeNull(); expect(appendRetrieverQuestion(' ', 'open')).toBeNull(); }); + it('asks a secure retriever beside its items, not under them', () => { + expect(appendRetrieverQuestion('/secure-retriever/GlobalInputs/inputs/items?type=FILE', 'open')) + .toBe('/secure-retriever/GlobalInputs/inputs/open?type=FILE'); + expect(appendRetrieverQuestion('/secure-retriever/Flows/subFlow/items', 'required')) + .toBe('/secure-retriever/Flows/subFlow/required'); + }); }); diff --git a/src/app/services/retriever/retriever-url.ts b/src/app/services/retriever/retriever-url.ts index 5b8d17b..3449e93 100644 --- a/src/app/services/retriever/retriever-url.ts +++ b/src/app/services/retriever/retriever-url.ts @@ -17,7 +17,10 @@ export function appendRetrieverQuestion( question: RetrieverQuestion ): string | null { if (typeof rawUrl !== 'string' || rawUrl.trim().length === 0) return null; - const [path, queryString] = rawUrl.split('?', 2); + const [rawPath, queryString] = rawUrl.split('?', 2); + // A secure retriever's values live at `.../{parameter}/items`, its questions at + // `.../{parameter}/{question}` beside them - not under `items`, where nothing answers. + const path = rawPath.replace(/\/items$/, ''); const normalizedPath = path.endsWith(`/${question}`) ? path : `${path}/${question}`; return queryString ? `${normalizedPath}?${queryString}` : normalizedPath; }