|
1 |
| -// import { expect } from 'https://deno.land/x/expect@v0.2.6/mod.ts' |
| 1 | +import { expect } from 'https://deno.land/x/expect@v0.2.6/mod.ts' |
2 | 2 | import { describe, it, InitAppAndTest } from '../util.ts'
|
3 | 3 |
|
4 | 4 | import {
|
5 | 5 | checkIfXMLHttpRequest,
|
6 | 6 | getAccepts,
|
7 | 7 | getAcceptsEncodings,
|
8 | 8 | getFreshOrStale,
|
9 |
| - getRequestHeader |
10 |
| - /* getRangeFromHeader, |
11 |
| - reqIs */ |
| 9 | + getRequestHeader, |
| 10 | + getRangeFromHeader, |
| 11 | + reqIs |
12 | 12 | } from '../../extensions/req/mod.ts'
|
13 |
| -// import { Ranges } from '../../types.ts' |
| 13 | +import { Ranges } from '../../types.ts' |
14 | 14 |
|
15 | 15 | describe('Request extensions', () => {
|
16 | 16 | describe('req.get(header)', () => {
|
@@ -104,4 +104,37 @@ describe('Request extensions', () => {
|
104 | 104 | await fetch.get('/').expect('stale')
|
105 | 105 | })
|
106 | 106 | })
|
| 107 | + describe('req.range', () => { |
| 108 | + it('should return parsed ranges', async () => { |
| 109 | + const { fetch } = InitAppAndTest((req, res) => { |
| 110 | + const range = getRangeFromHeader(req) |
| 111 | + const array = range(300) |
| 112 | + expect(array).toContain({ end: 299, start: 0 }) |
| 113 | + expect(array).toHaveLength(1) |
| 114 | + res.end() |
| 115 | + }) |
| 116 | + |
| 117 | + await fetch.get('/').set('Range', 'bytes=0-1000') |
| 118 | + }) |
| 119 | + it('should cap to the given size', async () => { |
| 120 | + const { fetch } = InitAppAndTest((req, res) => { |
| 121 | + const range = getRangeFromHeader(req) |
| 122 | + const size = 300 |
| 123 | + expect((range(size) as Ranges)?.[0].end).toBe(size - 1) |
| 124 | + res.end() |
| 125 | + }) |
| 126 | + |
| 127 | + await fetch.get('/').set('Range', 'bytes=0-1000') |
| 128 | + }) |
| 129 | + it('should cap to the given size when open-ended', async () => { |
| 130 | + const { fetch } = InitAppAndTest((req, res) => { |
| 131 | + const range = getRangeFromHeader(req) |
| 132 | + const size = 300 |
| 133 | + expect((range(size) as Ranges)?.[0].end).toBe(size - 1) |
| 134 | + res.end() |
| 135 | + }) |
| 136 | + |
| 137 | + await fetch.get('/').set('Range', 'bytes=0-') |
| 138 | + }) |
| 139 | + }) |
107 | 140 | })
|
0 commit comments