From 24bb4727984f9b22426901a07d5551290a9bcd59 Mon Sep 17 00:00:00 2001 From: Adam Setch <adam.setch@outlook.com> Date: Fri, 31 Mar 2023 15:09:12 -0400 Subject: [PATCH] feat(issues): add jira http util (#21056) Co-authored-by: Michael Kriese <michael.kriese@visualon.de> --- lib/util/http/jira.spec.ts | 27 +++++++++++++++++++++++++++ lib/util/http/jira.ts | 22 ++++++++++++++++++++++ 2 files changed, 49 insertions(+) create mode 100644 lib/util/http/jira.spec.ts create mode 100644 lib/util/http/jira.ts diff --git a/lib/util/http/jira.spec.ts b/lib/util/http/jira.spec.ts new file mode 100644 index 0000000000..4163f3b166 --- /dev/null +++ b/lib/util/http/jira.spec.ts @@ -0,0 +1,27 @@ +import * as httpMock from '../../../test/http-mock'; +import { JiraHttp, setBaseUrl } from './jira'; + +describe('util/http/jira', () => { + const api = new JiraHttp(); + + it('throws error if setBaseUrl not called', async () => { + await expect(api.postJson('some-path')).rejects.toThrow( + new TypeError('Invalid URL') + ); + }); + + it('accepts custom baseUrl', async () => { + const siteUrl = 'https://some-site.atlassian.com'; + httpMock.scope(siteUrl).post('/some-path').reply(200, {}); + setBaseUrl(siteUrl); + + expect(await api.postJson('some-path')).toEqual({ + authorization: false, + body: {}, + headers: { + 'content-type': 'application/json', + }, + statusCode: 200, + }); + }); +}); diff --git a/lib/util/http/jira.ts b/lib/util/http/jira.ts new file mode 100644 index 0000000000..df51c152a4 --- /dev/null +++ b/lib/util/http/jira.ts @@ -0,0 +1,22 @@ +import type { HttpOptions, HttpResponse, InternalHttpOptions } from './types'; +import { Http } from '.'; + +let baseUrl: string; + +export const setBaseUrl = (url: string): void => { + baseUrl = url; +}; + +export class JiraHttp extends Http { + constructor(type = 'jira', options?: HttpOptions) { + super(type, options); + } + + protected override request<T>( + url: string | URL, + options?: InternalHttpOptions + ): Promise<HttpResponse<T>> { + const opts = { baseUrl, ...options }; + return super.request<T>(url, opts); + } +} -- GitLab