1 /*
2 SPDX-FileCopyrightText: 2012 Dario Freddi <drf@kde.org>
3
4 SPDX-License-Identifier: LGPL-2.1-or-later
5 */
6
7 #include "TestBackend.h"
8
9 #include <QDebug>
10
11 namespace KAuth
12 {
TestBackend()13 TestBackend::TestBackend()
14 : AuthBackend()
15 {
16 qDebug() << "Test backend loaded";
17 setCapabilities(AuthorizeFromHelperCapability | CheckActionExistenceCapability);
18 }
19
setNewCapabilities(AuthBackend::Capabilities capabilities)20 void TestBackend::setNewCapabilities(AuthBackend::Capabilities capabilities)
21 {
22 qDebug() << "Capabilities changing";
23 setCapabilities(capabilities);
24 }
25
authorizeAction(const QString & action)26 Action::AuthStatus TestBackend::authorizeAction(const QString &action)
27 {
28 if (action == QLatin1String("doomed.to.fail")) {
29 return Action::DeniedStatus;
30 }
31
32 return Action::AuthorizedStatus;
33 }
34
setupAction(const QString & action)35 void TestBackend::setupAction(const QString &action)
36 {
37 if (action == QLatin1String("doomed.to.fail")) {
38 m_actionStatuses.insert(action, Action::DeniedStatus);
39 } else if (action == QLatin1String("requires.auth") || action == QLatin1String("generates.error")) {
40 m_actionStatuses.insert(action, Action::AuthRequiredStatus);
41 } else if (action == QLatin1String("always.authorized")) {
42 m_actionStatuses.insert(action, Action::AuthorizedStatus);
43 } else if (action.startsWith(QLatin1String("org.kde.kf5auth.autotest"))) {
44 m_actionStatuses.insert(action, Action::AuthRequiredStatus);
45 }
46 }
47
actionStatus(const QString & action)48 Action::AuthStatus TestBackend::actionStatus(const QString &action)
49 {
50 if (m_actionStatuses.contains(action)) {
51 return m_actionStatuses.value(action);
52 }
53
54 return Action::InvalidStatus;
55 }
56
callerID() const57 QByteArray TestBackend::callerID() const
58 {
59 return QByteArray("a random caller Id");
60 }
61
isCallerAuthorized(const QString & action,const QByteArray & callerId,const QVariantMap & details)62 bool TestBackend::isCallerAuthorized(const QString &action, const QByteArray &callerId, const QVariantMap &details)
63 {
64 Q_UNUSED(details);
65
66 if (action == QLatin1String("doomed.to.fail")) {
67 return false;
68 } else if (action == QLatin1String("requires.auth")) {
69 m_actionStatuses.insert(action, Action::AuthorizedStatus);
70 Q_EMIT actionStatusChanged(action, Action::AuthorizedStatus);
71 return true;
72 } else if (action == QLatin1String("generates.error")) {
73 m_actionStatuses.insert(action, Action::ErrorStatus);
74 Q_EMIT actionStatusChanged(action, Action::ErrorStatus);
75 return false;
76 } else if (action == QLatin1String("always.authorized")) {
77 return true;
78 } else if (action.startsWith(QLatin1String("org.kde.kf5auth.autotest"))) {
79 qDebug() << "Caller ID:" << callerId;
80 if (callerId == callerID()) {
81 m_actionStatuses.insert(action, Action::AuthorizedStatus);
82 Q_EMIT actionStatusChanged(action, Action::AuthorizedStatus);
83 return true;
84 } else {
85 m_actionStatuses.insert(action, Action::DeniedStatus);
86 Q_EMIT actionStatusChanged(action, Action::DeniedStatus);
87 }
88 }
89
90 return false;
91 }
92
actionExists(const QString & action)93 bool TestBackend::actionExists(const QString &action)
94 {
95 qDebug() << "Checking if action " << action << "exists";
96 /* clang-format off */
97 if (action != QLatin1String("doomed.to.fail")
98 && action != QLatin1String("requires.auth")
99 && action != QLatin1String("generates.error")
100 && action != QLatin1String("always.authorized")
101 && action != QLatin1String("/safinvalid124%$&")
102 && !action.startsWith(QLatin1String("org.kde.kf5auth.autotest"))) { /* clang-format on */
103 return false;
104 }
105
106 return true;
107 }
108
109 } // namespace Auth
110