~ci-train-bot/unity/unity-ubuntu-yakkety-2192

« back to all changes in this revision

Viewing changes to tests/test_upstart_wrapper.cpp

  • Committer: CI bot
  • Author(s): Andrea Azzarone
  • Date: 2014-03-11 18:36:57 UTC
  • mfrom: (3566.5.457 unity)
  • Revision ID: ps-jenkins@lists.canonical.com-20140311183657-b3haqqvvr2ctp9u9
Implement the lockscreen in Unity that looks like unity-greeter. Also allow to fallback to lightdm + greeter (tty switching) in case you need more pam power. Fixes: 878836, 1266464, 1282798

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
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
 
 
25
#include <UnityCore/GLibDBusServer.h>
 
26
#include <UnityCore/Variant.h>
 
27
 
 
28
#include "test_utils.h"
 
29
 
 
30
namespace
 
31
{
 
32
 
 
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
 
 
55
struct TestUpstartWrapper : public Test
 
56
{
 
57
  TestUpstartWrapper()
 
58
  {
 
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(); });
 
63
  }
 
64
 
 
65
  unity::glib::DBusServer::Ptr upstart_server_;
 
66
  MockUpstartWrapper upstart_wrapper_;
 
67
};
 
68
 
 
69
 
 
70
TEST_F(TestUpstartWrapper, Emit)
 
71
{
 
72
  bool event_emitted = false;
 
73
 
 
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;
 
84
  });
 
85
 
 
86
  upstart_wrapper_.Emit("desktop-lock");
 
87
  Utils::WaitUntil(event_emitted);
 
88
}
 
89
 
 
90
}