package sign import ( "os" "testing" "time" "github.com/digitorus/pdf" ) func TestCreateInfoEmpty(t *testing.T) { input_file, err := os.Open("../testfiles/testfile20.pdf") if err != nil { t.Errorf("Failed to load test PDF") return } finfo, err := input_file.Stat() if err != nil { t.Errorf("Failed to load test PDF") return } size := finfo.Size() rdr, err := pdf.NewReader(input_file, size) if err != nil { t.Errorf("Failed to load test PDF") return } sign_data := SignData{ Signature: SignDataSignature{ Info: SignDataSignatureInfo{ Name: "John Doe", Location: "Somewhere", Reason: "Test", ContactInfo: "None", Date: time.Now().Local(), }, CertType: CertificationSignature, DocMDPPerm: AllowFillingExistingFormFieldsAndSignaturesPerms, }, } sign_data.ObjectId = uint32(rdr.XrefInformation.ItemCount) + 3 context := SignContext{ Filesize: size + 1, PDFReader: rdr, InputFile: input_file, VisualSignData: VisualSignData{ ObjectId: uint32(rdr.XrefInformation.ItemCount), }, CatalogData: CatalogData{ ObjectId: uint32(rdr.XrefInformation.ItemCount) + 1, }, InfoData: InfoData{ ObjectId: uint32(rdr.XrefInformation.ItemCount) + 2, }, SignData: sign_data, } info, err := context.createInfo() if err != nil { t.Errorf("%s", err.Error()) return } expected_info := "12 0 obj\n<<>>\nendobj\n" if info != expected_info { t.Errorf("Info mismatch, expected %s, but got %s", expected_info, info) } } func TestCreateInfo(t *testing.T) { input_file, err := os.Open("../testfiles/testfile12.pdf") if err != nil { t.Errorf("Failed to load test PDF") return } finfo, err := input_file.Stat() if err != nil { t.Errorf("Failed to load test PDF") return } size := finfo.Size() rdr, err := pdf.NewReader(input_file, size) if err != nil { t.Errorf("Failed to load test PDF") return } sign_data := SignData{ Signature: SignDataSignature{ Info: SignDataSignatureInfo{ Name: "John Doe", Location: "Somewhere", Reason: "Test", ContactInfo: "None", Date: time.Now().Local(), }, CertType: CertificationSignature, DocMDPPerm: AllowFillingExistingFormFieldsAndSignaturesPerms, }, } sign_data.ObjectId = uint32(rdr.XrefInformation.ItemCount) + 3 context := SignContext{ Filesize: size + 1, PDFReader: rdr, InputFile: input_file, VisualSignData: VisualSignData{ ObjectId: uint32(rdr.XrefInformation.ItemCount), }, CatalogData: CatalogData{ ObjectId: uint32(rdr.XrefInformation.ItemCount) + 1, }, InfoData: InfoData{ ObjectId: uint32(rdr.XrefInformation.ItemCount) + 2, }, SignData: sign_data, } info, err := context.createInfo() if err != nil { t.Errorf("%s", err.Error()) return } expected_info := "18 0 obj\n<>\nendobj\n" if info != expected_info { t.Errorf("Info mismatch, expected %s, but got %s", expected_info, info) } }