62 lines
1.8 KiB
C++
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"));
|
|
}
|