mirror of
				https://github.com/zadam/trilium.git
				synced 2025-10-31 03:29:02 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			59 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			59 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
| import { parseRangeHeader } from "../src/parseRangeHeader";
 | |
| import { SinonSandbox, createSandbox } from "sinon";
 | |
| import { Logger } from "../src/Logger";
 | |
| import { expect } from "chai";
 | |
| import { RangeParserError } from "../src/RangeParserError";
 | |
| 
 | |
| describe("parseRangeHeader tests", () => {
 | |
|   let sandbox: SinonSandbox;
 | |
|   let logger: Logger;
 | |
|   beforeEach(() => {
 | |
|     sandbox = createSandbox();
 | |
|     logger = {
 | |
|       debug: sandbox.stub() as (message: string, extra?: any) => void
 | |
|     };
 | |
|   });
 | |
|   afterEach(() => {
 | |
|     sandbox.restore();
 | |
|   });
 | |
|   it("returns null if range is not specified", () => {
 | |
|     let value = parseRangeHeader("", 10, logger);
 | |
|     expect(value).to.be.equal(null);
 | |
|     value = parseRangeHeader(null, 10, logger);
 | |
|     expect(value).to.be.equal(null);
 | |
|   });
 | |
|   it("returns null if total size is zero", () => {
 | |
|     let value = parseRangeHeader("bytes=0-5", 0, logger);
 | |
|     expect(value).to.be.equal(null);
 | |
|   });
 | |
|   it("if end is not provided, sets end to the last byte (totalSize - 1).", () => {
 | |
|     let value = parseRangeHeader("bytes=0-", 10, logger);
 | |
|     expect(value).to.be.deep.equal({ start: 0, end: 9 });
 | |
|   });
 | |
|   it('if start is not provided, set it to the offset of last "end" bytes from the end of the file.', () => {
 | |
|     let value = parseRangeHeader("bytes=-5", 10, logger);
 | |
|     expect(value).to.be.deep.equal({ start: 5, end: 9 });
 | |
|   });
 | |
|   it("handles invalid ranges", () => {
 | |
|     try {
 | |
|       parseRangeHeader("bytes=6-5", 10, logger);
 | |
|     } catch (error) {
 | |
|       expect(error).that.be.instanceOf(RangeParserError);
 | |
|     }
 | |
|     try {
 | |
|       parseRangeHeader("bytes=6-7", 10, logger);
 | |
|     } catch (error) {
 | |
|       expect(error).that.be.instanceOf(RangeParserError);
 | |
|     }
 | |
|     try {
 | |
|       parseRangeHeader("bytes=6-11", 10, logger);
 | |
|     } catch (error) {
 | |
|       expect(error).that.be.instanceOf(RangeParserError);
 | |
|     }
 | |
|   });
 | |
|   it("returns a valid parsed range.", () => {
 | |
|     let value = parseRangeHeader("bytes=0-5", 10, logger);
 | |
|     expect(value).to.be.deep.equal({ start: 0, end: 5 });
 | |
|   });
 | |
| });
 | 
