~unity-team/libqtdbusmock/trunk

« back to all changes in this revision

Viewing changes to templates/org.freedesktop.login1.py

  • Committer: Bileto Bot
  • Date: 2017-03-16 10:32:00 UTC
  • mfrom: (47.1.5 trunk)
  • Revision ID: ci-train-bot@canonical.com-20170316103200-rpwd8q43apgcknh0
* Add hostname1 and login1 templates to new binary package
  libqtdbusmock1-common.
* Search /usr/share/libqtdbusmock/templates for templates.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
'''Login1 mock template
 
2
'''
 
3
 
 
4
# This program is free software; you can redistribute it and/or modify it under
 
5
# the terms of the GNU Lesser General Public License as published by the Free
 
6
# Software Foundation; either version 3 of the License, or (at your option) any
 
7
# later version.  See http://www.gnu.org/copyleft/lgpl.html for the full text
 
8
# of the license.
 
9
 
 
10
__author__ = 'Pete Woods'
 
11
__email__ = 'pete.woods@canonical.com'
 
12
__copyright__ = '(c) 2017 Canonical Ltd.'
 
13
__license__ = 'LGPL 3+'
 
14
 
 
15
import dbus
 
16
import uuid
 
17
import binascii
 
18
 
 
19
from dbusmock import MOCK_IFACE
 
20
import dbusmock
 
21
 
 
22
 
 
23
BUS_NAME = 'org.freedesktop.login1'
 
24
MAIN_IFACE = 'org.freedesktop.login1.Manager'
 
25
MAIN_OBJ = '/org/freedesktop/login1'
 
26
SYSTEM_BUS = True
 
27
 
 
28
SEAT_IFACE = 'org.freedesktop.login1.Seat'
 
29
SEAT_PATH = '/org/freedesktop/login1/seat/'
 
30
 
 
31
def load(mock, parameters):
 
32
    mock.seats = {}
 
33
    
 
34
    add_seat(mock, parameters.get('DefaultSeat', {}), True)
 
35
    
 
36
    mock.list_seats = list_seats
 
37
    mock.get_seat = get_seat
 
38
    
 
39
    mock.AddProperties(MAIN_IFACE, {
 
40
        'EnableWallMessages': parameters.get('EnableWallMessages', False),
 
41
        'WallMessage': parameters.get('WallMessage', ''),
 
42
        'NAutoVTs': parameters.get('NAutoVTs', dbus.UInt32(6)),
 
43
        'KillOnlyUsers': parameters.get('KillOnlyUsers', dbus.Array([], signature='s')),
 
44
        'KillExcludeUsers': parameters.get('KillExcludeUsers', dbus.Array(['root'], signature='s')),
 
45
        'KillUserProcesses': parameters.get('KillUserProcesses', False),
 
46
        'RebootToFirmwareSetup': parameters.get('RebootToFirmwareSetup', False),
 
47
        'IdleHint': parameters.get('IdleHint', False),
 
48
        'IdleSinceHint': parameters.get('IdleSinceHint', dbus.UInt64(1489580452083866)),
 
49
        'IdleSinceHintMonotonic': parameters.get('IdleSinceHintMonotonic', dbus.UInt64(8134597164)),
 
50
        'BlockInhibited': parameters.get('BlockInhibited', 'handle-power-key:handle-suspend-key:handle-hibernate-key:handle-lid-switch'),
 
51
        'DelayInhibited': parameters.get('DelayInhibited', 'sleep'),
 
52
        'InhibitDelayMaxUSec': parameters.get('InhibitDelayMaxUSec', dbus.UInt64(5000000)),
 
53
        'HandlePowerKey': parameters.get('HandlePowerKey', 'poweroff'),
 
54
        'HandleSuspendKey': parameters.get('HandleSuspendKey', 'suspend'),
 
55
        'HandleHibernateKey': parameters.get('HandleHibernateKey', 'hibernate'),
 
56
        'HandleLidSwitch': parameters.get('HandleLidSwitch', 'suspend'),
 
57
        'HandleLidSwitchDocked': parameters.get('HandleLidSwitchDocked', 'ignore'),
 
58
        'HoldoffTimeoutUSec': parameters.get('HoldoffTimeoutUSec', dbus.UInt64(30000000)),
 
59
        'IdleAction': parameters.get('IdleAction', 'ignore'),
 
60
        'IdleActionUSec': parameters.get('IdleActionUSec', dbus.UInt64(1800000000)),
 
61
        'PreparingForShutdown': parameters.get('PreparingForShutdown', False),
 
62
        'PreparingForSleep': parameters.get('PreparingForSleep', False),
 
63
        'ScheduledShutdown': parameters.get('ScheduledShutdown', dbus.Struct(('', 0), signature='st')),
 
64
        'Docked': parameters.get('Docked', False),
 
65
    })
 
