diff --git a/src/opnsense/mvc/app/models/OPNsense/Base/FieldTypes/Base64Field.php b/src/opnsense/mvc/app/models/OPNsense/Base/FieldTypes/Base64Field.php new file mode 100644 index 000000000..3b1b68074 --- /dev/null +++ b/src/opnsense/mvc/app/models/OPNsense/Base/FieldTypes/Base64Field.php @@ -0,0 +1,71 @@ +internalValidationMessage; + } + return $messages; + } + + /** + * retrieve field validators for this field type + * @return array + */ + public function getValidators() + { + $validators = parent::getValidators(); + if ($this->internalValue != null) { + $validators[] = new CallbackValidator(["callback" => function ($data) { + return $this->validateBase64($data); + } + ]); + } + return $validators; + } + +} diff --git a/src/opnsense/mvc/tests/app/models/OPNsense/Base/FieldTypes/Base64FieldTest.php b/src/opnsense/mvc/tests/app/models/OPNsense/Base/FieldTypes/Base64FieldTest.php new file mode 100644 index 000000000..dcf39925d --- /dev/null +++ b/src/opnsense/mvc/tests/app/models/OPNsense/Base/FieldTypes/Base64FieldTest.php @@ -0,0 +1,93 @@ +assertInstanceOf('\OPNsense\Base\FieldTypes\Base64Field', new Base64Field()); + } + + public function testRequiredEmpty() + { + $this->expectException(\Phalcon\Validation\Exception::class); + $this->expectExceptionMessage("PresenceOf"); + $field = new Base64Field(); + $field->setRequired("Y"); + $field->setValue(""); + $field->eventPostLoading(); + $this->validateThrow($field); + } + + public function testRequiredNotEmpty() + { + $field = new Base64Field(); + $field->setRequired("Y"); + $field->setValue("T1BOc2Vuc2U="); + $field->eventPostLoading(); + $this->assertEmpty($this->validate($field)); + } + + public function testValidValues() + { + $field = new Base64Field(); + $field->eventPostLoading(); + foreach (array("T1BOc2Vuc2U=", "RGVjaXNv", "RGVj\naXNv") as $value) { + $field->setValue($value); + $this->assertEmpty($this->validate($field)); + } + } + + public function testInValidValues() + { + $field = new Base64Field(); + foreach (array("!2121", "x2x", "88766-1234") as $value) { + $field->setValue($value); + $this->assertNotEmpty($this->validate($field)); + } + } + + /** + * type is not a container + */ + public function testIsContainer() + { + $field = new Base64Field(); + $this->assertFalse($field->isContainer()); + } +}