X-Git-Url: https://git.stg.codes/stg.git/blobdiff_plain/0a3e4d188472ff4be7948d84a7d0be4c09169da2..f19bef8a44d3e9e02cc3d4069a3b0dd2169af094:/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 87497f9f..603f60df 100644 --- a/tests/test_reconnect_on_tariff_change.cpp +++ b/tests/test_reconnect_on_tariff_change.cpp @@ -8,6 +8,7 @@ #include "testadmin.h" #include "teststore.h" #include "testauth.h" +#include "testusers.h" class AFTER_CONNECTED_NOTIFIER : public PROPERTY_NOTIFIER_BASE, private NONCOPYABLE { @@ -26,6 +27,19 @@ private: size_t disconnects; }; +class TEST_SETTINGS_LOCAL : public TEST_SETTINGS { + public: + TEST_SETTINGS_LOCAL(bool _reconnectOnTariffChange) + : TEST_SETTINGS(), + reconnectOnTariffChange(_reconnectOnTariffChange) + {} + + bool GetReconnectOnTariffChange() const { return reconnectOnTariffChange; } + + private: + bool reconnectOnTariffChange; +}; + namespace tut { struct reconnect_on_tariff_change_data { @@ -36,18 +50,6 @@ namespace tut typedef tg::object testobject; - class TEST_SETTINGS_LOCAL : public TEST_SETTINGS { - public: - TEST_SETTINGS_LOCAL(bool _reconnectOnTariffChange) - : reconnectOnTariffChange(_reconnectOnTariffChange) - {} - - bool GetReconnectOnTariffChange() const { return reconnectOnTariffChange; } - - private: - bool reconnectOnTariffChange; - }; - template<> template<> void testobject::test<1>() @@ -59,7 +61,8 @@ namespace tut TEST_ADMIN admin; TEST_STORE store; TEST_AUTH auth; - USER_IMPL user(&settings, &store, &tariffs, &admin, NULL); + TEST_USERS users; + USER_IMPL user(&settings, &store, &tariffs, &admin, &users); AFTER_CONNECTED_NOTIFIER connectionNotifier; @@ -77,14 +80,81 @@ namespace tut ensure_equals("user.tariffName == NO_TARIFF_NAME", user.GetProperty().tariffName.ConstData(), NO_TARIFF_NAME); + user.Authorize(inet_strington("127.0.0.1"), 0, &auth); + user.Run(); + + ensure_equals("user.authorised_by = true", user.IsAuthorizedBy(&auth), true); + + ensure_equals("user.connected = true", user.GetConnected(), true); + ensure_equals("connects = 1", connectionNotifier.GetConnects(), 1); + ensure_equals("disconnects = 0", connectionNotifier.GetDisconnects(), 0); + tariffName = "test"; ensure_equals("user.tariffName == 'test'", user.GetProperty().tariffName.ConstData(), "test"); + ensure_equals("user.authorised_by = true", user.IsAuthorizedBy(&auth), true); + + ensure_equals("user.connected = true", user.GetConnected(), true); + ensure_equals("connects = 1", connectionNotifier.GetConnects(), 1); + ensure_equals("disconnects = 0", connectionNotifier.GetDisconnects(), 0); + } + + + template<> + template<> + void testobject::test<2>() + { + set_test_name("Check reconnect on tariff change"); + + TEST_SETTINGS_LOCAL settings(true); + + TEST_SETTINGS * s1 = &settings; + SETTINGS * s2 = &settings; + + ensure("settings.GetReconnectOnTariffChange() == true", settings.GetReconnectOnTariffChange()); + ensure("s1->GetReconnectOnTariffChange() == true", s1->GetReconnectOnTariffChange()); + ensure("s2->GetReconnectOnTariffChange() == true", s2->GetReconnectOnTariffChange()); + + TEST_TARIFFS tariffs; + TEST_ADMIN admin; + TEST_STORE store; + TEST_AUTH auth; + TEST_USERS users; + USER_IMPL user(&settings, &store, &tariffs, &admin, &users); + + AFTER_CONNECTED_NOTIFIER connectionNotifier; + + user.AddConnectedAfterNotifier(&connectionNotifier); + + USER_PROPERTY & cash(user.GetProperty().cash); + USER_PROPERTY & tariffName(user.GetProperty().tariffName); + USER_PROPERTY & ips(user.GetProperty().ips); + + ips = StrToIPS("*"); + + ensure_equals("user.connected = false", user.GetConnected(), false); + ensure_equals("connects = 0", connectionNotifier.GetConnects(), 0); + ensure_equals("disconnects = 0", connectionNotifier.GetDisconnects(), 0); + + ensure_equals("user.tariffName == NO_TARIFF_NAME", user.GetProperty().tariffName.ConstData(), NO_TARIFF_NAME); + user.Authorize(inet_strington("127.0.0.1"), 0, &auth); + user.Run(); + + ensure_equals("user.authorised_by = true", user.IsAuthorizedBy(&auth), true); ensure_equals("user.connected = true", user.GetConnected(), true); ensure_equals("connects = 1", connectionNotifier.GetConnects(), 1); ensure_equals("disconnects = 0", connectionNotifier.GetDisconnects(), 0); + + tariffName = "test"; + ensure_equals("user.tariffName == 'test'", user.GetProperty().tariffName.ConstData(), "test"); + + ensure_equals("user.authorised_by = true", user.IsAuthorizedBy(&auth), true); + + ensure_equals("user.connected = true", user.GetConnected(), true); + ensure_equals("connects = 2", connectionNotifier.GetConnects(), 2); + ensure_equals("disconnects = 1", connectionNotifier.GetDisconnects(), 1); } }