File size: 1,387 Bytes
9ada4bc
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
import { it, expect } from 'vitest'
import { getRawFetchHeaders } from './getRawFetchHeaders'

it('returns undefined given a non-Headers object', () => {
  expect(getRawFetchHeaders({} as Headers)).toBeUndefined()
})

it('returns an empty Map given an empty Headers instance', () => {
  expect(getRawFetchHeaders(new Headers())).toEqual(new Map())
})

it('returns undefined for headers map on older Node.js versions', () => {
  // Emulate the Headers symbol structure on older
  // versions of Node.js (e.g. 18.8.0).
  const headers = {
    [Symbol('headers list')]: {
      [Symbol('headers map')]: new Map([['header-name', 'header-value']]),
    },
  }
  expect(getRawFetchHeaders(headers as unknown as Headers)).toBeUndefined()
})

it('returns raw headers from the given Headers instance', () => {
  expect(
    getRawFetchHeaders(
      new Headers([
        ['lowercase-header', 'one'],
        ['UPPERCASE-HEADER', 'TWO'],
        ['MiXeD-cAsE-hEaDeR', 'ThReE'],
      ])
    )
  ).toEqual(
    new Map([
      ['lowercase-header', 'one'],
      ['UPPERCASE-HEADER', 'TWO'],
      ['MiXeD-cAsE-hEaDeR', 'ThReE'],
    ])
  )
})

it('returns raw headers for a header with multiple values', () => {
  expect(
    getRawFetchHeaders(
      new Headers([
        ['Set-CookiE', 'a=b'],
        ['Set-CookiE', 'c=d'],
      ])
    )
  ).toEqual(new Map([['Set-CookiE', 'a=b, c=d']]))
})