-
Notifications
You must be signed in to change notification settings - Fork 28k
/
Copy pathget-hostname.test.ts
42 lines (39 loc) · 1.85 KB
/
get-hostname.test.ts
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
import { getHostname } from './get-hostname'
describe('getHostname', () => {
describe('from URL', () => {
it.each([
{ url: 'http://example.com', hostname: 'example.com' },
{ url: 'http://example.com/', hostname: 'example.com' },
{ url: 'http://example.com:3000', hostname: 'example.com' },
{ url: 'https://example.com', hostname: 'example.com' },
{ url: 'https://example.com/', hostname: 'example.com' },
{ url: 'https://example.com:3000', hostname: 'example.com' },
{ url: 'http://localhost', hostname: 'localhost' },
{ url: 'http://localhost/', hostname: 'localhost' },
{ url: 'http://localhost:3000', hostname: 'localhost' },
{ url: 'http://127.0.0.1', hostname: '127.0.0.1' },
{ url: 'http://127.0.0.1/', hostname: '127.0.0.1' },
{ url: 'http://127.0.0.1:3000', hostname: '127.0.0.1' },
{ url: 'http://8.8.8.8', hostname: '8.8.8.8' },
{ url: 'http://8.8.8.8/', hostname: '8.8.8.8' },
{ url: 'http://8.8.8.8:3000', hostname: '8.8.8.8' },
])('should return $hostname for $url', ({ url, hostname }) => {
const parsed = new URL(url)
// Base case.
expect(getHostname(parsed)).toBe(hostname)
// With headers.
expect(getHostname(parsed, { host: parsed.host })).toBe(hostname)
// With an empty headers array.
// @ts-expect-error passing an array of strings is not allowed
expect(getHostname(parsed, { host: [] })).toBe(hostname)
// With a headers array.
// @ts-expect-error passing an array of strings is not allowed
expect(getHostname({}, { host: [parsed.host] })).toBe(undefined)
})
})
it('should return undefined for empty input', () => {
expect(getHostname({})).toBe(undefined)
// @ts-expect-error passing an array of strings is not allowed
expect(getHostname({}, { host: [] })).toBe(undefined)
})
})