system-config/testinfra/test_static.py

157 lines
5.9 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 pytest
testinfra_hosts = ['static01.opendev.org']
def test_apache(host):
apache = host.service('apache2')
assert apache.is_running
def test_zuul_user(host):
user = host.user('zuul')
assert user.exists
authorized_keys = host.file('%s/.ssh/authorized_keys' %
user.home)
assert authorized_keys.exists
static_names = (
'static.opendev.org',
'static.openstack.org',
'files.openstack.org',
)
@pytest.mark.parametrize("name", static_names)
def test_static_opendev_org(host, name):
cmd = host.run('curl --insecure '
'--resolve %s:443:127.0.0.1 https://%s/' %
(name, name))
assert 'Index of /' in cmd.stdout
def test_governance_openstack_org(host):
cmd = host.run('curl --insecure '
'--resolve governance.openstack.org:443:127.0.0.1 '
'https://governance.openstack.org/')
assert 'OpenStack Governance' in cmd.stdout
def test_security_openstack_org(host):
cmd = host.run('curl --insecure '
'--resolve security.openstack.org:443:127.0.0.1 '
'https://security.openstack.org/')
assert 'OpenStack Security Project' in cmd.stdout
def test_tarballs_openstack_org(host):
cmd = host.run('curl --insecure '
'--resolve tarballs.openstack.org:443:127.0.0.1 '
'--resolve tarballs.opendev.org:443:127.0.0.1 '
'https://tarballs.openstack.org/nova/')
# The redirect page should send us to tarballs.opendev.org
assert '302 Found' in cmd.stdout
assert 'https://tarballs.opendev.org/openstack/nova/' in cmd.stdout
def test_tarballs_opendev_org(host):
cmd = host.run('curl --insecure '
'--resolve tarballs.opendev.org:443:127.0.0.1 '
'https://tarballs.opendev.org/openstack/nova/')
# An old file that should be present
assert 'nova-12.0.0.tar.gz' in cmd.stdout
def test_specs_openstack_org(host):
cmd = host.run('curl --insecure '
'--resolve specs.openstack.org:443:127.0.0.1 '
'https://specs.openstack.org/specs.opml')
assert 'OpenStack Specs Feeds' in cmd.stdout
def test_service_types_openstack_org(host):
cmd = host.run('curl --insecure '
'--resolve service-types.openstack.org:443:127.0.0.1 '
'https://service-types.openstack.org')
assert 'OpenStack Service Types Authority Data' in cmd.stdout
def test_releases_openstack_org(host):
cmd = host.run('curl --insecure '
'--resolve releases.openstack.org:443:127.0.0.1 '
'https://releases.openstack.org')
assert 'OpenStack Releases: OpenStack Releases' in cmd.stdout
def test_developer_openstack_org(host):
cmd = host.run('curl --insecure '
'--resolve developer.openstack.org:443:127.0.0.1 '
'https://developer.openstack.org')
assert 'OpenStack Docs: Application Development' in cmd.stdout
def test_docs_openstack_org(host):
cmd = host.run('curl --insecure '
'--resolve docs.openstack.org:443:127.0.0.1 '
'https://docs.openstack.org')
# links to the latest, make sure it redirected us
assert '301 Moved Permanently' in cmd.stdout
def test_docs_opendev_org(host):
cmd = host.run('curl --insecure '
'--resolve docs.opendev.org:443:127.0.0.1 '
'https://docs.opendev.org')
assert 'Index of /' in cmd.stdout
def test_docs_starlingx_io(host):
cmd = host.run('curl --insecure '
'--resolve docs.starlingx.io:443:127.0.0.1 '
'https://docs.starlingx.io')
# links to the latest, make sure it redirected us
assert 'StarlingX Docs: Welcome to the StarlingX Documentation' \
in cmd.stdout
zuul_names = (
'zuul-ci.org',
'www.zuul-ci.org',
'zuulci.org',
'www.zuulci.org',
)
@pytest.mark.parametrize("name", zuul_names)
def test_zuulci_org(host, name):
cmd = host.run('curl --insecure '
'--resolve %s:443:127.0.0.1 https://%s/ ' %
(name, name))
assert 'Zuul is an open source CI tool' in cmd.stdout
# test redirects as they are. leave http off the first one and we
# test both http/https.
git_redirects = (
('git.openstack.org/openstack/nova', 'https://opendev.org/openstack/nova'),
('git.openstack.org/cgit/openstack/tripleo-ansible/commit/?id=a6f9b1551baf5f680c05f4fa69ac926f8a0a3f81',
'https://opendev.org/openstack/tripleo-ansible/commit/a6f9b1551baf5f680c05f4fa69ac926f8a0a3f81'),
('git.starlingx.io/stx-tools', 'https://opendev.org/openstack/stx-tools'),
('git.zuul-ci.org/zuul', 'https://opendev.org/openstack-infra/zuul'),
('git.airshipit.org/airship-in-a-bottle', 'https://opendev.org/openstack/airship-in-a-bottle')
)
@pytest.mark.parametrize("url,target", git_redirects)
def test_git_redirects(host, url, target):
hostname = url.split('/')[0]
# http should redirect directly (not bounce via https)
cmd = host.run('curl --resolve %s:80:127.0.0.1 http://%s' % (hostname, url))
assert '302 Found' in cmd.stdout
assert target in cmd.stdout
cmd = host.run('curl --insecure --resolve %s:443:127.0.0.1 https://%s' %
(hostname, url))
assert '302 Found' in cmd.stdout
assert target in cmd.stdout