diff --git a/plist b/plist index 5c4ef46897..5be4b87ca3 100644 --- a/plist +++ b/plist @@ -1029,7 +1029,8 @@ /usr/local/opnsense/mvc/script/run_migrations.php /usr/local/opnsense/mvc/script/run_validations.php /usr/local/opnsense/mvc/tests/app/config/config.php -/usr/local/opnsense/mvc/tests/app/library/OPNsense/Core/ConfigConfig/backup/config.xml +/usr/local/opnsense/mvc/tests/app/library/OPNsense/Core/ConfigConfig/backup/array.xml +/usr/local/opnsense/mvc/tests/app/library/OPNsense/Core/ConfigConfig/backup/object.xml /usr/local/opnsense/mvc/tests/app/library/OPNsense/Core/ConfigTest.php /usr/local/opnsense/mvc/tests/app/models/OPNsense/ACL/AclConfig/config.xml /usr/local/opnsense/mvc/tests/app/models/OPNsense/ACL/AclTest.php diff --git a/src/opnsense/mvc/tests/app/library/OPNsense/Core/ConfigConfig/backup/config.xml b/src/opnsense/mvc/tests/app/library/OPNsense/Core/ConfigConfig/backup/array.xml similarity index 100% rename from src/opnsense/mvc/tests/app/library/OPNsense/Core/ConfigConfig/backup/config.xml rename to src/opnsense/mvc/tests/app/library/OPNsense/Core/ConfigConfig/backup/array.xml diff --git a/src/opnsense/mvc/tests/app/library/OPNsense/Core/ConfigConfig/backup/object.xml b/src/opnsense/mvc/tests/app/library/OPNsense/Core/ConfigConfig/backup/object.xml new file mode 100644 index 0000000000..9fdc78cb9c --- /dev/null +++ b/src/opnsense/mvc/tests/app/library/OPNsense/Core/ConfigConfig/backup/object.xml @@ -0,0 +1,8 @@ + + + + + disabled + + + diff --git a/src/opnsense/mvc/tests/app/library/OPNsense/Core/ConfigTest.php b/src/opnsense/mvc/tests/app/library/OPNsense/Core/ConfigTest.php index 0765c212d4..3831196d59 100644 --- a/src/opnsense/mvc/tests/app/library/OPNsense/Core/ConfigTest.php +++ b/src/opnsense/mvc/tests/app/library/OPNsense/Core/ConfigTest.php @@ -43,19 +43,19 @@ class ConfigTest extends \PHPUnit\Framework\TestCase /** * test construct */ - public function testCanBeCreated() + public function testCanBeArray() { self::cleanupTestFiles(); - // switch config to test set for this type (new AppConfig())->update('application.configDir', self::$configDir); + (new AppConfig())->update('application.configDefault', self::$configDir . '/backup/array.xml'); Config::getInstance()->forceReload(); $this->assertNotEmpty(Config::getInstance()->toArray(['rule'])); } /** - * @depends testCanBeCreated + * @depends testCanBeArray */ public function test_to_from_array() { @@ -69,7 +69,39 @@ class ConfigTest extends \PHPUnit\Framework\TestCase $cnf->fromArray($test); - $this->assertEquals(file_get_contents(self::$configDir . '/backup/config.xml'), (string)$cnf); + $this->assertEquals(file_get_contents(self::$configDir . '/backup/array.xml'), (string)$cnf); + } + + /** + * test construct + */ + public function testCanBeObject() + { + self::cleanupTestFiles(); + + (new AppConfig())->update('application.configDir', self::$configDir); + (new AppConfig())->update('application.configDefault', self::$configDir . '/backup/object.xml'); + Config::getInstance()->forceReload(); + + $this->assertNotEmpty(Config::getInstance()->object()); + } + + /** + * @depends testCanBeObject + */ + public function test_to_from_object() + { + $cnf = Config::getInstance(); + + $ramode = (string)$cnf->object()->dhcpdv6->lan->ramode; + + /* test that deleting items does not leave whitespace behind and closes parent */ + unset($cnf->object()->dhcpdv6->lan->ramode); + $this->assertEquals($cnf->object()->dhcpdv6->lan->asXml(), ''); + + /* put the node back with the previous value and check that it opens again too */ + $cnf->object()->dhcpdv6->lan->addChild('ramode', $ramode); + $this->assertEquals(file_get_contents(self::$configDir . '/backup/object.xml'), (string)$cnf); } /**