/* * SPDX-FileCopyrightText: 2023 The HedgeDoc developers (see AUTHORS file) * * SPDX-License-Identifier: AGPL-3.0-only */ import { ApiResponse } from './api-response' import { Mock } from 'ts-mockery' import { describe, expect, it, beforeAll, afterAll } from 'vitest' describe('ApiResponse', () => { it('getResponse returns input response', () => { const mockResponse = Mock.of<Response>() const responseObj = new ApiResponse(mockResponse) expect(responseObj.getResponse()).toEqual(mockResponse) }) describe('asParsedJsonObject with', () => { it('invalid header', async () => { const mockHeaders = new Headers() mockHeaders.set('Content-Type', 'text/invalid') const mockResponse = Mock.of<Response>({ headers: mockHeaders }) const responseObj = new ApiResponse(mockResponse) await expect(responseObj.asParsedJsonObject()).rejects.toThrow('Response body does not seem to be JSON encoded') }) it('valid header', async () => { const mockHeaders = new Headers() mockHeaders.set('Content-Type', 'application/json') const mockBody = { Hedgy: '🦔' } const mockResponse = Mock.of<Response>({ headers: mockHeaders, json(): Promise<typeof mockBody> { return Promise.resolve(mockBody) } }) const responseObj = new ApiResponse(mockResponse) await expect(responseObj.asParsedJsonObject()).resolves.toEqual(mockBody) }) }) })