f223a237a2
Change-Id: I922af92e523407b7324f020732fad52b98f027e1
100 lines
3.8 KiB
Python
100 lines
3.8 KiB
Python
# Copyright 2019 Red Hat, Inc.
|
|
#
|
|
# 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 = ['mirror01.openafs.provider.opendev.org',
|
|
'mirror02.openafs.provider.opendev.org',
|
|
'mirror03.openafs.provider.opendev.org']
|
|
|
|
def test_apache(host):
|
|
apache = host.service('apache2')
|
|
assert apache.is_running
|
|
|
|
def _run_cmd(host, port, scheme='https', url='', curl_opt=''):
|
|
hostname = host.backend.get_hostname()
|
|
return f'curl {curl_opt} --resolve {hostname}:{port}:127.0.0.1 {scheme}://{hostname}:{port}{url}'
|
|
|
|
def test_base_mirror(host):
|
|
# base mirror
|
|
cmd = host.run(_run_cmd(host, 443))
|
|
assert '<a href="debian/">' in cmd.stdout
|
|
|
|
# mirrors still respond on http
|
|
cmd = host.run(_run_cmd(host, 80, scheme='http'))
|
|
assert '<a href="debian/">' in cmd.stdout
|
|
|
|
def test_proxy_mirror(host):
|
|
# pypi proxy mirror
|
|
cmd = host.run(_run_cmd(host, 4443, url='/pypi/simple/setuptools'))
|
|
assert 'setuptools' in cmd.stdout
|
|
|
|
cmd = host.run(_run_cmd(host, 8080, scheme='http', url='/pypi/simple/setuptools'))
|
|
assert 'setuptools' in cmd.stdout
|
|
|
|
def test_dockerv2_mirror(host):
|
|
# Docker v2 mirror
|
|
|
|
# NOTE(ianw) 2022-07 : this gets back a 401 .json; maybe something
|
|
# better we could do?
|
|
cmd = host.run(_run_cmd(host, 4445, url='/v2/'))
|
|
assert 'UNAUTHORIZED' in cmd.stdout
|
|
|
|
cmd = host.run(_run_cmd(host, 8082, scheme='http', url='/v2/'))
|
|
assert 'UNAUTHORIZED' in cmd.stdout
|
|
|
|
def test_quay_mirror(host):
|
|
# QuayRegistryMirror
|
|
cmd = host.run(_run_cmd(host, 4447, url='/'))
|
|
assert 'Quay' in cmd.stdout
|
|
|
|
cmd = host.run(_run_cmd(host, 8084, scheme='http', url='/'))
|
|
assert 'Quay' in cmd.stdout
|
|
|
|
# TODO test RHRegistryMirror
|
|
|
|
def test_galaxy_mirror(host):
|
|
cmd = host.run(_run_cmd(host, 4448, url='/'))
|
|
assert 'Galaxy NG' in cmd.stdout
|
|
|
|
cmd = host.run(_run_cmd(host, 8085, scheme='http', url='/'))
|
|
assert 'Galaxy NG' in cmd.stdout
|
|
|
|
hostname = host.backend.get_hostname()
|
|
# Ensure API properly answers
|
|
cmd = host.run(_run_cmd(host, 4448, url='/api/'))
|
|
assert 'galaxy_ng_version' in cmd.stdout
|
|
|
|
# TODO(clarkb) fix the testing of galaxy api proxying.
|
|
# Galaxy completely redid their apis in v3 and the tests below are
|
|
# no longer valid.
|
|
## Ensure we get data out of a specific collection
|
|
#cmd = host.run(_run_cmd(host, 4448, url='/api/v2/collections/community/general/'))
|
|
#assert 'https://{}:4448/api/'.format(hostname) in cmd.stdout
|
|
#answer = json.loads(cmd.stdout)
|
|
#version_uri = answer['latest_version']['href'].replace('https://{}:4448'.format(hostname), '')
|
|
## Ensure we get a correct download URI
|
|
#cmd = host.run(_run_cmd(host, 4448, url=version_uri))
|
|
#assert 'https://{}:4448/api/'.format(hostname) in cmd.stdout
|
|
#answer = json.loads(cmd.stdout)
|
|
#download_uri = answer['download_url']
|
|
#assert download_uri.startswith('https://{}:4448/download/community-general'.format(hostname))
|
|
## Download a file and check we get an actual archive
|
|
#download_uri = download_uri.replace('https://{}:4448'.format(hostname), '')
|
|
#host.run(_run_cmd(host, 4448, url=download_uri, curl_opt='-sL --output /tmp/output.tar.gz'))
|
|
#check_file = host.run('file /tmp/output.tar.gz')
|
|
#assert 'gzip compressed data' in check_file.stdout
|