Skip to content
Snippets Groups Projects
index.test.ts 1.53 KiB
Newer Older
  • Learn to ignore specific revisions
  • Zdravko Iliev's avatar
    Zdravko Iliev committed
    import fs from "fs";
    import path from "path";
    
    Zdravko Iliev's avatar
    Zdravko Iliev committed
    import { describe, it, expect } from "@jest/globals";
    
    Zdravko Iliev's avatar
    Zdravko Iliev committed
    import PDFparser from "../src/pdfParser";
    
    import { AppError } from "../src/lib/errors";
    
    Zdravko Iliev's avatar
    Zdravko Iliev committed
    
    
    Zdravko Iliev's avatar
    Zdravko Iliev committed
    describe("PDF parser", () => {
    
      it("should return pdf document metadata including signatures", async () => {
    
    Zdravko Iliev's avatar
    Zdravko Iliev committed
        const file = fs.readFileSync(
          path.resolve(__dirname, "./abacus-two-signatures.pdf")
        );
    
    Zdravko Iliev's avatar
    Zdravko Iliev committed
    
        const parser = new PDFparser(file);
        const actual = await parser.getPDFMeta();
    
    Zdravko Iliev's avatar
    Zdravko Iliev committed
        expect(actual.pages).toEqual(2);
    
    Zdravko Iliev's avatar
    Zdravko Iliev committed
      });
    
    
      it("should return pdf document metadata without signatures", async () => {
        const file = fs.readFileSync(path.resolve(__dirname, "./example.pdf"));
    
        const parser = new PDFparser(file);
    
        const actual = await parser.getPDFMeta();
        expect(actual.pages).toEqual(1);
        expect(actual.title).toEqual("PDF Digital Signatures");
        expect(actual.author).toEqual("Tecxoft");
      });
    
      it("should throw error without file", async () => {
        try {
          const parser = new PDFparser(null);
          const actual = await parser.getPDFMeta();
        } catch (error) {
          expect(error).toBeInstanceOf(AppError);
        }
      });
    
    
      it("should throw error if file type is different then pdf", async () => {
        const file = fs.readFileSync(path.resolve(__dirname, "./test.txt"));
    
        try {
          const parser = new PDFparser(file);
          const actual = await parser.getPDFMeta();
        } catch (error) {
          expect(error).toBeInstanceOf(AppError);
          expect(error.message).toEqual("Only pdf file type is supported");
        }
      });
    
    Zdravko Iliev's avatar
    Zdravko Iliev committed
    });