co-maps/libs/platform/platform_tests/meta_config_tests.cpp
2025-11-22 13:58:55 +01:00

62 lines
1.8 KiB
C++

#include "testing/testing.hpp"
#include "platform/servers_list.hpp"
#include "cppjansson/cppjansson.hpp"
using namespace downloader;
UNIT_TEST(MetaConfig_JSONParser_OldFormat)
{
std::string oldFormatJson = R"(["http://url1", "http://url2", "http://url3"])";
auto result = ParseMetaConfig(oldFormatJson);
TEST(result.has_value(), ());
TEST_EQUAL(result->m_serversList.size(), 3, ());
TEST_EQUAL(result->m_serversList[0], "http://url1", ());
TEST_EQUAL(result->m_serversList[1], "http://url2", ());
TEST_EQUAL(result->m_serversList[2], "http://url3", ());
TEST(result->m_settings.empty(), ());
}
UNIT_TEST(MetaConfig_JSONParser_InvalidJSON)
{
std::string invalidJson = R"({"servers": ["http://url1", "http://url2")";
auto result = ParseMetaConfig(invalidJson);
TEST(!result.has_value(), ());
}
UNIT_TEST(MetaConfig_JSONParser_EmptyServersList)
{
std::string emptyServersJson = R"({"servers": []})";
auto result = ParseMetaConfig(emptyServersJson);
TEST(!result.has_value(), ());
}
UNIT_TEST(MetaConfig_JSONParser_NewFormatWithoutProducts)
{
std::string newFormatJson = R"({
"servers": ["http://url1", "http://url2"],
"settings": {
"DonateUrl": "value1",
"key2": "value2"
}
})";
auto result = ParseMetaConfig(newFormatJson);
TEST(result.has_value(), ());
TEST_EQUAL(result->m_serversList.size(), 2, ());
TEST_EQUAL(result->m_serversList[0], "http://url1", ());
TEST_EQUAL(result->m_serversList[1], "http://url2", ());
TEST_EQUAL(result->m_settings.size(), 1, ());
TEST_EQUAL(result->m_settings["DonateUrl"], "value1", ());
}
UNIT_TEST(MetaConfig_JSONParser_MissingServersKey)
{
std::string missingServersJson = R"({
"settings": {
"key1": "value1"
}
})";
auto result = ParseMetaConfig(missingServersJson);
TEST(!result.has_value(), ("JSON shouldn't be parsed without 'servers' key"));
}