Imported Upstream version 0.0.1
[profile/ivi/signonui-efl.git] / tests / run-unit-tests
1 #!/usr/bin/python
2 import dbus, os, unittest, sys;
3 import traceback;
4
5 bad_params_dict    = dbus.Dictionary({'QueryErrorCode': dbus.UInt32(3)}, signature='sv')
6 canceled_dict      = dbus.Dictionary({'QueryErrorCode': dbus.UInt32(4)}, signature='sv')
7 not_available_dict = dbus.Dictionary({'QueryErrorCode': dbus.UInt32(5)}, signature='sv')
8
9 class TestSequenceFunctions(unittest.TestCase):
10     @classmethod
11     def setUpClass(cls):
12         bus = dbus.SessionBus()
13         try:
14             proxy = bus.get_object('com.google.code.AccountsSSO.gSingleSignOn.UI',
15                                    '/')
16             sso = dbus.Interface(proxy, dbus_interface='com.google.code.AccountsSSO.gSingleSignOn.UI')
17
18             address = sso.getBusAddress();
19
20             print 'server address:' , "'" , str(address) , "'" ;
21             bus_a = dbus.bus.Connection(str(address));
22
23             proxy = bus_a.get_object (object_path='/Dialog');
24
25             cls.sso = dbus.Interface(proxy, dbus_interface='com.google.code.AccountsSSO.gSingleSignOn.UI.Dialog');
26         except :
27             print 'EXCEPTION: ' , sys.exc_info(), traceback.print_exc()
28             raise unittest.SkipTest('could not get a D-Bus proxy for SignonUI')
29
30     def test_no_request_id(self):
31         params = dbus.Dictionary({'QueryPassword':True}, signature='sv')
32         self.assertEqual(self.sso.queryDialog(params), bad_params_dict)
33
34     def test_no_query(self):
35         params = dbus.Dictionary({'RequestId':'test_id'}, signature='sv')
36         self.assertEqual(self.sso.queryDialog(params), bad_params_dict)
37
38     def test_open_url_with_other_query(self):
39         params = dbus.Dictionary({'RequestId':'test_id',
40                                   'QueryPassword':True,
41                                   'OpenUrl':'http://first.invalid/',
42                                   'FinalUrl':'http://second.invalid/'}, signature='sv')
43         self.assertEqual(self.sso.queryDialog(params), bad_params_dict)
44
45     def test_query_password(self):
46         params = dbus.Dictionary({'RequestId':'test_id',
47                                   'QueryPassword':True,
48                                   'TestReplyValues':'Secret:12345'}, signature='sv')
49         expected = dbus.Dictionary({'QueryErrorCode': dbus.UInt32(0),
50                                     'Secret': '12345'}, signature='sv')
51         self.assertEqual(self.sso.queryDialog(params), expected)
52
53     def test_query_remember_password(self):
54         params = dbus.Dictionary({'RequestId':'test_id',
55                                   'QueryPassword':True,
56                                   'RememberPassword': False,
57                                   'TestReplyValues':'Secret:12345,RememberPassword:True'}, signature='sv')
58         expected = dbus.Dictionary({'QueryErrorCode': dbus.UInt32(0),
59                                     'Secret': '12345',
60                                     'RememberPassword': True}, signature='sv')
61         self.assertEqual(self.sso.queryDialog(params), expected)
62
63     def test_query_username_and_password(self):
64         params = dbus.Dictionary({'RequestId':'test_id',
65                                   'QueryPassword':True,
66                                   'QueryUserName':True,
67                                   'TestReplyValues':'Secret:12345,UserName:uname'}, signature='sv')
68         expected = dbus.Dictionary({'QueryErrorCode': dbus.UInt32(0),
69                                     'UserName': 'uname',
70                                     'Secret': '12345'}, signature='sv')
71         self.assertEqual(self.sso.queryDialog(params), expected)
72
73     def test_query_password_and_confirm (self):
74         params = dbus.Dictionary({'RequestId':'test_id',
75                                   'QueryPassword':True,
76                                   'Confirm':True,
77                                   'Secret':'12345',
78                                   'TestReplyValues':'Secret:12345,SecretConfirm:67890'}, signature='sv')
79         expected = dbus.Dictionary({'QueryErrorCode': dbus.UInt32(0),
80                                     'SecretConfirm': '67890',
81                                     'Secret': '12345'}, signature='sv')
82         self.assertEqual(self.sso.queryDialog(params), expected)
83
84     def test_query_captcha(self):
85         params = dbus.Dictionary({'RequestId':'test_id',
86                                   'CaptchaUrl':'file:///usr/share/locale/l10n/us/flag.png',
87                                   'TestReplyValues':'CaptchaResponse:qwerty'}, signature='sv')
88         expected = dbus.Dictionary({'QueryErrorCode': dbus.UInt32(0),
89                                     'CaptchaResponse': 'qwerty'}, signature='sv')
90         self.assertEqual(self.sso.queryDialog(params), expected)
91
92     def test_query_oauth(self):
93         # ugly, this test actually opens the dialog for a moment
94         params = dbus.Dictionary({'RequestId':'test_id',
95                                   'OpenUrl':'file:///?param=val&param2=val2',
96                                   'FinalUrl':'file:///'}, signature='sv')
97         expected = dbus.Dictionary({'QueryErrorCode': dbus.UInt32(0),
98                                     'UrlResponse': 'file:///?param=val&param2=val2'}, signature='sv')
99         retval = self.sso.queryDialog(params)
100         # Elementary might not be compiled with Web, have to accept "not available"
101         self.assertTrue(retval == expected or retval == not_available_dict)
102
103     def test_cancel(self):
104         params = dbus.Dictionary({'RequestId':'test_id',
105                                   'QueryPassword':True,
106                                   'TestReplyValues':'QueryErrorCode:4'}, signature='sv')
107         self.assertEqual(self.sso.queryDialog(params), canceled_dict)
108
109 if __name__ == '__main__':
110     unittest.main();
111