import { it, expect, vi, describe } from 'vitest'import { parseOverwrite, getPatternParam } from '../../../src/utils/interception/utils.js'describe('parseOverwrite', () => {it('should parse request overwrite', () => {expect(parseOverwrite({}, {} as any)).toEqual({})expect(parseOverwrite({body: 'foobar',headers: { foo: 'bar' },cookies: [{ name: 'foo', value: 'bar' }],method: 'GET',url: 'http://foobar.com',statusCode: 123}, {} as any)).toMatchInlineSnapshot(`{"body": {"type": "string","value": "foobar",},"cookies": [{"domain": undefined,"expires": undefined,"httpOnly": undefined,"name": "foo","path": undefined,"sameSite": undefined,"secure": undefined,"value": {"type": "string","value": "bar",},},],"headers": [{"name": "foo","value": {"type": "string","value": "bar",},},],"method": "GET","statusCode": 123,"url": "http://foobar.com",}`)})it('should allow to overwrite using functions', () => {const body = vi.fn()const headers = vi.fn()const cookies = vi.fn()const method = vi.fn()const url = vi.fn()const statusCode = vi.fn()expect(parseOverwrite({body,headers,cookies,method,url,statusCode}, {} as any)).toMatchInlineSnapshot(`{"body": {"type": "base64","value": "IiI=",},"cookies": [],"headers": [],"method": undefined,"statusCode": undefined,"url": undefined,}`)expect(body).toBeCalledTimes(1)expect(headers).toBeCalledTimes(1)expect(cookies).toBeCalledTimes(1)expect(method).toBeCalledTimes(1)expect(url).toBeCalledTimes(1)expect(statusCode).toBeCalledTimes(1)})})describe('getPatternParam', () => {it('should get correct pattern param', () => {expect(getPatternParam({ protocol: 'https', hostname: 'foo.com', port: '443', pathname: '/bar' } as any, 'protocol')).toBe('https')expect(getPatternParam({ protocol: 'https', hostname: 'foo.com', port: '443', pathname: '/bar' } as any, 'hostname')).toBe('foo.com')expect(getPatternParam({ protocol: 'https', hostname: 'foo.com', port: '443', pathname: '/bar' } as any, 'port')).toBe('443')expect(getPatternParam({ protocol: 'https', hostname: 'foo.com', port: '443', pathname: '/bar' } as any, 'pathname')).toBe('/bar')expect(getPatternParam({ protocol: 'https', hostname: 'foo.com', port: '', pathname: '/bar' } as any, 'port')).toBe('443')expect(getPatternParam({ protocol: 'https', hostname: 'foo.com', port: '', pathname: '/bar' } as any, 'pathname')).toBe('/bar')expect(getPatternParam({ protocol: 'https', hostname: 'foo.com', port: '', pathname: '*' } as any, 'pathname')).toBe('\\*')expect(getPatternParam({ pathname: '*', hostname: '*' } as any, 'hostname')).toBe(undefined)})})