Add named referencies implementation
[accounts-sso:vitalyrepins-signon.git] / tests / sso-mt-test / ssotestclient.h
1 /*
2  * This file is part of signon
3  *
4  * Copyright (C) 2009-2010 Nokia Corporation.
5  *
6  * Contact: Alberto Mardegan <alberto.mardegan@nokia.com>
7  *
8  * This library is free software; you can redistribute it and/or
9  * modify it under the terms of the GNU Lesser General Public License
10  * version 2.1 as published by the Free Software Foundation.
11  *
12  * This library is distributed in the hope that it will be useful, but
13  * WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15  * Lesser General Public License for more details.
16  *
17  * You should have received a copy of the GNU Lesser General Public
18  * License along with this library; if not, write to the Free Software
19  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
20  * 02110-1301 USA
21  */
22
23 #ifndef SSOTESTCLIENT_H
24 #define SSOTESTCLIENT_H
25
26 #include <QObject>
27
28 //#define SSOUI_TESTS_ENABLED
29
30 #include "testidentityresult.h"
31 #include "testauthserviceresult.h"
32
33 #include <SignOn/signonerror.h>
34
35 #ifdef SSO_CI_TESTMANAGEMENT
36     #define SSOTESTCLIENT_USES_AUTHSESSION
37 #endif
38
39 class SsoTestClient : public QObject
40 {
41     Q_OBJECT
42
43 public:
44     enum TestType
45     {
46         AllTests = 0,
47         QueryServices,
48         QueryIdentities,
49         IdentityStorage
50     };
51
52     Q_DECLARE_FLAGS(TestTypes, TestType)
53
54     SsoTestClient();
55
56 private:
57     /*
58      * Identity API related test cases
59      * */
60     void initIdentityTest();
61
62     void storeCredentials();
63     void queryAvailableMetods();
64     void queryInfo();
65
66     void addReference();
67     void removeReference();
68
69     void verifyUser();
70     void verifySecret();
71     void signOut();
72     void requestCredentialsUpdate();
73
74     void remove();
75     void sessionTest();
76     void storeCredentialsWithoutAuthMethodsTest();
77
78     void clearIdentityTest();
79
80     /*
81      * AuthService API related test cases
82      * */
83     void initAuthServiceTest();
84
85     void queryMethods();
86     void queryMechanisms();
87     void queryIdentities();
88     void clear();
89     void clearAuthServiceTest();
90
91 #ifdef SSOTESTCLIENT_USES_AUTHSESSION
92     void initAuthSessionTest();
93     void clearAuthSessionTest();
94
95     void queryMechanisms_existing_method();
96     void queryMechanisms_nonexisting_method();
97
98     void process_with_new_identity();
99     void process_with_existing_identity();
100     void process_with_nonexisting_type();
101     void process_with_nonexisting_method();
102     void process_many_times_after_auth();
103     void process_many_times_before_auth();
104
105     void cancel_immidiately();
106     void cancel_with_delay();
107     void cancel_without_process();
108
109     void handle_destroyed_signal();
110
111 #ifdef SSOUI_TESTS_ENABLED
112     void processUi_with_existing_identity();
113     void processUi_and_cancel();
114 #endif
115 #endif
116     /*
117      * Subtests
118      * */
119     bool testUpdatingCredentials(bool addMethods = true);
120     bool testAddingNewCredentials(bool addMethods = true);
121
122     /*
123      * Helpers
124      * */
125     //deprecated
126     static QString authErrCodeAsStr(const AuthService::ServiceError);
127     //deprecated
128     static QString idErrCodeAsStr(const Identity::IdentityError);
129     static QString errCodeAsStr(const Error::ErrorType);
130     bool storeCredentialsPrivate(const SignOn::IdentityInfo &info);
131
132 public Q_SLOTS:
133     void runAllTests();
134     void runAuthServiceTests();
135     void runIdentityTests();
136     void runAuthSessionTests();
137
138 Q_SIGNALS:
139     void done();
140
141 private:
142     int m_expectedNumberOfMethods;
143     QStringList m_expectedMechanisms;
144     int m_numberOfInsertedCredentials;
145
146     quint32 m_storedIdentityId;
147     IdentityInfo m_storedIdentityInfo;
148     QString m_methodToQueryMechanisms;
149
150     TestIdentityResult m_identityResult;
151     TestAuthServiceResult m_serviceResult;
152 };
153
154 Q_DECLARE_OPERATORS_FOR_FLAGS(SsoTestClient::TestTypes)
155
156 #endif // SSOTESTCLIENT_H