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 : 3.141.45.137
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/SchemaTest.cpp
#include <TestSupport.h>
#include <ConfigKit/Schema.h>

using namespace Passenger;
using namespace std;

namespace tut {
	struct ConfigKit_SchemaTest: public TestBase {
		ConfigKit::Schema schema;
		vector<ConfigKit::Error> errors;
	};

	DEFINE_TEST_GROUP(ConfigKit_SchemaTest);

	/*********** Test validation ***********/

	TEST_METHOD(1) {
		set_test_name("Validating against an unregistered key fails");

		schema.finalize();
		try {
			schema.validateValue("foo", "str", errors);
			fail();
		} catch (const ArgumentException &) {
			// pass
		}
	}

	TEST_METHOD(5) {
		set_test_name("Validating required keys with null values");

		schema.add("foo", ConfigKit::STRING_TYPE, ConfigKit::REQUIRED);
		schema.add("bar", ConfigKit::STRING_TYPE, ConfigKit::REQUIRED);
		schema.finalize();

		ensure(!schema.validateValue("foo", Json::nullValue, errors));
		ensure_equals(errors.back().getMessage(), "'foo' is required");
		ensure(!schema.validateValue("bar", Json::nullValue, errors));
		ensure_equals(errors.back().getMessage(), "'bar' is required");
	}

	TEST_METHOD(6) {
		set_test_name("Validating required keys with the right value types");
		Json::Value doc;

		schema.add("string", ConfigKit::STRING_TYPE, ConfigKit::REQUIRED);
		schema.add("integer", ConfigKit::INT_TYPE, ConfigKit::REQUIRED);
		schema.add("integer_unsigned", ConfigKit::UINT_TYPE, ConfigKit::REQUIRED);
		schema.add("float", ConfigKit::FLOAT_TYPE, ConfigKit::REQUIRED);
		schema.add("boolean", ConfigKit::BOOL_TYPE, ConfigKit::REQUIRED);
		schema.add("array", ConfigKit::ARRAY_TYPE, ConfigKit::REQUIRED);
		schema.add("string_array", ConfigKit::STRING_ARRAY_TYPE, ConfigKit::REQUIRED);
		schema.add("object", ConfigKit::OBJECT_TYPE, ConfigKit::REQUIRED);
		schema.add("any", ConfigKit::ANY_TYPE, ConfigKit::REQUIRED);
		schema.finalize();

		ensure(schema.validateValue("string", "string", errors));
		ensure(schema.validateValue("string", 123, errors));
		ensure(schema.validateValue("string", 123.45, errors));
		ensure(schema.validateValue("string", true, errors));
		ensure(schema.validateValue("integer", 123, errors));
		ensure(schema.validateValue("integer", 123.45, errors));
		ensure(schema.validateValue("integer", true, errors));
		ensure(schema.validateValue("integer", -123, errors));
		ensure(schema.validateValue("integer_unsigned", 123, errors));
		ensure(schema.validateValue("integer_unsigned", 123.45, errors));
		ensure(schema.validateValue("integer_unsigned", true, errors));
		ensure(schema.validateValue("float", 123, errors));
		ensure(schema.validateValue("float", 123.45, errors));
		ensure(schema.validateValue("boolean", true, errors));
		ensure(schema.validateValue("boolean", 123, errors));
		ensure(schema.validateValue("boolean", 123.45, errors));
		ensure(schema.validateValue("any", "string", errors));
		ensure(schema.validateValue("any", 123, errors));
		ensure(schema.validateValue("any", 123.45, errors));
		ensure(schema.validateValue("any", -123, errors));
		ensure(schema.validateValue("any", true, errors));
		ensure(schema.validateValue("any", Json::arrayValue, errors));
		ensure(schema.validateValue("any", Json::objectValue, errors));

		doc = Json::Value(Json::arrayValue);
		doc.append("string");
		doc.append(123);
		ensure(schema.validateValue("array", doc, errors));

		doc = Json::Value(Json::arrayValue);
		doc.append("string");
		doc.append("string");
		ensure(schema.validateValue("string_array", doc, errors));

		doc = Json::Value(Json::objectValue);
		doc["string"] = "string";
		doc["int"] = 123;
		ensure(schema.validateValue("object", doc, errors));
	}

