diff --git a/.gitignore b/.gitignore
index 38105ec..bf2bf7e 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,5 +1,6 @@
# Compiled class file
*.class
+/target
# Log file
*.log
diff --git a/.idea/sonarlint/issuestore/1/0/1035b95fde851fd8381dabb4da89dd79908aed9b b/.idea/sonarlint/issuestore/1/0/1035b95fde851fd8381dabb4da89dd79908aed9b
index bb55dd9..2763d12 100644
--- a/.idea/sonarlint/issuestore/1/0/1035b95fde851fd8381dabb4da89dd79908aed9b
+++ b/.idea/sonarlint/issuestore/1/0/1035b95fde851fd8381dabb4da89dd79908aed9b
@@ -1,11 +1,11 @@
-java:S1104#"UMake maxLength a static final constant or non-public and provide accessors if needed.(Öč8āō2J$27ac01a5-96ab-4818-a760-026487bb9b40
+java:S1104#"UMake maxLength a static final constant or non-public and provide accessors if needed.(Öč8āō2J$51dd86c5-3b5c-4844-beb9-246401324f0f
-java:S1104$"SMake country a static final constant or non-public and provide accessors if needed.(Į8áō2J$3fb1893c-13d9-4d09-90c5-a0c869f746d3
+java:S1104$"SMake country a static final constant or non-public and provide accessors if needed.(Į8áō2J$bc4a787c-439b-4d0f-ac25-83044af78fbc
-java:S1104%"XMake validDomains a static final constant or non-public and provide accessors if needed.(ÄÆú˙˙˙˙8áō2J$05cf2b67-0674-493d-bd03-5b29e0e813fa
+java:S1104%"XMake validDomains a static final constant or non-public and provide accessors if needed.(ÄÆú˙˙˙˙8áō2J$bb9e992e-2dbf-4a09-a65d-2adb7c39d0b9
-java:S1104&"\Make validDomainsList a static final constant or non-public and provide accessors if needed.(đÎđ8áō2J$cb37d11e-220f-4a94-bb35-25b03b5273b8
+java:S1104&"\Make validDomainsList a static final constant or non-public and provide accessors if needed.(đÎđ8áō2J$fc283562-d393-432e-b94d-5d49399c6905
-java:S3776?"RRefactor this method to reduce its Cognitive Complexity from 18 to the 15 allowed.(åÕ˛ū˙˙˙˙8éō2J$a80b18b5-e2ba-445d-a20e-b5782b176304
\ No newline at end of file
+java:S3776?"RRefactor this method to reduce its Cognitive Complexity from 18 to the 15 allowed.(åÕ˛ū˙˙˙˙8éō2J$7e173afa-107a-4265-b429-cbd6598bf5dd
\ No newline at end of file
diff --git a/.idea/sonarlint/issuestore/3/c/3c8842d6f65bc0f21cf2bfc030702ffe7e82d70d b/.idea/sonarlint/issuestore/3/c/3c8842d6f65bc0f21cf2bfc030702ffe7e82d70d
new file mode 100644
index 0000000..e9c3728
--- /dev/null
+++ b/.idea/sonarlint/issuestore/3/c/3c8842d6f65bc0f21cf2bfc030702ffe7e82d70d
@@ -0,0 +1,4 @@
+
+ java:S120"ZRename this package name to match the regular expression '^[a-z_]+(\.[a-z_][a-z0-9_]*)*$'.(Ūč˙˙˙˙˙J$7dedef73-8806-4af8-bf45-f6746dcdc5e0
+
+java:S2094"BRemove this empty class, write its code or make it an "interface".(ŧũ§˙˙˙˙˙8áĻ2J$422164ea-d1eb-48dc-8775-e971f816c441
\ No newline at end of file
diff --git a/.idea/sonarlint/issuestore/6/e/6e481a8cc098ad8ab7f553fbd33042be7454e52a b/.idea/sonarlint/issuestore/6/e/6e481a8cc098ad8ab7f553fbd33042be7454e52a
new file mode 100644
index 0000000..e69de29
diff --git a/.idea/sonarlint/issuestore/a/a/aa5999cb67ff93d7fa1f135c6ce35751a7f50782 b/.idea/sonarlint/issuestore/a/a/aa5999cb67ff93d7fa1f135c6ce35751a7f50782
new file mode 100644
index 0000000..ed259c3
--- /dev/null
+++ b/.idea/sonarlint/issuestore/a/a/aa5999cb67ff93d7fa1f135c6ce35751a7f50782
@@ -0,0 +1,3 @@
+
+
+java:S2094"BRemove this empty class, write its code or make it an "interface".(ŧũ§˙˙˙˙˙8áĻ2J$c7bb9038-4984-408c-bba2-ffbb68ecc32f
\ No newline at end of file
diff --git a/.idea/sonarlint/issuestore/d/9/d90a638069474de771e722f81c6e4f61b75eb1c4 b/.idea/sonarlint/issuestore/d/9/d90a638069474de771e722f81c6e4f61b75eb1c4
new file mode 100644
index 0000000..e69de29
diff --git a/.idea/sonarlint/issuestore/d/f/df99130c3df382b199c34a94824d11e25467ed68 b/.idea/sonarlint/issuestore/d/f/df99130c3df382b199c34a94824d11e25467ed68
new file mode 100644
index 0000000..cf07c17
--- /dev/null
+++ b/.idea/sonarlint/issuestore/d/f/df99130c3df382b199c34a94824d11e25467ed68
@@ -0,0 +1,4 @@
+
+ java:S120"ZRename this package name to match the regular expression '^[a-z_]+(\.[a-z_][a-z0-9_]*)*$'.(
ÆFJ$dd66f2c0-5b13-4aa2-bd78-dcdc85a858bd
+d
+java:S2094"BRemove this empty class, write its code or make it an "interface".(ŧũ§˙˙˙˙˙8áĻ2
\ No newline at end of file
diff --git a/.idea/sonarlint/issuestore/index.pb b/.idea/sonarlint/issuestore/index.pb
index 73292bb..cdf02bc 100644
--- a/.idea/sonarlint/issuestore/index.pb
+++ b/.idea/sonarlint/issuestore/index.pb
@@ -34,4 +34,14 @@ Dsrc/main/java/io/github/multiform_validator/CreditCardValidator.java,b\4\b472d
S
#.github/workflows/java-pr-check.yml,6\d\6d7e0794b4bcc592eaba286aa7557da83ba765a5
m
-=src/main/java/io/github/multiform_validator/CpfValidator.java,b\4\b4a2aa78fccd481c2a54c1b1f301c1651829b98c
\ No newline at end of file
+=src/main/java/io/github/multiform_validator/CpfValidator.java,b\4\b4a2aa78fccd481c2a54c1b1f301c1651829b98c
+n
+>src/main/java/io/github/multiform_validator/FileValidator.java,d\9\d90a638069474de771e722f81c6e4f61b75eb1c4
+|
+Lsrc/main/java/io/github/multiform_validator/FileValidator/ValidateImage.java,d\f\df99130c3df382b199c34a94824d11e25467ed68
+t
+Dsrc/main/java/io/github/multiform_validator/Other/ValidateImage.java,3\c\3c8842d6f65bc0f21cf2bfc030702ffe7e82d70d
+t
+Dsrc/main/java/io/github/multiform_validator/other/ValidateImage.java,a\a\aa5999cb67ff93d7fa1f135c6ce35751a7f50782
+T
+$src/test/java/FileValidatorTest.java,6\e\6e481a8cc098ad8ab7f553fbd33042be7454e52a
\ No newline at end of file
diff --git a/.idea/sonarlint/securityhotspotstore/3/c/3c8842d6f65bc0f21cf2bfc030702ffe7e82d70d b/.idea/sonarlint/securityhotspotstore/3/c/3c8842d6f65bc0f21cf2bfc030702ffe7e82d70d
new file mode 100644
index 0000000..e69de29
diff --git a/.idea/sonarlint/securityhotspotstore/6/e/6e481a8cc098ad8ab7f553fbd33042be7454e52a b/.idea/sonarlint/securityhotspotstore/6/e/6e481a8cc098ad8ab7f553fbd33042be7454e52a
new file mode 100644
index 0000000..e69de29
diff --git a/.idea/sonarlint/securityhotspotstore/a/a/aa5999cb67ff93d7fa1f135c6ce35751a7f50782 b/.idea/sonarlint/securityhotspotstore/a/a/aa5999cb67ff93d7fa1f135c6ce35751a7f50782
new file mode 100644
index 0000000..e69de29
diff --git a/.idea/sonarlint/securityhotspotstore/d/9/d90a638069474de771e722f81c6e4f61b75eb1c4 b/.idea/sonarlint/securityhotspotstore/d/9/d90a638069474de771e722f81c6e4f61b75eb1c4
new file mode 100644
index 0000000..e69de29
diff --git a/.idea/sonarlint/securityhotspotstore/d/f/df99130c3df382b199c34a94824d11e25467ed68 b/.idea/sonarlint/securityhotspotstore/d/f/df99130c3df382b199c34a94824d11e25467ed68
new file mode 100644
index 0000000..e69de29
diff --git a/.idea/sonarlint/securityhotspotstore/index.pb b/.idea/sonarlint/securityhotspotstore/index.pb
index 73292bb..cdf02bc 100644
--- a/.idea/sonarlint/securityhotspotstore/index.pb
+++ b/.idea/sonarlint/securityhotspotstore/index.pb
@@ -34,4 +34,14 @@ Dsrc/main/java/io/github/multiform_validator/CreditCardValidator.java,b\4\b472d
S
#.github/workflows/java-pr-check.yml,6\d\6d7e0794b4bcc592eaba286aa7557da83ba765a5
m
-=src/main/java/io/github/multiform_validator/CpfValidator.java,b\4\b4a2aa78fccd481c2a54c1b1f301c1651829b98c
\ No newline at end of file
+=src/main/java/io/github/multiform_validator/CpfValidator.java,b\4\b4a2aa78fccd481c2a54c1b1f301c1651829b98c
+n
+>src/main/java/io/github/multiform_validator/FileValidator.java,d\9\d90a638069474de771e722f81c6e4f61b75eb1c4
+|
+Lsrc/main/java/io/github/multiform_validator/FileValidator/ValidateImage.java,d\f\df99130c3df382b199c34a94824d11e25467ed68
+t
+Dsrc/main/java/io/github/multiform_validator/Other/ValidateImage.java,3\c\3c8842d6f65bc0f21cf2bfc030702ffe7e82d70d
+t
+Dsrc/main/java/io/github/multiform_validator/other/ValidateImage.java,a\a\aa5999cb67ff93d7fa1f135c6ce35751a7f50782
+T
+$src/test/java/FileValidatorTest.java,6\e\6e481a8cc098ad8ab7f553fbd33042be7454e52a
\ No newline at end of file
diff --git a/.idea/workspace.xml b/.idea/workspace.xml
index 7b727eb..2f7b29b 100644
--- a/.idea/workspace.xml
+++ b/.idea/workspace.xml
@@ -5,32 +5,12 @@
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -62,37 +42,38 @@
- {
- "keyToString": {
- "Application.Main.executor": "Run",
- "Application.io.github.gabriel_logan.multiform_validator.Main.executor": "Run",
- "Application.io.github.multiform_validator.Main.executor": "Run",
- "JUnit.AsciiTest.executor": "Run",
- "JUnit.CnpjValidatorTest.executor": "Run",
- "JUnit.CpfValidatorTest.executor": "Run",
- "JUnit.CpfValidatorTest.testNullCpf.executor": "Run",
- "JUnit.CreditCardValidatorTest.executor": "Run",
- "JUnit.CreditCardValidatorTest.testIdentifyFlagCard.executor": "Debug",
- "JUnit.EmailValidatorTest.executor": "Run",
- "JUnit.MainTest.executor": "Run",
- "JUnit.SimpleMathTest.executor": "Run",
- "JUnit.UtilsTest.executor": "Run",
- "JUnit.ValidateTest.executor": "Run",
- "JUnit.ValidatorTest.executor": "Run",
- "Maven.multiform-validator [test].executor": "Run",
- "RunOnceActivity.OpenProjectViewOnStart": "true",
- "RunOnceActivity.ShowReadmeOnStart": "true",
- "SHARE_PROJECT_CONFIGURATION_FILES": "true",
- "git-widget-placeholder": "main",
- "kotlin-language-version-configured": "true",
- "project.structure.last.edited": "Project",
- "project.structure.proportion": "0.15",
- "project.structure.side.proportion": "0.2",
- "run.code.analysis.last.selected.profile": "pProject Default",
- "settings.editor.selected.configurable": "preferences.pluginManager"
+
-
+}]]>
+
diff --git a/src/main/java/io/github/multiform_validator/FileValidator.java b/src/main/java/io/github/multiform_validator/FileValidator.java
new file mode 100644
index 0000000..07f47dc
--- /dev/null
+++ b/src/main/java/io/github/multiform_validator/FileValidator.java
@@ -0,0 +1,98 @@
+package io.github.multiform_validator;
+
+import java.io.File;
+import java.io.IOException;
+import java.nio.file.Files;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.logging.Logger;
+
+public class FileValidator {
+ // Prevent instantiation
+ private FileValidator() {
+ throw new IllegalStateException("Utility class");
+ }
+
+ private static final Logger logger = Logger.getLogger(FileValidator.class.getName());
+
+ /**
+ * Validates an image file.
+ *
+ * @param file The image file to validate.
+ * @return true if the file is a valid image, false otherwise.
+ * @throws IllegalArgumentException if the input value is null.
+ */
+ public static boolean validateImage(File file) {
+ return validateImage(file, null);
+ }
+
+ /**
+ * Validates an image file, excluding specific file types.
+ *
+ * @param file The image file to validate.
+ * @param exclude A list of file types to exclude from validation.
+ * @return true if the file is a valid image, false otherwise.
+ * @throws IllegalArgumentException if the input value is null.
+ */
+ public static boolean validateImage(File file, List exclude) {
+ if (file == null) {
+ throw new IllegalArgumentException("The input value cannot be null.");
+ }
+
+ try {
+ byte[] fileBytes = Files.readAllBytes(file.toPath());
+
+ if (exclude == null) {
+ return isGif(fileBytes) || isIco(fileBytes) || isJpeg(fileBytes) || isPng(fileBytes);
+ }
+
+ List listToValidate = new ArrayList<>();
+ listToValidate.add("gif");
+ listToValidate.add("ico");
+ listToValidate.add("jpeg");
+ listToValidate.add("png");
+
+ List filteredList = new ArrayList<>();
+ for (String item : listToValidate) {
+ if (!exclude.contains(item)) {
+ filteredList.add(item);
+ }
+ }
+
+ if (filteredList.isEmpty()) {
+ return false;
+ }
+
+ return validateFileTypes(fileBytes, filteredList);
+
+ } catch (IOException e) {
+ logger.severe("An error occurred while reading the file: " + e.getMessage());
+ return false;
+ }
+ }
+
+ private static boolean isPng(byte[] fileBytes) {
+ return fileBytes[0] == (byte) 0x89 && fileBytes[1] == 0x50 && fileBytes[2] == 0x4E && fileBytes[3] == 0x47;
+ }
+
+ private static boolean isJpeg(byte[] fileBytes) {
+ return fileBytes[0] == (byte) 0xFF && fileBytes[1] == (byte) 0xD8 && fileBytes[2] == (byte) 0xFF;
+ }
+
+ private static boolean isGif(byte[] fileBytes) {
+ return fileBytes[0] == 0x47 && fileBytes[1] == 0x49 && fileBytes[2] == 0x46 && fileBytes[3] == 0x38;
+ }
+
+ private static boolean isIco(byte[] fileBytes) {
+ return fileBytes[0] == 0x00 && fileBytes[1] == 0x00 && fileBytes[2] == 0x01;
+ }
+
+ private static boolean validateFileTypes(byte[] fileBytes, List filteredList) {
+ boolean isGifValid = filteredList.contains("gif") && isGif(fileBytes);
+ boolean isIcoValid = filteredList.contains("ico") && isIco(fileBytes);
+ boolean isJpegValid = filteredList.contains("jpeg") && isJpeg(fileBytes);
+ boolean isPngValid = filteredList.contains("png") && isPng(fileBytes);
+
+ return isGifValid || isIcoValid || isJpegValid || isPngValid;
+ }
+}
\ No newline at end of file
diff --git a/src/test/java/FileValidatorTest.java b/src/test/java/FileValidatorTest.java
new file mode 100644
index 0000000..bc85e5b
--- /dev/null
+++ b/src/test/java/FileValidatorTest.java
@@ -0,0 +1,50 @@
+import io.github.multiform_validator.FileValidator;
+import org.junit.jupiter.api.Test;
+
+import java.io.File;
+import java.util.Arrays;
+import java.util.List;
+
+import static org.junit.jupiter.api.Assertions.*;
+
+class FileValidatorTest {
+ final String basePath = "src/test/java/assets/isValidImage/";
+
+ @Test
+ void testValidateImage() {
+ File file = new File(basePath + "/valid/valid.jpg");
+ assertTrue(FileValidator.validateImage(file));
+ }
+
+ @Test
+ void testValidateImageWithExclusion() {
+ File file = new File(basePath + "/valid/valid.jpg");
+ List exclude = Arrays.asList("gif", "ico", "png");
+ assertTrue(FileValidator.validateImage(file, exclude));
+ }
+
+ @Test
+ void testValidateImageWithInvalidImage() {
+ File file = new File(basePath + "/invalid/invalid.png");
+ assertFalse(FileValidator.validateImage(file));
+ }
+
+ @Test
+ void testValidateImageWithValidImageAndValidExclusion() {
+ File file = new File(basePath + "/valid/valid.png");
+ List exclude = Arrays.asList("gif", "ico", "png");
+ assertFalse(FileValidator.validateImage(file, exclude));
+ }
+
+ @Test
+ void testValidateImageWithValidImageAndInvalidExclusion() {
+ File file = new File(basePath + "/valid/valid.png");
+ List exclude = Arrays.asList("gif", "ico");
+ assertTrue(FileValidator.validateImage(file, exclude));
+ }
+
+ @Test
+ void testValidateImageWithNullFile() {
+ assertThrows(IllegalArgumentException.class, () -> FileValidator.validateImage(null));
+ }
+}
\ No newline at end of file
diff --git a/src/test/java/assets/isValidAudio/invalid/invalid.mp3 b/src/test/java/assets/isValidAudio/invalid/invalid.mp3
new file mode 100644
index 0000000..fdb6955
--- /dev/null
+++ b/src/test/java/assets/isValidAudio/invalid/invalid.mp3
@@ -0,0 +1 @@
+asdasdasd
diff --git a/src/test/java/assets/isValidAudio/invalid/invalid.wav b/src/test/java/assets/isValidAudio/invalid/invalid.wav
new file mode 100644
index 0000000..fdb6955
--- /dev/null
+++ b/src/test/java/assets/isValidAudio/invalid/invalid.wav
@@ -0,0 +1 @@
+asdasdasd
diff --git a/src/test/java/assets/isValidAudio/valid/valid.mp3 b/src/test/java/assets/isValidAudio/valid/valid.mp3
new file mode 100644
index 0000000..3636d9b
Binary files /dev/null and b/src/test/java/assets/isValidAudio/valid/valid.mp3 differ
diff --git a/src/test/java/assets/isValidAudio/valid/valid.wav b/src/test/java/assets/isValidAudio/valid/valid.wav
new file mode 100644
index 0000000..f16fc4e
Binary files /dev/null and b/src/test/java/assets/isValidAudio/valid/valid.wav differ
diff --git a/src/test/java/assets/isValidImage/invalid/invalid.avif b/src/test/java/assets/isValidImage/invalid/invalid.avif
new file mode 100644
index 0000000..6d80311
--- /dev/null
+++ b/src/test/java/assets/isValidImage/invalid/invalid.avif
@@ -0,0 +1 @@
+asdasdasdsdasdaSADASDASDASDASDASDASDASD
diff --git a/src/test/java/assets/isValidImage/invalid/invalid.gif b/src/test/java/assets/isValidImage/invalid/invalid.gif
new file mode 100644
index 0000000..6d80311
--- /dev/null
+++ b/src/test/java/assets/isValidImage/invalid/invalid.gif
@@ -0,0 +1 @@
+asdasdasdsdasdaSADASDASDASDASDASDASDASD
diff --git a/src/test/java/assets/isValidImage/invalid/invalid.ico b/src/test/java/assets/isValidImage/invalid/invalid.ico
new file mode 100644
index 0000000..6d80311
--- /dev/null
+++ b/src/test/java/assets/isValidImage/invalid/invalid.ico
@@ -0,0 +1 @@
+asdasdasdsdasdaSADASDASDASDASDASDASDASD
diff --git a/src/test/java/assets/isValidImage/invalid/invalid.jpg b/src/test/java/assets/isValidImage/invalid/invalid.jpg
new file mode 100644
index 0000000..6d80311
--- /dev/null
+++ b/src/test/java/assets/isValidImage/invalid/invalid.jpg
@@ -0,0 +1 @@
+asdasdasdsdasdaSADASDASDASDASDASDASDASD
diff --git a/src/test/java/assets/isValidImage/invalid/invalid.png b/src/test/java/assets/isValidImage/invalid/invalid.png
new file mode 100644
index 0000000..6d80311
--- /dev/null
+++ b/src/test/java/assets/isValidImage/invalid/invalid.png
@@ -0,0 +1 @@
+asdasdasdsdasdaSADASDASDASDASDASDASDASD
diff --git a/src/test/java/assets/isValidImage/invalid/invalid.svg b/src/test/java/assets/isValidImage/invalid/invalid.svg
new file mode 100644
index 0000000..6d80311
--- /dev/null
+++ b/src/test/java/assets/isValidImage/invalid/invalid.svg
@@ -0,0 +1 @@
+asdasdasdsdasdaSADASDASDASDASDASDASDASD
diff --git a/src/test/java/assets/isValidImage/invalid/invalid.webp b/src/test/java/assets/isValidImage/invalid/invalid.webp
new file mode 100644
index 0000000..6d80311
--- /dev/null
+++ b/src/test/java/assets/isValidImage/invalid/invalid.webp
@@ -0,0 +1 @@
+asdasdasdsdasdaSADASDASDASDASDASDASDASD
diff --git a/src/test/java/assets/isValidImage/valid/valid.avif b/src/test/java/assets/isValidImage/valid/valid.avif
new file mode 100644
index 0000000..d4f1eab
Binary files /dev/null and b/src/test/java/assets/isValidImage/valid/valid.avif differ
diff --git a/src/test/java/assets/isValidImage/valid/valid.gif b/src/test/java/assets/isValidImage/valid/valid.gif
new file mode 100644
index 0000000..f8f3854
Binary files /dev/null and b/src/test/java/assets/isValidImage/valid/valid.gif differ
diff --git a/src/test/java/assets/isValidImage/valid/valid.ico b/src/test/java/assets/isValidImage/valid/valid.ico
new file mode 100644
index 0000000..a13b806
Binary files /dev/null and b/src/test/java/assets/isValidImage/valid/valid.ico differ
diff --git a/src/test/java/assets/isValidImage/valid/valid.jpg b/src/test/java/assets/isValidImage/valid/valid.jpg
new file mode 100644
index 0000000..a3525f4
Binary files /dev/null and b/src/test/java/assets/isValidImage/valid/valid.jpg differ
diff --git a/src/test/java/assets/isValidImage/valid/valid.png b/src/test/java/assets/isValidImage/valid/valid.png
new file mode 100644
index 0000000..4621f63
Binary files /dev/null and b/src/test/java/assets/isValidImage/valid/valid.png differ
diff --git a/src/test/java/assets/isValidImage/valid/valid.svg b/src/test/java/assets/isValidImage/valid/valid.svg
new file mode 100644
index 0000000..734e42d
--- /dev/null
+++ b/src/test/java/assets/isValidImage/valid/valid.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/test/java/assets/isValidImage/valid/valid.webp b/src/test/java/assets/isValidImage/valid/valid.webp
new file mode 100644
index 0000000..1d88cf2
Binary files /dev/null and b/src/test/java/assets/isValidImage/valid/valid.webp differ
diff --git a/src/test/java/assets/isValidImage/valid/valid2.png b/src/test/java/assets/isValidImage/valid/valid2.png
new file mode 100644
index 0000000..8480c89
Binary files /dev/null and b/src/test/java/assets/isValidImage/valid/valid2.png differ
diff --git a/src/test/java/assets/isValidPdf/invalid.pdf b/src/test/java/assets/isValidPdf/invalid.pdf
new file mode 100644
index 0000000..db4de23
Binary files /dev/null and b/src/test/java/assets/isValidPdf/invalid.pdf differ
diff --git a/src/test/java/assets/isValidPdf/valid.pdf b/src/test/java/assets/isValidPdf/valid.pdf
new file mode 100644
index 0000000..a416f3f
Binary files /dev/null and b/src/test/java/assets/isValidPdf/valid.pdf differ
diff --git a/src/test/java/assets/isValidTxt/invalid.txt b/src/test/java/assets/isValidTxt/invalid.txt
new file mode 100644
index 0000000..a416f3f
Binary files /dev/null and b/src/test/java/assets/isValidTxt/invalid.txt differ
diff --git a/src/test/java/assets/isValidTxt/valid.txt b/src/test/java/assets/isValidTxt/valid.txt
new file mode 100644
index 0000000..db4de23
--- /dev/null
+++ b/src/test/java/assets/isValidTxt/valid.txt
@@ -0,0 +1 @@
+Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam quis venenatis dui, id dictum ipsum. Donec fermentum tortor in velit posuere fermentum. Aliquam erat volutpat. Maecenas mattis sollicitudin leo, quis volutpat nulla scelerisque sit amet. Proin varius nibh est, in mattis magna porta quis. Nunc a viverra enim. Pellentesque ex ipsum, tempus nec sem vitae, imperdiet ullamcorper tellus. Nam elementum metus id ex dapibus, at gravida mi pretium. Nulla porttitor sed dolor quis blandit. Mauris id orci sem. Fusce hendrerit cursus libero ornare pulvinar. Maecenas vitae ullamcorper nibh, eget consequat ligula.
diff --git a/src/test/java/assets/isValidVideo/invalid/invalid.mkv b/src/test/java/assets/isValidVideo/invalid/invalid.mkv
new file mode 100644
index 0000000..0247eeb
--- /dev/null
+++ b/src/test/java/assets/isValidVideo/invalid/invalid.mkv
@@ -0,0 +1 @@
+asdas
diff --git a/src/test/java/assets/isValidVideo/invalid/invalid.mov b/src/test/java/assets/isValidVideo/invalid/invalid.mov
new file mode 100644
index 0000000..0247eeb
--- /dev/null
+++ b/src/test/java/assets/isValidVideo/invalid/invalid.mov
@@ -0,0 +1 @@
+asdas
diff --git a/src/test/java/assets/isValidVideo/invalid/invalid.mp4 b/src/test/java/assets/isValidVideo/invalid/invalid.mp4
new file mode 100644
index 0000000..0247eeb
--- /dev/null
+++ b/src/test/java/assets/isValidVideo/invalid/invalid.mp4
@@ -0,0 +1 @@
+asdas
diff --git a/src/test/java/assets/isValidVideo/valid/valid.mkv b/src/test/java/assets/isValidVideo/valid/valid.mkv
new file mode 100644
index 0000000..5cbfbd7
Binary files /dev/null and b/src/test/java/assets/isValidVideo/valid/valid.mkv differ
diff --git a/src/test/java/assets/isValidVideo/valid/valid.mov b/src/test/java/assets/isValidVideo/valid/valid.mov
new file mode 100644
index 0000000..6401565
Binary files /dev/null and b/src/test/java/assets/isValidVideo/valid/valid.mov differ
diff --git a/src/test/java/assets/isValidVideo/valid/valid.mp4 b/src/test/java/assets/isValidVideo/valid/valid.mp4
new file mode 100644
index 0000000..281ad4c
Binary files /dev/null and b/src/test/java/assets/isValidVideo/valid/valid.mp4 differ