mirror of
				https://github.com/zadam/trilium.git
				synced 2025-11-04 13:39:01 +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 });
 | 
						|
  });
 | 
						|
});
 |