18
18
* Ted Gould <ted.gould@canonical.com>
21
#include "glib-fixture.h"
21
#include "timedated-fixture.h"
23
#include <datetime/dbus-shared.h>
24
23
#include <datetime/timezone-timedated.h>
29
25
using namespace unity::indicator::datetime;
32
struct Timedate1Fixture: public GlibFixture
36
typedef GlibFixture super;
40
GDBusConnection* m_bus {};
41
GTestDBus* m_test_bus {};
48
m_test_bus = g_test_dbus_new(G_TEST_DBUS_NONE);
49
g_test_dbus_up(m_test_bus);
50
const char * address = g_test_dbus_get_bus_address(m_test_bus);
51
g_setenv("DBUS_SYSTEM_BUS_ADDRESS", address, true);
52
g_setenv("DBUS_SESSION_BUS_ADDRESS", address, true);
53
g_debug("test_dbus's address is %s", address);
56
m_bus = g_bus_get_sync(G_BUS_TYPE_SESSION, nullptr, nullptr);
57
g_dbus_connection_set_exit_on_close(m_bus, FALSE);
60
void TearDown() override
63
bool bus_finished = false;
66
[](gpointer gbus_finished, GObject*){*static_cast<bool*>(gbus_finished) = true;},
69
g_clear_object(&m_bus);
70
EXPECT_TRUE(wait_for([&bus_finished](){return bus_finished;}));
73
g_clear_object(&m_test_bus);
78
void start_timedate1(const std::string& tzid)
80
// start dbusmock with the timedated template
81
auto json_parameters = g_strdup_printf("{\"Timezone\": \"%s\"}", tzid.c_str());
82
const gchar* child_argv[] = { "python3", "-m", "dbusmock", "--template", "timedated", "--parameters", json_parameters, nullptr };
83
GError* error = nullptr;
84
g_spawn_async(nullptr, (gchar**)child_argv, nullptr, G_SPAWN_SEARCH_PATH, nullptr, nullptr, nullptr, &error);
85
g_assert_no_error(error);
86
g_free(json_parameters);
88
// wait for it to appear on the bus
89
wait_for_name_owned(m_bus, Bus::Timedate1::BUSNAME);
92
bool wait_for_tzid(const std::string& tzid, Timezone& tz)
94
return wait_for([&tzid, &tz](){return tzid == tz.timezone.get();});
97
void set_timedate1_timezone(const std::string& tzid)
100
auto v = g_dbus_connection_call_sync(
102
Bus::Timedate1::BUSNAME,
103
Bus::Timedate1::ADDR,
104
Bus::Timedate1::IFACE,
105
Bus::Timedate1::Methods::SET_TIMEZONE,
106
g_variant_new("(sb)", tzid.c_str(), FALSE),
108
G_DBUS_CALL_FLAGS_NONE,
112
g_clear_pointer(&v, g_variant_unref);
113
g_assert_no_error(error);
117
#define EXPECT_TZID(expected_tzid, tmp) \
118
EXPECT_TRUE(wait_for_tzid(expected_tzid, tmp)) \
119
<< "expected " << expected_tzid \
120
<< " got " << tmp.timezone.get();
27
using TestTimedatedFixture = TimedatedFixture;
126
TEST_F(Timedate1Fixture, HelloWorld)
33
TEST_F(TestTimedatedFixture, HelloWorld)
131
38
* Test that the tzid is right if timedated isn't available
133
TEST_F(Timedate1Fixture, DefaultTimezone)
40
TEST_F(TestTimedatedFixture, DefaultTimezone)
135
42
const std::string expected_tzid{"Etc/Utc"};