X-Git-Url: https://git.stg.codes/stg.git/blobdiff_plain/a500fb72810060e52d87ad2c2e4691531f0bcc5a..ebd170a764ab9660adee464588cda1801c7986b4:/tests/test_reconnect_on_tariff_change.cpp diff --git a/tests/test_reconnect_on_tariff_change.cpp b/tests/test_reconnect_on_tariff_change.cpp index 60e36ffa..856c85d3 100644 --- a/tests/test_reconnect_on_tariff_change.cpp +++ b/tests/test_reconnect_on_tariff_change.cpp @@ -1,4 +1,4 @@ -#include "tut/tut.hpp" +#define BOOST_TEST_MODULE STGReconnectOnTariffChange #include "stg/admin.h" #include "stg/user_property.h" @@ -11,163 +11,155 @@ #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 AFTER_CONNECTED_NOTIFIER : public STG::PropertyNotifierBase { -public: - AFTER_CONNECTED_NOTIFIER() - : connects(0), - disconnects(0) - {} - void Notify(const bool & oldValue, const bool & newValue); +class ConnectCtr +{ + public: + ConnectCtr() + : m_connects(0), + m_disconnects(0) + {} + + void update(bool isConnect) + { + if (isConnect) + ++m_connects; + else + ++m_disconnects; + } - size_t GetConnects() const { return connects; } - size_t GetDisconnects() const { return disconnects; } + size_t connects() const { return m_connects; } + size_t disconnects() const { return m_disconnects; } -private: - size_t connects; - size_t disconnects; + private: + size_t m_connects; + size_t m_disconnects; }; -class TEST_SETTINGS_LOCAL : public TEST_SETTINGS { +class Settings : public TestSettings +{ public: - TEST_SETTINGS_LOCAL(bool _reconnectOnTariffChange) - : TEST_SETTINGS(), - reconnectOnTariffChange(_reconnectOnTariffChange) + Settings(bool reconnectOnTariffChange) + : m_reconnectOnTariffChange(reconnectOnTariffChange) {} - bool GetReconnectOnTariffChange() const { return reconnectOnTariffChange; } + bool GetReconnectOnTariffChange() const { return m_reconnectOnTariffChange; } private: - bool reconnectOnTariffChange; + bool m_reconnectOnTariffChange; }; } -namespace tut -{ - struct reconnect_on_tariff_change_data { - }; - - typedef test_group tg; - tg reconnect_on_tariff_change_test_group("Reconnect on tariff change tests group"); - - typedef tg::object testobject; +BOOST_AUTO_TEST_SUITE(ReconnectOnTariffChange) - template<> - template<> - void testobject::test<1>() - { - set_test_name("Check normal behaviour"); - - TEST_SETTINGS_LOCAL settings(false); - TEST_TARIFFS tariffs; - tariffs.ReadTariffs(); - STG::Admin admin(STG::Priv(0xFFFF), {}, {}); - TEST_STORE store; - TEST_AUTH auth; - TEST_USERS users; - TEST_SERVICES services; - STG::UserImpl user(&settings, &store, &tariffs, &admin, &users, services); - - AFTER_CONNECTED_NOTIFIER connectionNotifier; - - user.AddConnectedAfterNotifier(&connectionNotifier); - - STG::UserProperty & tariffName = user.GetProperties().tariffName; - STG::UserProperty & ips = user.GetProperties().ips; - - ips = STG::UserIPs::parse("*"); +BOOST_AUTO_TEST_CASE(NormalBehavior) +{ + Settings settings(false); + TestTariffs tariffs; + tariffs.ReadTariffs(); + STG::Admin admin(STG::Priv(0xFFFF), {}, {}); + TestStore store; + TestAuth auth; + TestUsers users; + TestServices services; + STG::UserImpl user(&settings, &store, &tariffs, &admin, &users, services); - ensure_equals("user.connected = false", user.GetConnected(), false); - ensure_equals("connects = 0", connectionNotifier.GetConnects(), static_cast(0)); - ensure_equals("disconnects = 0", connectionNotifier.GetDisconnects(), static_cast(0)); + ConnectCtr ctr; + STG::ScopedConnection conn = user.afterConnectedChange([&ctr](auto, auto newVal){ ctr.update(newVal); }); - ensure_equals("user.tariffName == NO_TARIFF_NAME", user.GetProperties().tariffName.ConstData(), NO_TARIFF_NAME); + STG::UserProperty & tariffName = user.GetProperties().tariffName; + STG::UserProperty & ips = user.GetProperties().ips; - user.Authorize(inet_strington("127.0.0.1"), 0, &auth); - user.Run(); + ips = STG::UserIPs::parse("*"); - ensure_equals("user.authorised_by = true", user.IsAuthorizedBy(&auth), true); + BOOST_CHECK_EQUAL(user.GetConnected(), false); + BOOST_CHECK_EQUAL(ctr.connects(), static_cast(0)); + BOOST_CHECK_EQUAL(ctr.disconnects(), static_cast(0)); - ensure_equals("user.connected = true", user.GetConnected(), true); - ensure_equals("connects = 1", connectionNotifier.GetConnects(), static_cast(1)); - ensure_equals("disconnects = 0", connectionNotifier.GetDisconnects(), static_cast(0)); + BOOST_CHECK_EQUAL(user.GetProperties().tariffName.ConstData(), NO_TARIFF_NAME); - tariffName = "test"; - ensure_equals("user.tariffName == 'test'", user.GetProperties().tariffName.ConstData(), "test"); + user.Authorize(inet_strington("127.0.0.1"), 0, &auth); + user.Run(); - ensure_equals("user.authorised_by = true", user.IsAuthorizedBy(&auth), true); + BOOST_CHECK_EQUAL(user.IsAuthorizedBy(&auth), true); - ensure_equals("user.connected = true", user.GetConnected(), true); - ensure_equals("connects = 1", connectionNotifier.GetConnects(), static_cast(1)); - ensure_equals("disconnects = 0", connectionNotifier.GetDisconnects(), static_cast(0)); - } + BOOST_CHECK_EQUAL(user.GetConnected(), true); + BOOST_CHECK_EQUAL(ctr.connects(), static_cast(1)); + BOOST_CHECK_EQUAL(ctr.disconnects(), static_cast(0)); + tariffName = "test"; + BOOST_CHECK_EQUAL(user.GetProperties().tariffName.ConstData(), "test"); - template<> - template<> - void testobject::test<2>() - { - set_test_name("Check reconnect on tariff change"); + BOOST_CHECK_EQUAL(user.IsAuthorizedBy(&auth), true); - TEST_SETTINGS_LOCAL settings(true); + BOOST_CHECK_EQUAL(user.GetConnected(), true); + BOOST_CHECK_EQUAL(ctr.connects(), static_cast(1)); + BOOST_CHECK_EQUAL(ctr.disconnects(), static_cast(0)); +} - TEST_SETTINGS * s1 = &settings; - STG::Settings * s2 = &settings; +BOOST_AUTO_TEST_CASE(Reconnect) +{ + Settings settings(true); - ensure("settings.GetReconnectOnTariffChange() == true", settings.GetReconnectOnTariffChange()); - ensure("s1->GetReconnectOnTariffChange() == true", s1->GetReconnectOnTariffChange()); - ensure("s2->GetReconnectOnTariffChange() == true", s2->GetReconnectOnTariffChange()); + TestSettings * s1 = &settings; + STG::Settings * s2 = &settings; - TEST_TARIFFS tariffs; - STG::Admin admin(STG::Priv(0xFFFF), {}, {}); - TEST_STORE store; - TEST_AUTH auth; - TEST_USERS users; - TEST_SERVICES services; - STG::UserImpl user(&settings, &store, &tariffs, &admin, &users, services); + BOOST_CHECK(settings.GetReconnectOnTariffChange()); + BOOST_CHECK(s1->GetReconnectOnTariffChange()); + BOOST_CHECK(s2->GetReconnectOnTariffChange()); - AFTER_CONNECTED_NOTIFIER connectionNotifier; + TestTariffs tariffs; + STG::Admin admin(STG::Priv(0xFFFF), {}, {}); + TestStore store; + TestAuth auth; + TestUsers users; + TestServices services; + STG::UserImpl user(&settings, &store, &tariffs, &admin, &users, services); - user.AddConnectedAfterNotifier(&connectionNotifier); + ConnectCtr ctr; + STG::ScopedConnection conn = user.afterConnectedChange([&ctr](auto, auto newVal){ ctr.update(newVal); }); - STG::UserProperty & tariffName = user.GetProperties().tariffName; - STG::UserProperty & ips = user.GetProperties().ips; + STG::UserProperty & tariffName = user.GetProperties().tariffName; + STG::UserProperty & ips = user.GetProperties().ips; - ips = STG::UserIPs::parse("*"); + ips = STG::UserIPs::parse("*"); - ensure_equals("user.connected = false", user.GetConnected(), false); - ensure_equals("connects = 0", connectionNotifier.GetConnects(), static_cast(0)); - ensure_equals("disconnects = 0", connectionNotifier.GetDisconnects(), static_cast(0)); + BOOST_CHECK_EQUAL(user.GetConnected(), false); + BOOST_CHECK_EQUAL(ctr.connects(), static_cast(0)); + BOOST_CHECK_EQUAL(ctr.disconnects(), static_cast(0)); - ensure_equals("user.tariffName == NO_TARIFF_NAME", user.GetProperties().tariffName.ConstData(), NO_TARIFF_NAME); + BOOST_CHECK_EQUAL(user.GetProperties().tariffName.ConstData(), NO_TARIFF_NAME); - user.Authorize(inet_strington("127.0.0.1"), 0, &auth); - user.Run(); + user.Authorize(inet_strington("127.0.0.1"), 0, &auth); + user.Run(); - ensure_equals("user.authorised_by = true", user.IsAuthorizedBy(&auth), true); + BOOST_CHECK_EQUAL(user.IsAuthorizedBy(&auth), true); - ensure_equals("user.connected = true", user.GetConnected(), true); - ensure_equals("connects = 1", connectionNotifier.GetConnects(), static_cast(1)); - ensure_equals("disconnects = 0", connectionNotifier.GetDisconnects(), static_cast(0)); + BOOST_CHECK_EQUAL(user.GetConnected(), true); + BOOST_CHECK_EQUAL(ctr.connects(), static_cast(1)); + BOOST_CHECK_EQUAL(ctr.disconnects(), static_cast(0)); - tariffName = "test"; - ensure_equals("user.tariffName == 'test'", user.GetProperties().tariffName.ConstData(), "test"); + tariffName = "test"; + BOOST_CHECK_EQUAL(user.GetProperties().tariffName.ConstData(), "test"); - ensure_equals("user.authorised_by = true", user.IsAuthorizedBy(&auth), true); + BOOST_CHECK_EQUAL(user.IsAuthorizedBy(&auth), true); - ensure_equals("user.connected = true", user.GetConnected(), true); - ensure_equals("connects = 2", connectionNotifier.GetConnects(), static_cast(2)); - ensure_equals("disconnects = 1", connectionNotifier.GetDisconnects(), static_cast(1)); - } + BOOST_CHECK_EQUAL(user.GetConnected(), true); + BOOST_CHECK_EQUAL(ctr.connects(), static_cast(2)); + BOOST_CHECK_EQUAL(ctr.disconnects(), static_cast(1)); } -void AFTER_CONNECTED_NOTIFIER::Notify(const bool & oldValue, const bool & newValue) -{ - if (!oldValue && newValue) - ++connects; - if (oldValue && !newValue) - ++disconnects; -} +BOOST_AUTO_TEST_SUITE_END()