0d34d9678b
Trivial cleanup of some variable name copy-paste I overlooked, making the source code for the test clearer. Change-Id: I5a15e0733b3cf2ceb26f46a2f3d9a9f059d4f702
78 lines
3.1 KiB
Python
78 lines
3.1 KiB
Python
# Copyright 2018 Red Hat, Inc.
|
|
# Copyright 2021 Acme Gating, LLC
|
|
#
|
|
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
|
# not use this file except in compliance with the License. You may obtain
|
|
# a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
|
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
|
# License for the specific language governing permissions and limitations
|
|
# under the License.
|
|
|
|
|
|
import json
|
|
|
|
|
|
testinfra_hosts = ['keycloak99.opendev.org']
|
|
|
|
|
|
def test_rdbms_listening(host):
|
|
rdbms = host.socket("tcp://::1:3306")
|
|
assert rdbms.is_listening
|
|
|
|
def test_keycloak_listening(host):
|
|
keycloak = host.socket("tcp://::1:8080")
|
|
assert keycloak.is_listening
|
|
|
|
def test_rdbms_used(host):
|
|
# This checks that keycloak created tables in the database,
|
|
# ensuring our intended database backend is actually used.
|
|
|
|
# The nested quotes get really ornery, so try to defuse some
|
|
# of it with a raw string included via string formatting.
|
|
query = (r'select DESCRIPTION from keycloak.KEYCLOAK_ROLE '
|
|
'where NAME=\\"default-roles-master\\"')
|
|
cmd = host.run(
|
|
"""docker-compose -f /etc/keycloak-docker/docker-compose.yaml \
|
|
exec -T mariadb bash -c '/usr/bin/mysql -B -p$MARIADB_PASSWORD \
|
|
-ukeycloak -e "%s"'""" % query)
|
|
assert ("role_default-roles" in cmd.stdout)
|
|
|
|
def test_keycloak_openid_config(host):
|
|
# This tests the proxy config since the output is determined by
|
|
# the proxy headers and is not hard-coded configuration.
|
|
cmd = host.run('curl --insecure '
|
|
'--resolve keycloak.opendev.org:443:[::1] '
|
|
'https://keycloak.opendev.org/realms/master'
|
|
'/.well-known/openid-configuration')
|
|
assert ('"issuer":"https://keycloak.opendev.org/realms/master"'
|
|
in cmd.stdout)
|
|
|
|
def test_keycloak_admin_api(host):
|
|
# This tests the admin account and password can be used to
|
|
# acquire an OIDC bearer token and then use it to check the
|
|
# user count.
|
|
cmd = host.run('curl --insecure '
|
|
'--resolve keycloak.opendev.org:443:[::1] '
|
|
'-X POST '
|
|
'-H "Content-Type: application/x-www-form-urlencoded" '
|
|
'-d "username=admin" '
|
|
'-d "password=testpassword" '
|
|
'-d "grant_type=password" '
|
|
'-d "client_id=admin-cli" '
|
|
'https://keycloak.opendev.org'
|
|
'/realms/master/protocol/openid-connect/token')
|
|
token = json.loads(cmd.stdout)
|
|
assert token["token_type"] == "Bearer"
|
|
cmd = host.run('curl --insecure '
|
|
'--resolve keycloak.opendev.org:443:[::1] '
|
|
'-H "Authorization: Bearer %s" '
|
|
'-H "Content-Type: application/json" '
|
|
'https://keycloak.opendev.org'
|
|
'/admin/realms/master/users/count' % token["access_token"])
|
|
assert cmd.stdout == "1"
|