X-Git-Url: https://git.stg.codes/stg.git/blobdiff_plain/f8258df50088e0835895c17d8cfee52a6397c51a..ee1709cd231588fe672d0bd2546ef69ee87ff88c:/tests/test_filter_params_log.cpp?ds=sidebyside diff --git a/tests/test_filter_params_log.cpp b/tests/test_filter_params_log.cpp index ab7a3097..c7c3bbbb 100644 --- a/tests/test_filter_params_log.cpp +++ b/tests/test_filter_params_log.cpp @@ -1,166 +1,204 @@ -#include "tut/tut.hpp" +#define BOOST_TEST_MODULE STGFilterParamsLog +#include "stg/admin.h" #include "stg/user_property.h" #include "user_impl.h" #include "testsettings.h" #include "testtariffs.h" -#include "testadmin.h" #include "teststore.h" #include "testauth.h" #include "testusers.h" #include "testservices.h" +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wold-style-cast" +#pragma GCC diagnostic ignored "-Wunused-parameter" +#pragma GCC diagnostic ignored "-Wsign-compare" +#pragma GCC diagnostic ignored "-Wparentheses" +#include +#pragma GCC diagnostic pop + +volatile time_t stgTime = 0; + namespace { -class TEST_STORE_LOCAL : public TEST_STORE, - private NONCOPYABLE { -public: - TEST_STORE_LOCAL() - : entries(0) - {} - - int WriteUserChgLog(const std::string & /*login*/, - const std::string & /*admLogin*/, - uint32_t /*admIP*/, - const std::string & /*paramName*/, - const std::string & /*oldValue*/, - const std::string & /*newValue*/, - const std::string & /*message*/) const { ++entries; return 0; } - - size_t GetEntries() const { return entries; } - -private: - mutable size_t entries; +class Store : public TestStore +{ + public: + Store() + : m_entries(0) + {} + + int WriteUserChgLog(const std::string& /*login*/, + const std::string& /*admLogin*/, + uint32_t /*admIP*/, + const std::string& /*paramName*/, + const std::string& /*oldValue*/, + const std::string& /*newValue*/, + const std::string& /*message*/) const override { ++m_entries; return 0; } + + size_t GetEntries() const { return m_entries; } + + private: + mutable size_t m_entries; }; -class TEST_SETTINGS_LOCAL : public TEST_SETTINGS { +class Settings : public TestSettings +{ public: - void addFilter(const std::string& field) { filter.push_back(field); } + void addFilter(const std::string& field) { m_filter.push_back(field); } - const std::vector& GetFilterParamsLog() const { return filter; } + const std::vector& GetFilterParamsLog() const { return m_filter; } private: - std::vector filter; + std::vector m_filter; }; } -namespace tut +BOOST_AUTO_TEST_SUITE(FilterParamsLog) + +BOOST_AUTO_TEST_CASE(NormalBehavior) { - struct filter_params_log_data { - }; + Settings settings; + settings.addFilter("*"); // Allow everything by default. + TestTariffs tariffs; + tariffs.ReadTariffs(); + STG::Admin admin(STG::Priv(0xFFFF), {}, {}); + Store store; + TestAuth auth; + TestUsers users; + TestServices services; + STG::UserImpl user(&settings, &store, &tariffs, &admin, &users, services); + + auto & address = user.GetProperties().address; + auto & note = user.GetProperties().note; + auto & group = user.GetProperties().group; + + address.Set("address", admin, "", store, ""); + note.Set("note", admin, "", store, ""); + group.Set("group", admin, "", store, ""); + + BOOST_CHECK_EQUAL(store.GetEntries(), 3); - typedef test_group tg; - tg filter_params_log_test_group("Filter params log tests group"); + note.Set("another note", admin, "", store, ""); - typedef tg::object testobject; + BOOST_CHECK_EQUAL(store.GetEntries(), 4); - template<> - template<> - void testobject::test<1>() - { - set_test_name("Check normal behaviour"); + address.Set("new address", admin, "", store, ""); - TEST_SETTINGS_LOCAL settings; - settings.addFilter("*"); // Allow everything by default. - TEST_TARIFFS tariffs; - TEST_ADMIN admin; - TEST_STORE_LOCAL store; - TEST_AUTH auth; - TEST_USERS users; - TEST_SERVICES services; - USER_IMPL user(&settings, &store, &tariffs, &admin, &users, services); + BOOST_CHECK_EQUAL(store.GetEntries(), 5); - USER_PROPERTY_LOGGED & address(user.GetProperty().address); - USER_PROPERTY_LOGGED & note(user.GetProperty().note); - USER_PROPERTY_LOGGED & group(user.GetProperty().group); + group.Set("administrative group", admin, "", store, ""); - address.Set("address", &admin, "", &store, ""); - note.Set("note", &admin, "", &store, ""); - group.Set("group", &admin, "", &store, ""); + BOOST_CHECK_EQUAL(store.GetEntries(), 6); +} - ensure_equals("entries = 3", store.GetEntries(), 3); +BOOST_AUTO_TEST_CASE(SingleFilterEntry) +{ + Settings settings; + settings.addFilter("address"); // Allow everything by default. + TestTariffs tariffs; + STG::Admin admin(STG::Priv(0xFFFF), {}, {}); + Store store; + TestAuth auth; + TestUsers users; + TestServices services; + STG::UserImpl user(&settings, &store, &tariffs, &admin, &users, services); - note.Set("another note", &admin, "", &store, ""); + auto & address = user.GetProperties().address; + auto & note = user.GetProperties().note; + auto & group = user.GetProperties().group; - ensure_equals("entries = 4", store.GetEntries(), 4); - } + address.Set("address", admin, "", store, ""); + note.Set("note", admin, "", store, ""); + group.Set("group", admin, "", store, ""); + BOOST_CHECK_EQUAL(store.GetEntries(), 1); - template<> - template<> - void testobject::test<2>() - { - set_test_name("Check single filter entry."); + note.Set("another note", admin, "", store, ""); - TEST_SETTINGS_LOCAL settings; - settings.addFilter("address"); // Allow everything by default. - TEST_TARIFFS tariffs; - TEST_ADMIN admin; - TEST_STORE_LOCAL store; - TEST_AUTH auth; - TEST_USERS users; - TEST_SERVICES services; - USER_IMPL user(&settings, &store, &tariffs, &admin, &users, services); + BOOST_CHECK_EQUAL(store.GetEntries(), 1); - USER_PROPERTY_LOGGED & address(user.GetProperty().address); - USER_PROPERTY_LOGGED & note(user.GetProperty().note); - USER_PROPERTY_LOGGED & group(user.GetProperty().group); + address.Set("new address", admin, "", store, ""); - address.Set("address", &admin, "", &store, ""); - note.Set("note", &admin, "", &store, ""); - group.Set("group", &admin, "", &store, ""); + BOOST_CHECK_EQUAL(store.GetEntries(), 2); - ensure_equals("entries = 1", store.GetEntries(), 1); + group.Set("administrative group", admin, "", store, ""); - note.Set("another note", &admin, "", &store, ""); + BOOST_CHECK_EQUAL(store.GetEntries(), 2); +} - ensure_equals("entries = 1", store.GetEntries(), 1); +BOOST_AUTO_TEST_CASE(MultipleFilterEntries) +{ + Settings settings; + settings.addFilter("address"); // Allow everything by default. + settings.addFilter("group"); // Allow everything by default. + TestTariffs tariffs; + STG::Admin admin(STG::Priv(0xFFFF), {}, {}); + Store store; + TestAuth auth; + TestUsers users; + TestServices services; + STG::UserImpl user(&settings, &store, &tariffs, &admin, &users, services); - address.Set("new address", &admin, "", &store, ""); + auto & address = user.GetProperties().address; + auto & note = user.GetProperties().note; + auto & group = user.GetProperties().group; - ensure_equals("entries = 2", store.GetEntries(), 2); - } + address.Set("address", admin, "", store, ""); + note.Set("note", admin, "", store, ""); + group.Set("group", admin, "", store, ""); - template<> - template<> - void testobject::test<3>() - { - set_test_name("Check multiple filter entries."); + BOOST_CHECK_EQUAL(store.GetEntries(), 2); - TEST_SETTINGS_LOCAL settings; - settings.addFilter("address"); // Allow everything by default. - settings.addFilter("group"); // Allow everything by default. - TEST_TARIFFS tariffs; - TEST_ADMIN admin; - TEST_STORE_LOCAL store; - TEST_AUTH auth; - TEST_USERS users; - TEST_SERVICES services; - USER_IMPL user(&settings, &store, &tariffs, &admin, &users, services); + note.Set("another note", admin, "", store, ""); - USER_PROPERTY_LOGGED & address(user.GetProperty().address); - USER_PROPERTY_LOGGED & note(user.GetProperty().note); - USER_PROPERTY_LOGGED & group(user.GetProperty().group); + BOOST_CHECK_EQUAL(store.GetEntries(), 2); - address.Set("address", &admin, "", &store, ""); - note.Set("note", &admin, "", &store, ""); - group.Set("group", &admin, "", &store, ""); + address.Set("new address", admin, "", store, ""); - ensure_equals("entries = 2", store.GetEntries(), 2); + BOOST_CHECK_EQUAL(store.GetEntries(), 3); - note.Set("another note", &admin, "", &store, ""); + group.Set("administrative group", admin, "", store, ""); - ensure_equals("entries = 2", store.GetEntries(), 2); + BOOST_CHECK_EQUAL(store.GetEntries(), 4); +} + +BOOST_AUTO_TEST_CASE(EmptyFilter) +{ + Settings settings; + TestTariffs tariffs; + STG::Admin admin(STG::Priv(0xFFFF), {}, {}); + Store store; + TestAuth auth; + TestUsers users; + TestServices services; + STG::UserImpl user(&settings, &store, &tariffs, &admin, &users, services); - address.Set("new address", &admin, "", &store, ""); + auto & address = user.GetProperties().address; + auto & note = user.GetProperties().note; + auto & group = user.GetProperties().group; - ensure_equals("entries = 3", store.GetEntries(), 3); + address.Set("address", admin, "", store, ""); + note.Set("note", admin, "", store, ""); + group.Set("group", admin, "", store, ""); - group.Set("administrative group", &admin, "", &store, ""); + BOOST_CHECK_EQUAL(store.GetEntries(), 0); - ensure_equals("entries = 4", store.GetEntries(), 4); - } + note.Set("another note", admin, "", store, ""); + + BOOST_CHECK_EQUAL(store.GetEntries(), 0); + + address.Set("new address", admin, "", store, ""); + + BOOST_CHECK_EQUAL(store.GetEntries(), 0); + + group.Set("administrative group", admin, "", store, ""); + + BOOST_CHECK_EQUAL(store.GetEntries(), 0); } + +BOOST_AUTO_TEST_SUITE_END()