blob: c9721bc3c26f86dd0b37c0d4a8ab721bd28278dd (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
|
<!--
Copyright 2017 Lars Wirzenius
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
-->
# Scenario step implementations for locally managed Qvisqve
## Configure Qvisqve and its API client
IMPLEMENTS GIVEN an API client "(\S+)"
V['client_id'] = get_next_match()
IMPLEMENTS GIVEN API client has secret "(.+)"
V['client_secret'] = get_next_match()
IMPLEMENTS GIVEN API client has allowed scopes "(.+)"
scopes = get_next_match()
V['allowed_scopes'] = scopes.split()
IMPLEMENTS GIVEN a Qvisqve configuration for "(.+)"
V['iss'] = get_next_match()
IMPLEMENTS GIVEN Qvisqve configuration has a token lifetime of (\d+)
V['lifetime'] = int(get_next_match())
IMPLEMENTS GIVEN Qvisqve configuration has user account (\S+) with password (\S+)
username = get_next_match()
password = get_next_match()
V['users'] = { username: password }
IMPLEMENTS GIVEN Qvisqve configuration has application (\S+) with callback url (\S+) and secret (\S+) and allowed scopes (.+)
app = get_next_match()
callback = get_next_match()
secret = get_next_match()
scopestr = get_next_match()
# FIXME: store secret somewhere
V['applications'] = { app: callback }
V['client_id'] = app
V['client_secret'] = secret
V['allowed_scopes'] = scopestr.split()
## Authentication setup
IMPLEMENTS GIVEN an RSA key pair for token signing
argv = [
os.path.join(srcdir, 'generate-rsa-key'),
'token.key',
]
cliapp.runcmd(argv, stdout=None, stderr=None)
IMPLEMENTS GIVEN an access token for (\S+) with scopes (.+)
user = get_next_match()
scopes = get_next_match()
key = V['privkey']
issuer = V['iss']
audience = V['aud']
token = create_token(key, issuer, audience, scopes)
V['token'] = token
## Start Qvisqve
IMPLEMENTS GIVEN a running Qvisqve instance
start_qvisqve()
assert V['API_URL'] is not None
## Stop a Qvisqve we started
IMPLEMENTS FINALLY Qvisqve is stopped
stop_qvisqve()
|