66
 
 
67
    mock.AddMethods(MAIN_IFACE, [
 
68
        ('GetSession', 's', 'o', "ret = dbus.ObjectPath('/')"),
 
69
        ('GetSessionByPID', 'u', 'o', "ret = dbus.ObjectPath('/')"),
 
70
        ('GetUser', 'u', 'o', "ret = dbus.ObjectPath('/')"),
 
71
        ('GetUserByPID', 'u', 'o', "ret = dbus.ObjectPath('/')"),
 
72
        ('GetSeat', 's', 'o', "ret = self.get_seat(self, args[0])"),
 
73
 
 
74
        ('ListSessions', '', 'a(susso)', ""),
 
75
        ('ListUsers', '', 'a(uso)', ""),
 
76
        ('ListSeats', '', 'a(so)', "ret = self.list_seats(self)"),
 
77
        ('ListInhibitors', '', 'a(ssssuu)', ""),
 
78
 
 
79
        ('CreateSession', 'uusssssussbssa(sv)', 'soshusub', ""),
 
80
        ('ReleaseSession', 's', '', ""),
 
81
        ('ActivateSession', 's', '', ""),
 
82
        ('ActivateSessionOnSeat', 'ss', '', ""),
 
83
        ('LockSession', 's', '', ""),
 
84
        ('UnlockSession', 's', '', ""),
 
85
        ('LockSessions', '', '', ""),
 
86
        ('UnlockSessions', '', '', ""),
 
87
        ('KillSession', 'ssi', '', ""),
 
88
        ('KillUser', 'ui', '', ""),
 
89
        ('TerminateSession', 's', '', ""),
 
90
        ('TerminateUser', 'u', '', ""),
 
91
        ('TerminateSeat', 's', '', ""),
 
92
        ('SetUserLinger', 'ubb', '', ""),
 
93
        ('AttachDevice', 'ssb', '', ""),
 
94
        ('FlushDevices', 'b', '', ""),
 
95
        ('PowerOff', 'b', '', ""),
 
96
        ('Reboot', 'b', '', ""),
 
97
        ('Suspend', 'b', '', ""),
 
98
        ('Hibernate', 'b', '', ""),
 
99
        ('HybridSleep', 'b', '', ""),
 
100
        ('CanPowerOff', '', 's', "ret = ''"),
 
101
        ('CanReboot', '', 's', "ret = ''"),
 
102
        ('CanSuspend', '', 's', "ret = ''"),
 
103
        ('CanHibernate', '', 's', "ret = ''"),
 
104
        ('CanHybridSleep', '', 's', "ret = ''"),
 
105
        ('ScheduleShutdown', 'st', '', ""),
 
106
        ('CancelScheduledShutdown', '', 'b', "ret = False"),
 
107
        ('Inhibit', 'ssss', 'h', "ret = ?"),
 
108
        ('CanRebootToFirmwareSetup', '', 's', "ret = ''"),
 
109
        ('SetRebootToFirmwareSetup', 'b', '', ""),
 
110
        ('SetWallMessage', 'sb', '', ""),
 
111
    ])
 
112
 
 
113
def add_seat(self, properties, is_self):
 
114
    # find a new name
 
115
    count = 0
 
116
    while True:
 
117
        id = 'seat%d' % count
 
118
        if id not in self.seats:
 
119
            break
 
120
        count += 1
 
121
 
 
122
    path = dbus.ObjectPath(SEAT_PATH + id)
 
123
 
 
124
    seat_props = {
 
125
        'Id': id,
 
126
        'ActiveSession': properties.get('ActiveSession', dbus.Struct(('c2', '/org/freedesktop/login1/session/c2'), signature='so')),
 
127
        'CanMultiSession': properties.get('CanMultiSession', True),
 
128
        'CanTTY': properties.get('CanTTY', True),
 
129
        'CanGraphical': properties.get('CanGraphical', True),
 
130
        'Sessions': properties.get('Sessions', dbus.Array([('c2', '/org/freedesktop/login1/session/c2')], signature='(so)')),
 
131
        'IdleHint': properties.get('IdleHint', False),
 
132
        'IdleSinceHint': properties.get('IdleSinceHint', dbus.UInt64(1489590854604069)),
 
133
        'IdleSinceHintMonotonic': properties.get('IdleSinceHintMonotonic', dbus.UInt64(18537117367)),
 
134
    }
 
135
 
 
136
    seat_methods = [
 
137
        ('Terminate', '', '', ""),
 
138
        ('ActivateSession', 's', '', ""),
 
139
        ('SwitchTo', 'u', '', ""),
 
140
        ('SwitchToNext', '', '', ""),
 
141
        ('SwitchToPrevious', '', '', ""),
 
142
    ]
 
143
 
 
144
    self.seats[id] = self.AddObject(path,
 
145
                   SEAT_IFACE,
 
146
                   seat_props,
 
147
                   seat_methods)
 
148
 
 
149
    if is_self:
 
150
        self_path = dbus.ObjectPath(SEAT_PATH + 'self')
 
151
        try:
 
152
            self.RemoveObject(self_path)
 
153
        except dbus.exceptions.DBusException:
 
154
            pass
 
155
        self.AddObject(self_path,
 
156
                       SEAT_IFACE,
 
157
                       seat_props,
 
158
                       seat_methods)
 
159
 
 
160
    return path
 
161
 
 
162
def get_seat(self, id):
 
163
    if id in self.seats:
 
164
        return SEAT_PATH + id
 
165
    raise dbus.exceptions.DBusException()
 
166
 
 
167
def list_seats(self):
 
168
    result = dbus.Array([], signature='(so)')
 
169
    for id in self.seats:
 
170
        result.append((id, SEAT_PATH + id))
 
171
    return result