~ci-train-bot/unity/unity-ubuntu-artful-2740

3611.4.41 by Andrea Azzarone
Use dbus upstart and add tests for it.
1
// -*- Mode: C++; indent-tabs-mode: nil; tab-width: 2 -*-
2
/*
3
* Copyright (C) 2014 Canonical Ltd
4
*
5
* This program is free software: you can redistribute it and/or modify
6
* it under the terms of the GNU General Public License version 3 as
7
* published by the Free Software Foundation.
8
*
9
* This program is distributed in the hope that it will be useful,
10
* but WITHOUT ANY WARRANTY; without even the implied warranty of
11
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12
* GNU General Public License for more details.
13
*
14
* You should have received a copy of the GNU General Public License
15
* along with this program.  If not, see <http://www.gnu.org/licenses/>.
16
*
17
* Authored by: Andrea Azzarone <andrea.azzarone@canonical.com>
18
*/
19
20
#include <gtest/gtest.h>
21
using namespace testing;
22
23
#include "unity-shared/UpstartWrapper.h"
24
3566.5.451 by Andrea Azzarone
Fix failing tests in upstart wrapper.
25
#include <UnityCore/GLibDBusServer.h>
26
#include <UnityCore/Variant.h>
3611.4.41 by Andrea Azzarone
Use dbus upstart and add tests for it.
27
28
#include "test_utils.h"
29
30
namespace
31
{
32
3566.5.451 by Andrea Azzarone
Fix failing tests in upstart wrapper.
33
const std::string UPSTART =
34
R"(<node>
35
  <interface name="com.ubuntu.Upstart0_6">
36
    <method name="EmitEvent">
37
      <arg name="name" type="s" direction="in" />
38
      <arg name="env" type="as" direction="in" />
39
      <arg name="wait" type="b" direction="in" />
40
    </method>
41
42
    <signal name="EventEmitted">
43
      <arg name="name" type="s" />
44
      <arg name="env" type="as" />
45
    </signal>
46
  </interface>
47
</node>)";
48
49
struct MockUpstartWrapper : unity::UpstartWrapper {
50
  MockUpstartWrapper()
51
    : UpstartWrapper(UpstartWrapper::TestMode())
52
  {}
53
};
54
3611.4.41 by Andrea Azzarone
Use dbus upstart and add tests for it.
55
struct TestUpstartWrapper : public Test
56
{
57
  TestUpstartWrapper()
58
  {
3566.5.451 by Andrea Azzarone
Fix failing tests in upstart wrapper.
59
    upstart_server_ = std::make_shared<unity::glib::DBusServer>("com.canonical.Unity.Test.Upstart");
60
    upstart_server_->AddObjects(UPSTART, "/com/ubuntu/Upstart");
61
62
    Utils::WaitUntilMSec([this] { return upstart_server_->IsConnected(); });
3611.4.41 by Andrea Azzarone
Use dbus upstart and add tests for it.
63
  }
64
3566.5.451 by Andrea Azzarone
Fix failing tests in upstart wrapper.
65
  unity::glib::DBusServer::Ptr upstart_server_;
66
  MockUpstartWrapper upstart_wrapper_;
3611.4.41 by Andrea Azzarone
Use dbus upstart and add tests for it.
67
};
68
69
70
TEST_F(TestUpstartWrapper, Emit)
71
{
72
  bool event_emitted = false;
73
3566.5.451 by Andrea Azzarone
Fix failing tests in upstart wrapper.
74
  upstart_server_->GetObjects().front()->SetMethodsCallsHandler([&] (std::string const& method, GVariant* par) -> GVariant* {
75
    if (method == "EmitEvent")
76
    {
77
      event_emitted = true;
78
79
      std::string event_name = glib::Variant(g_variant_get_child_value(par, 0)).GetString();
80
      EXPECT_EQ("desktop-lock", event_name);
81
    }
82
83
    return nullptr;
3611.4.41 by Andrea Azzarone
Use dbus upstart and add tests for it.
84
  });
85
86
  upstart_wrapper_.Emit("desktop-lock");
3611.4.58 by Andrea Azzarone
Improve pam code.
87
  Utils::WaitUntil(event_emitted);
3611.4.41 by Andrea Azzarone
Use dbus upstart and add tests for it.
88
}
89
90
}