Skip to content

Commit 0d38c7b

Browse files
author
Andrei Stryhelski
committed
Add tests for signing field
DEVSIX-7416
1 parent 0019475 commit 0d38c7b

File tree

1 file changed

+177
-0
lines changed

1 file changed

+177
-0
lines changed
Lines changed: 177 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,177 @@
1+
package com.itextpdf.signatures.sign;
2+
3+
import com.itextpdf.forms.PdfAcroForm;
4+
import com.itextpdf.forms.fields.PdfFormField;
5+
import com.itextpdf.forms.fields.SignatureFormFieldBuilder;
6+
import com.itextpdf.io.source.ByteArrayOutputStream;
7+
import com.itextpdf.kernel.geom.Rectangle;
8+
import com.itextpdf.kernel.pdf.PdfDocument;
9+
import com.itextpdf.kernel.pdf.PdfPage;
10+
import com.itextpdf.kernel.pdf.PdfWriter;
11+
import com.itextpdf.kernel.pdf.annot.PdfAnnotation;
12+
import com.itextpdf.kernel.pdf.tagging.StandardRoles;
13+
import com.itextpdf.kernel.pdf.tagutils.TagTreePointer;
14+
import com.itextpdf.test.ExtendedITextTest;
15+
import com.itextpdf.test.annotations.type.IntegrationTest;
16+
17+
import java.util.List;
18+
import org.junit.Assert;
19+
import org.junit.Test;
20+
import org.junit.experimental.categories.Category;
21+
22+
23+
@Category(IntegrationTest.class)
24+
// TODO DEVSIX-5438: Change assertions after implementing signature field tagging
25+
public class TaggedSigningFieldTest extends ExtendedITextTest {
26+
27+
@Test
28+
public void checkSigningFieldTest() {
29+
try (PdfDocument pdfDoc = new PdfDocument(new PdfWriter(new ByteArrayOutputStream()))) {
30+
pdfDoc.addNewPage();
31+
pdfDoc.setTagged();
32+
33+
Rectangle rect = new Rectangle(36, 648, 200, 100);
34+
PdfFormField signField = new SignatureFormFieldBuilder(pdfDoc, "signature").setWidgetRectangle(rect)
35+
.createSignature();
36+
PdfAcroForm form = PdfAcroForm.getAcroForm(pdfDoc, true);
37+
form.addField(signField);
38+
39+
TagTreePointer tagPointer = new TagTreePointer(pdfDoc);
40+
Assert.assertNotNull(tagPointer.moveToKid(StandardRoles.FORM));
41+
}
42+
}
43+
44+
@Test
45+
public void checkSigningFieldZeroSizeRectangleTest() {
46+
try (PdfDocument pdfDoc = new PdfDocument(new PdfWriter(new ByteArrayOutputStream()))) {
47+
pdfDoc.addNewPage();
48+
pdfDoc.setTagged();
49+
50+
Rectangle rect = new Rectangle(36, 648, 0, 0);
51+
PdfFormField signField = new SignatureFormFieldBuilder(pdfDoc, "signature").setWidgetRectangle(rect)
52+
.createSignature();
53+
PdfAcroForm form = PdfAcroForm.getAcroForm(pdfDoc, true);
54+
form.addField(signField);
55+
56+
TagTreePointer tagPointer = new TagTreePointer(pdfDoc);
57+
Assert.assertNotNull(tagPointer.moveToKid(StandardRoles.FORM));
58+
}
59+
}
60+
61+
@Test
62+
public void checkSigningFieldPrintFlagTest() {
63+
try (PdfDocument pdfDoc = new PdfDocument(new PdfWriter(new ByteArrayOutputStream()))) {
64+
PdfPage page = pdfDoc.addNewPage();
65+
pdfDoc.setTagged();
66+
67+
Rectangle rect = new Rectangle(36, 648, 200, 100);
68+
PdfFormField signField = new SignatureFormFieldBuilder(pdfDoc, "signature").setWidgetRectangle(rect)
69+
.createSignature();
70+
PdfAcroForm form = PdfAcroForm.getAcroForm(pdfDoc, true);
71+
form.addField(signField);
72+
73+
List<PdfAnnotation> annotations = page.getAnnotations();
74+
annotations.get(0).setFlag(PdfAnnotation.PRINT);
75+
76+
TagTreePointer tagPointer = new TagTreePointer(pdfDoc);
77+
Assert.assertNotNull(tagPointer.moveToKid(StandardRoles.FORM));
78+
}
79+
}
80+
81+
@Test
82+
public void checkSigningFieldHiddenFlagTest() {
83+
try (PdfDocument pdfDoc = new PdfDocument(new PdfWriter(new ByteArrayOutputStream()))) {
84+
PdfPage page = pdfDoc.addNewPage();
85+
pdfDoc.setTagged();
86+
87+
Rectangle rect = new Rectangle(36, 648, 200, 100);
88+
PdfFormField signField = new SignatureFormFieldBuilder(pdfDoc, "signature").setWidgetRectangle(rect)
89+
.createSignature();
90+
PdfAcroForm form = PdfAcroForm.getAcroForm(pdfDoc, true);
91+
form.addField(signField);
92+
93+
List<PdfAnnotation> annotations = page.getAnnotations();
94+
annotations.get(0).setFlag(PdfAnnotation.HIDDEN);
95+
96+
TagTreePointer tagPointer = new TagTreePointer(pdfDoc);
97+
Assert.assertNotNull(tagPointer.moveToKid(StandardRoles.FORM));
98+
}
99+
}
100+
101+
@Test
102+
public void checkSigningFieldNoViewFlagTest() {
103+
try (PdfDocument pdfDoc = new PdfDocument(new PdfWriter(new ByteArrayOutputStream()))) {
104+
PdfPage page = pdfDoc.addNewPage();
105+
pdfDoc.setTagged();
106+
107+
Rectangle rect = new Rectangle(36, 648, 200, 100);
108+
PdfFormField signField = new SignatureFormFieldBuilder(pdfDoc, "signature").setWidgetRectangle(rect)
109+
.createSignature();
110+
PdfAcroForm form = PdfAcroForm.getAcroForm(pdfDoc, true);
111+
form.addField(signField);
112+
113+
List<PdfAnnotation> annotations = page.getAnnotations();
114+
annotations.get(0).setFlag(PdfAnnotation.NO_VIEW);
115+
116+
TagTreePointer tagPointer = new TagTreePointer(pdfDoc);
117+
Assert.assertNotNull(tagPointer.moveToKid(StandardRoles.FORM));
118+
}
119+
}
120+
121+
@Test
122+
public void checkSigningFieldInvisibleFlagTest() {
123+
try (PdfDocument pdfDoc = new PdfDocument(new PdfWriter(new ByteArrayOutputStream()))) {
124+
PdfPage page = pdfDoc.addNewPage();
125+
pdfDoc.setTagged();
126+
127+
Rectangle rect = new Rectangle(36, 648, 200, 100);
128+
PdfFormField signField = new SignatureFormFieldBuilder(pdfDoc, "signature").setWidgetRectangle(rect)
129+
.createSignature();
130+
PdfAcroForm form = PdfAcroForm.getAcroForm(pdfDoc, true);
131+
form.addField(signField);
132+
133+
List<PdfAnnotation> annotations = page.getAnnotations();
134+
annotations.get(0).setFlag(PdfAnnotation.INVISIBLE);
135+
136+
TagTreePointer tagPointer = new TagTreePointer(pdfDoc);
137+
Assert.assertNotNull(tagPointer.moveToKid(StandardRoles.FORM));
138+
}
139+
}
140+
141+
@Test
142+
public void checkSigningFieldOutsidePageTest() {
143+
try (PdfDocument pdfDoc = new PdfDocument(new PdfWriter(new ByteArrayOutputStream()))) {
144+
pdfDoc.addNewPage();
145+
pdfDoc.setTagged();
146+
147+
Rectangle rect = new Rectangle(-150, -150, 100, 100);
148+
PdfFormField signField = new SignatureFormFieldBuilder(pdfDoc, "signature").setWidgetRectangle(rect)
149+
.createSignature();
150+
PdfAcroForm form = PdfAcroForm.getAcroForm(pdfDoc, true);
151+
form.addField(signField);
152+
153+
TagTreePointer tagPointer = new TagTreePointer(pdfDoc);
154+
Assert.assertNotNull(tagPointer.moveToKid(StandardRoles.FORM));
155+
}
156+
}
157+
158+
@Test
159+
public void checkSigningFieldOutsidePageAndHiddenTest() {
160+
try (PdfDocument pdfDoc = new PdfDocument(new PdfWriter(new ByteArrayOutputStream()))) {
161+
PdfPage page = pdfDoc.addNewPage();
162+
pdfDoc.setTagged();
163+
164+
Rectangle rect = new Rectangle(-150, -150, 200, 100);
165+
PdfFormField signField = new SignatureFormFieldBuilder(pdfDoc, "signature").setWidgetRectangle(rect)
166+
.createSignature();
167+
PdfAcroForm form = PdfAcroForm.getAcroForm(pdfDoc, true);
168+
form.addField(signField);
169+
170+
List<PdfAnnotation> annotations = page.getAnnotations();
171+
annotations.get(0).setFlag(PdfAnnotation.HIDDEN);
172+
173+
TagTreePointer tagPointer = new TagTreePointer(pdfDoc);
174+
Assert.assertNotNull(tagPointer.moveToKid(StandardRoles.FORM));
175+
}
176+
}
177+
}

0 commit comments

Comments
 (0)