	TEST_METHOD(7) {
		set_test_name("Validating required keys with the wrong value types");
		Json::Value doc;

		schema.add("integer", ConfigKit::INT_TYPE, ConfigKit::REQUIRED);
		schema.add("integer_unsigned", ConfigKit::UINT_TYPE, ConfigKit::REQUIRED);
		schema.add("float", ConfigKit::FLOAT_TYPE, ConfigKit::REQUIRED);
		schema.add("boolean", ConfigKit::BOOL_TYPE, ConfigKit::REQUIRED);
		schema.add("array", ConfigKit::ARRAY_TYPE, ConfigKit::REQUIRED);
		schema.add("string_array", ConfigKit::STRING_ARRAY_TYPE, ConfigKit::REQUIRED);
		schema.add("object", ConfigKit::OBJECT_TYPE, ConfigKit::REQUIRED);
		schema.finalize();

		ensure(!schema.validateValue("integer", "string", errors));
		ensure_equals(errors.back().getMessage(), "'integer' must be an integer");

		ensure(!schema.validateValue("integer_unsigned", -123, errors));
		ensure_equals(errors.back().getMessage(), "'integer_unsigned' must be greater than 0");

		ensure(!schema.validateValue("float", "string", errors));
		ensure_equals(errors.back().getMessage(), "'float' must be a number");

		ensure(!schema.validateValue("boolean", "string", errors));
		ensure_equals(errors.back().getMessage(), "'boolean' must be a boolean");

		ensure(!schema.validateValue("array", "string", errors));
		ensure_equals(errors.back().getMessage(), "'array' must be an array");

		ensure(!schema.validateValue("string_array", "string", errors));
		ensure_equals(errors.back().getMessage(), "'string_array' must be an array");

		doc = Json::Value(Json::arrayValue);
		doc.append(123);
		doc.append("string");
		ensure(!schema.validateValue("string_array", doc, errors));
		ensure_equals(errors.back().getMessage(), "'string_array' may only contain strings");

		ensure(!schema.validateValue("object", "string", errors));
		ensure_equals(errors.back().getMessage(), "'object' must be a JSON object");
	}

	TEST_METHOD(10) {
		set_test_name("Validating optional keys with null values");

		schema.add("foo", ConfigKit::STRING_TYPE, ConfigKit::OPTIONAL);
		schema.add("bar", ConfigKit::INT_TYPE, ConfigKit::OPTIONAL);
		schema.finalize();

		ensure(schema.validateValue("foo", Json::nullValue, errors));
		ensure(schema.validateValue("bar", Json::nullValue, errors));
	}

