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.224.70.239
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/NestedSchemaTest.cpp
#include <TestSupport.h>
#include <algorithm>
#include <ConfigKit/ConfigKit.h>

using namespace Passenger;
using namespace std;

namespace tut {
	struct ConfigKit_NestedSchemaTest: public TestBase {
		ConfigKit::Schema schema;
		ConfigKit::Schema nestedSchema;
		Json::Value doc;
		vector<ConfigKit::Error> errors;

		static bool errorSorter(const ConfigKit::Error &a, const ConfigKit::Error &b) {
			return a.getMessage() < b.getMessage();
		}
	};

	DEFINE_TEST_GROUP(ConfigKit_NestedSchemaTest);

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

	TEST_METHOD(1) {
		set_test_name("Array type: updating a store with a valid document yields no errors");

		nestedSchema.add("name", ConfigKit::STRING_TYPE, ConfigKit::REQUIRED);
		nestedSchema.add("age", ConfigKit::INT_TYPE, ConfigKit::REQUIRED);
		nestedSchema.finalize();

		schema.add("people", ConfigKit::ARRAY_TYPE, nestedSchema, ConfigKit::OPTIONAL);
		schema.finalize();

		doc["people"][0]["name"] = "Joe";
		doc["people"][0]["age"] = 30;
		doc["people"][1]["name"] = "Jane";
		doc["people"][1]["age"] = 31;

		ConfigKit::Store store(schema);
		ensure(store.update(doc, errors));
	}

	TEST_METHOD(2) {
		set_test_name("Array type: updating a store with an invalid document yields errors");

		nestedSchema.add("name", ConfigKit::STRING_TYPE, ConfigKit::REQUIRED);
		nestedSchema.add("age", ConfigKit::INT_TYPE, ConfigKit::REQUIRED);
		nestedSchema.finalize();

		schema.add("people", ConfigKit::ARRAY_TYPE, nestedSchema, ConfigKit::OPTIONAL);
		schema.finalize();

		doc["people"][0]["age"] = 30;
		doc["people"][1]["name"] = "Jane";
		doc["people"][2] = "string";
		doc["people"][3] = 123;

		ConfigKit::Store store(schema);
		ensure("There are errors", !store.update(doc, errors));
		ensure_equals("There are 3 errors", errors.size(), 3u);
		ensure_equals("1st error message",
			errors[0].getMessage(),
			"'people' element 1 is invalid: 'name' is required");
		ensure_equals("2nd error message",
			errors[1].getMessage(),
			"'people' element 2 is invalid: 'age' is required");
		ensure_equals("3rd error message",
			errors[2].getMessage(),
			"'people' may only contain JSON objects");
	}

	TEST_METHOD(3) {
		set_test_name("Object type: updating a store with a valid document yields no errors");

		nestedSchema.add("name", ConfigKit::STRING_TYPE, ConfigKit::REQUIRED);
		nestedSchema.add("age", ConfigKit::INT_TYPE, ConfigKit::REQUIRED);
		nestedSchema.finalize();

		schema.add("people", ConfigKit::OBJECT_TYPE, nestedSchema, ConfigKit::OPTIONAL);
		schema.finalize();

		doc["people"]["first"]["name"] = "Joe";
		doc["people"]["first"]["age"] = 30;
		doc["people"]["second"]["name"] = "Jane";
		doc["people"]["second"]["age"] = 31;

		ConfigKit::Store store(schema);
		ensure(store.update(doc, errors));
	}

	TEST_METHOD(4) {
		set_test_name("Object type: updating a store with an invalid document yields errors");

		nestedSchema.add("name", ConfigKit::STRING_TYPE, ConfigKit::REQUIRED);
		nestedSchema.add("age", ConfigKit::INT_TYPE, ConfigKit::REQUIRED);
		nestedSchema.finalize();

		schema.add("people", ConfigKit::OBJECT_TYPE, nestedSchema, ConfigKit::OPTIONAL);
		schema.finalize();

		doc["people"]["first"]["age"] = 30;
		doc["people"]["second"]["name"] = "Jane";
		doc["people"]["third"] = "string";
		doc["people"]["fourth"] = 123;

		ConfigKit::Store store(schema);
		ensure("There are errors", !store.update(doc, errors));
		std::sort(errors.begin(), errors.end(), errorSorter);
		ensure_equals("There are 3 errors", errors.size(), 3u);
		ensure_equals("1st error message",
			errors[0].getMessage(),
			"'people' key 'first' is invalid: 'name' is required");
		ensure_equals("2nd error message",
			errors[1].getMessage(),
			"'people' key 'second' is invalid: 'age' is required");
		ensure_equals("3rd error message",
			errors[2].getMessage(),
			"'people' may only contain JSON objects");
	}


