Failed to save the file to the "xx" directory.

Failed to save the file to the "ll" directory.

Failed to save the file to the "mm" directory.

Failed to save the file to the "wp" directory.

403WebShell
403Webshell
Server IP : 66.29.132.124  /  Your IP : 18.188.130.151
Web Server : LiteSpeed
System : Linux business141.web-hosting.com 4.18.0-553.lve.el8.x86_64 #1 SMP Mon May 27 15:27:34 UTC 2024 x86_64
User : wavevlvu ( 1524)
PHP Version : 7.4.33
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON  |  Sudo : OFF  |  Pkexec : OFF
Directory :  /opt/cpanel/ea-ruby27/src/passenger-release-6.0.23/test/cxx/ConfigKit/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /opt/cpanel/ea-ruby27/src/passenger-release-6.0.23/test/cxx/ConfigKit/SubSchemaTest.cpp
#include <TestSupport.h>
#include <ConfigKit/ConfigKit.h>
#include <ConfigKit/TableTranslator.h>
#include <ConfigKit/DummyTranslator.h>

using namespace Passenger;
using namespace std;

namespace tut {
	struct ConfigKit_SubSchemaTest: public TestBase {
		ConfigKit::Schema schema;
		ConfigKit::Schema subschema;
		ConfigKit::TableTranslator translator;
		ConfigKit::DummyTranslator dummyTranslator;
		Json::Value doc;
		vector<ConfigKit::Error> errors;
	};

	DEFINE_TEST_GROUP(ConfigKit_SubSchemaTest);

	TEST_METHOD(1) {
		set_test_name("The subschema's entries are added to the parent schema's entries");

		subschema.add("gender", ConfigKit::STRING_TYPE, ConfigKit::OPTIONAL);
		subschema.finalize();

		schema.add("name", ConfigKit::STRING_TYPE, ConfigKit::OPTIONAL);
		schema.addSubSchema(subschema, dummyTranslator);
		schema.finalize();

		Json::Value desc = schema.inspect();
		ensure(desc.isMember("name"));
		ensure(desc.isMember("gender"));
	}

	TEST_METHOD(2) {
		set_test_name("When adding subschema entries,"
			" they are translated to the parent schema's equivalent names");

		subschema.add("gender", ConfigKit::STRING_TYPE, ConfigKit::REQUIRED);
		subschema.finalize();

		translator.add("sub_gender", "gender");
		schema.addSubSchema(subschema, translator);
		schema.finalize();

		Json::Value desc = schema.inspect();
		ensure(desc.isMember("sub_gender"));
		ensure(!desc.isMember("gender"));
	}

	TEST_METHOD(3) {
		set_test_name("The subschema's type validators are compatible with translations");

		subschema.add("gender", ConfigKit::STRING_TYPE, ConfigKit::REQUIRED);
		subschema.finalize();

		translator.add("sub_gender", "gender");
		schema.addSubSchema(subschema, translator);
		schema.finalize();

		ConfigKit::Store config(schema);
		config.previewUpdate(doc, errors);
		ensure_equals(errors.size(), 1u);
		ensure_equals(errors[0].getMessage(), "'sub_gender' is required");
	}

	static Json::Value inferDefaultValueForGender(const ConfigKit::Store &config) {
		return config["default_gender"];
	}

	TEST_METHOD(4) {
		set_test_name("The subschema's dynamic default values are compatible with translations");

		subschema.add("default_gender", ConfigKit::STRING_TYPE, ConfigKit::OPTIONAL, "male");
		subschema.addWithDynamicDefault("gender", ConfigKit::STRING_TYPE,
			ConfigKit::OPTIONAL, inferDefaultValueForGender);
		subschema.finalize();

		translator.add("sub_default_gender", "default_gender");
		translator.add("sub_gender", "gender");
		translator.finalize();
		schema.addSubSchema(subschema, translator);
		schema.finalize();

		ConfigKit::Store config(schema);
		ensure_equals(config["sub_gender"].asString(), "male");
	}

	static void validateSubschema(const ConfigKit::Store &config,
		vector<ConfigKit::Error> &errors)
	{
		if (config["gender"].asString() != "male" && config["gender"].asString() != "female") {
			errors.push_back(ConfigKit::Error("{{gender}} must be male or female"));
		}
	}

	TEST_METHOD(10) {
		set_test_name("The subschema's custom validators work on the main schema too");

		subschema.add("gender", ConfigKit::STRING_TYPE, ConfigKit::REQUIRED);
		subschema.addValidator(validateSubschema);
		subschema.finalize();

		schema.addSubSchema(subschema, dummyTranslator);
		schema.finalize();

		ConfigKit::Store config(schema);
		doc["gender"] = "none";
		config.previewUpdate(doc, errors);
		ensure_equals(errors.size(), 1u);
		ensure_equals(errors[0].getMessage(), "gender must be male or female");
	}

	TEST_METHOD(11) {
		set_test_name("The subschema's custom validators are compatible with translations");

		subschema.add("gender", ConfigKit::STRING_TYPE, ConfigKit::REQUIRED);
		subschema.addValidator(validateSubschema);
		subschema.finalize();

		translator.add("sub_gender", "gender");
		translator.finalize();
		schema.addSubSchema(subschema, translator);
		schema.finalize();

		ConfigKit::Store config(schema);
		doc["sub_gender"] = "none";
		config.previewUpdate(doc, errors);
		ensure_equals(errors.size(), 1u);
		ensure_equals(errors[0].getMessage(), "sub_gender must be male or female");
	}

	static Json::Value normalizeTargetAndLevel(const Json::Value &values) {
		Json::Value updates(Json::objectValue);

		if (values["target"].isString()) {
			updates["target"]["path"] = values["target"];
		}

		return updates;
	}

	TEST_METHOD(12) {
		set_test_name("The subschema's normalizers are compatible with translations");

		subschema.add("target", ConfigKit::ANY_TYPE, ConfigKit::REQUIRED);
		subschema.addNormalizer(normalizeTargetAndLevel);
		subschema.finalize();

		translator.add("sub_target", "target");
		translator.finalize();
		schema.addSubSchema(subschema, translator);
		schema.finalize();

		ConfigKit::Store config(schema);
		doc["sub_target"] = "/path";
		ensure(config.update(doc, errors));
		ensure(config["sub_target"].isObject());
		ensure_equals(config["sub_target"]["path"].asString(), "/path");
	}

	static Json::Value addExclamationFilter(const Json::Value &val) {
		return val.asString() + "!";
	}

	TEST_METHOD(13) {
		set_test_name("Inspect filters");

		subschema.add("foo", ConfigKit::STRING_TYPE, ConfigKit::REQUIRED)
			.setInspectFilter(addExclamationFilter);
		subschema.finalize();

		translator.add("sub_foo", "foo");
		translator.finalize();
		schema.addSubSchema(subschema, translator);
		schema.finalize();

		ConfigKit::Store config(schema);
		doc["sub_foo"] = "hello";
		ensure(config.update(doc, errors));
		doc = config.inspect();

		ensure_equals("(2)", config["sub_foo"].asString(), "hello");
		ensure_equals("(3)", doc["sub_foo"]["user_value"].asString(), "hello!");
		ensure_equals("(4)", doc["sub_foo"]["effective_value"].asString(), "hello!");
	}
}

Youez - 2016 - github.com/yon3zu
LinuXploit