	TEST_METHOD(11) {
		set_test_name("Validating optional keys with the right value types");
		Json::Value doc;

		schema.add("string", ConfigKit::STRING_TYPE, ConfigKit::OPTIONAL);
		schema.add("integer", ConfigKit::INT_TYPE, ConfigKit::OPTIONAL);
		schema.add("integer_unsigned", ConfigKit::UINT_TYPE, ConfigKit::OPTIONAL);
		schema.add("float", ConfigKit::FLOAT_TYPE, ConfigKit::OPTIONAL);
		schema.add("boolean", ConfigKit::BOOL_TYPE, ConfigKit::OPTIONAL);
		schema.add("array", ConfigKit::ARRAY_TYPE, ConfigKit::OPTIONAL);
		schema.add("string_array", ConfigKit::STRING_ARRAY_TYPE, ConfigKit::OPTIONAL);
		schema.add("object", ConfigKit::OBJECT_TYPE, ConfigKit::OPTIONAL);
		schema.add("any", ConfigKit::ANY_TYPE, ConfigKit::OPTIONAL);
		schema.finalize();

		ensure(schema.validateValue("string", "string", errors));
		ensure(schema.validateValue("string", 123, errors));
		ensure(schema.validateValue("string", 123.45, errors));
		ensure(schema.validateValue("string", true, errors));
		ensure(schema.validateValue("integer", 123, errors));
		ensure(schema.validateValue("integer", 123.45, errors));
		ensure(schema.validateValue("integer", true, errors));
		ensure(schema.validateValue("integer", -123, errors));
		ensure(schema.validateValue("integer_unsigned", 123, errors));
		ensure(schema.validateValue("integer_unsigned", 123.45, errors));
		ensure(schema.validateValue("integer_unsigned", true, errors));
		ensure(schema.validateValue("float", 123, errors));
		ensure(schema.validateValue("float", 123.45, errors));
		ensure(schema.validateValue("boolean", true, errors));
		ensure(schema.validateValue("boolean", 123, errors));
		ensure(schema.validateValue("boolean", 123.45, errors));
		ensure(schema.validateValue("any", "string", errors));
		ensure(schema.validateValue("any", 123, errors));
		ensure(schema.validateValue("any", 123.45, errors));
		ensure(schema.validateValue("any", -123, errors));
		ensure(schema.validateValue("any", true, errors));
		ensure(schema.validateValue("any", Json::arrayValue, errors));
		ensure(schema.validateValue("any", Json::objectValue, errors));

		doc = Json::Value(Json::arrayValue);
		doc.append("string");
		doc.append(123);
		ensure(schema.validateValue("array", doc, errors));

		doc = Json::Value(Json::arrayValue);
		doc.append("string");
		doc.append("string");
		ensure(schema.validateValue("string_array", doc, errors));

		doc = Json::Value(Json::objectValue);
		doc["string"] = "string";
		doc["int"] = 123;
		ensure(schema.validateValue("object", doc, errors));
	}

	TEST_METHOD(12) {
		set_test_name("Validating optional keys with the wrong value types");
		Json::Value doc;

		schema.add("integer", ConfigKit::INT_TYPE, ConfigKit::OPTIONAL);
		schema.add("integer_unsigned", ConfigKit::UINT_TYPE, ConfigKit::OPTIONAL);
		schema.add("float", ConfigKit::FLOAT_TYPE, ConfigKit::OPTIONAL);
		schema.add("boolean", ConfigKit::BOOL_TYPE, ConfigKit::OPTIONAL);
		schema.add("array", ConfigKit::ARRAY_TYPE, ConfigKit::OPTIONAL);
		schema.add("string_array", ConfigKit::STRING_ARRAY_TYPE, ConfigKit::OPTIONAL);
		schema.add("object", ConfigKit::OBJECT_TYPE, ConfigKit::OPTIONAL);
		schema.finalize();

		ensure(!schema.validateValue("integer", "string", errors));
		ensure_equals(errors.back().getMessage(), "'integer' must be an integer");

		ensure(!schema.validateValue("integer_unsigned", -123, errors));
		ensure_equals(errors.back().getMessage(), "'integer_unsigned' must be greater than 0");

		ensure(!schema.validateValue("float", "string", errors));
		ensure_equals(errors.back().getMessage(), "'float' must be a number");

		ensure(!schema.validateValue("boolean", "string", errors));
		ensure_equals(errors.back().getMessage(), "'boolean' must be a boolean");

		ensure(!schema.validateValue("string_array", "string", errors));
		ensure_equals(errors.back().getMessage(), "'string_array' must be an array");

		doc = Json::Value(Json::arrayValue);
		doc.append(123);
		doc.append("string");
		ensure(!schema.validateValue("string_array", doc, errors));
		ensure_equals(errors.back().getMessage(), "'string_array' may only contain strings");

		ensure(!schema.validateValue("object", "string", errors));
		ensure_equals(errors.back().getMessage(), "'object' must be a JSON object");
	}


	/*********** Test inspect() ***********/

	TEST_METHOD(20) {
		set_test_name("It marks secret fields as such");

		schema.add("secret", ConfigKit::INT_TYPE, ConfigKit::REQUIRED | ConfigKit::SECRET);
		schema.finalize();

		Json::Value doc = schema.inspect();
		ensure(doc["secret"]["secret"].asBool());
	}
}

Youez - 2016 - github.com/yon3zu
LinuXploit