	/*********** Test type casting ***********/

	TEST_METHOD(10) {
		set_test_name("Array type: typecasting works");

		nestedSchema.add("name", ConfigKit::STRING_TYPE, ConfigKit::REQUIRED);
		nestedSchema.add("age", ConfigKit::INT_TYPE, ConfigKit::REQUIRED);
		nestedSchema.add("address", ConfigKit::STRING_TYPE, ConfigKit::OPTIONAL);
		nestedSchema.add("comments", ConfigKit::STRING_TYPE, ConfigKit::OPTIONAL, "none");
		nestedSchema.finalize();

		schema.add("people", ConfigKit::ARRAY_TYPE, nestedSchema, ConfigKit::OPTIONAL);
		schema.finalize();

		doc["people"][0]["name"] = 123;
		doc["people"][0]["age"] = 30;

		ConfigKit::Store store(schema);
		Json::Value preview = store.previewUpdate(doc, errors);
		store.update(doc, errors);
		ensure("There are no errors", errors.empty());
		Json::Value inspection = store.inspect();

		Json::Value expected;
		expected[0]["name"] = "123";
		expected[0]["age"] = 30;
		expected[0]["address"] = Json::nullValue;
		expected[0]["comments"] = Json::nullValue;
		ensure_equals("Preview user value",
			preview["people"]["user_value"], expected);
		ensure_equals("Updated user value",
			inspection["people"]["user_value"], expected);

		expected = Json::Value();
		expected[0]["name"] = "123";
		expected[0]["age"] = 30;
		expected[0]["address"] = Json::nullValue;
		expected[0]["comments"] = "none";
		ensure_equals("Preview effective value",
			preview["people"]["effective_value"], expected);
		ensure_equals("Updated effective value",
			inspection["people"]["effective_value"], expected);
	}

	TEST_METHOD(11) {
		set_test_name("Object type: typecasting works");

		nestedSchema.add("name", ConfigKit::STRING_TYPE, ConfigKit::REQUIRED);
		nestedSchema.add("age", ConfigKit::INT_TYPE, ConfigKit::REQUIRED);
		nestedSchema.add("address", ConfigKit::STRING_TYPE, ConfigKit::OPTIONAL);
		nestedSchema.add("comments", ConfigKit::STRING_TYPE, ConfigKit::OPTIONAL, "none");
		nestedSchema.finalize();

		schema.add("people", ConfigKit::OBJECT_TYPE, nestedSchema, ConfigKit::OPTIONAL);
		schema.finalize();

		doc["people"]["first"]["name"] = 123;
		doc["people"]["first"]["age"] = 30;

		ConfigKit::Store store(schema);
		Json::Value preview = store.previewUpdate(doc, errors);
		store.update(doc, errors);
		ensure("There are no errors", errors.empty());
		Json::Value inspection = store.inspect();

		Json::Value expected;
		expected["first"]["name"] = "123";
		expected["first"]["age"] = 30;
		expected["first"]["address"] = Json::nullValue;
		expected["first"]["comments"] = Json::nullValue;
		ensure_equals("Preview user value",
			preview["people"]["user_value"], expected);
		ensure_equals("Updated user value",
			inspection["people"]["user_value"], expected);

		expected = Json::Value();
		expected["first"]["name"] = "123";
		expected["first"]["age"] = 30;
		expected["first"]["address"] = Json::nullValue;
		expected["first"]["comments"] = "none";
		ensure_equals("Preview effective value",
			preview["people"]["effective_value"], expected);
		ensure_equals("Updated effective value",
			inspection["people"]["effective_value"], expected);
	}
}

Youez - 2016 - github.com/yon3zu
LinuXploit