system-config/testinfra/test_lists_o_o.py
Jeremy Stanley 087fbd7dd7 Re-expose our Mailman archives.yaml and robots.txt
In switching to all-HTTPS for Mailman sites, it was missed that only
the plain HTTP vhosts set a DocumentRoot of /var/www. This was only
used for publishing metadata so went unnoticed until now. Rather
than add a DocumentRoot to the new HTTPS vhosts, simply use Aliases
to map the specific files we want to expose, for improved clarity
and to make it less likely they'll be overlooked in configuration in
the future.

In order to make sure the archives.yaml file exists at server
creation, before its cronjob fires for the first time, add a direct
invocation of the script which builds it. Move all tasks related to
this after the tasks which create the mailing lists, so that the
generated file will include them. This also simplifies testing.

For the non-multihost configuration, only robots.txt is expected to
be present, so don't add an alias for archives.yaml there.

Also add regression tests to ensure we keep these working.

Change-Id: I6b54b0386f0ea9f888c1f23580ad8698314474b9
2022-09-22 20:10:20 +00:00

138 lines
6.6 KiB
Python

# 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.
testinfra_hosts = ['lists.openstack.org']
def test_mm_list_is_present(host):
cmd = host.run('HOST=lists.airshipit.org list_lists --bare')
assert 'airship-discuss' in cmd.stdout
cmd = host.run('HOST=lists.opendev.org list_lists --bare')
assert 'service-discuss' in cmd.stdout
cmd = host.run('HOST=lists.openinfra.dev list_lists --bare')
assert 'staff' in cmd.stdout
cmd = host.run('HOST=lists.openstack.org list_lists --bare')
assert 'openstack-discuss' in cmd.stdout
cmd = host.run('HOST=lists.starlingx.io list_lists --bare')
assert 'starlingx-discuss' in cmd.stdout
cmd = host.run('HOST=lists.zuul-ci.org list_lists --bare')
assert 'zuul-discuss' in cmd.stdout
def test_mm_list_site(host):
cmd = host.run('curl --insecure '
'--resolve lists.airshipit.org:443:127.0.0.1 '
'https://lists.airshipit.org/cgi-bin/mailman/listinfo')
assert '<TITLE>lists.airshipit.org Mailing Lists</TITLE>' in cmd.stdout
cmd = host.run('curl --insecure '
'--resolve lists.opendev.org:443:127.0.0.1 '
'https://lists.opendev.org/cgi-bin/mailman/listinfo')
assert '<TITLE>lists.opendev.org Mailing Lists</TITLE>' in cmd.stdout
cmd = host.run('curl --insecure '
'--resolve lists.openinfra.dev:443:127.0.0.1 '
'https://lists.openinfra.dev/cgi-bin/mailman/listinfo')
assert '<TITLE>lists.openinfra.dev Mailing Lists</TITLE>' in cmd.stdout
cmd = host.run('curl --insecure '
'--resolve lists.openstack.org:443:127.0.0.1 '
'https://lists.openstack.org/cgi-bin/mailman/listinfo')
assert '<TITLE>lists.openstack.org Mailing Lists</TITLE>' in cmd.stdout
cmd = host.run('curl --insecure '
'--resolve lists.starlingx.io:443:127.0.0.1 '
'https://lists.starlingx.io/cgi-bin/mailman/listinfo')
assert '<TITLE>lists.starlingx.io Mailing Lists</TITLE>' in cmd.stdout
cmd = host.run('curl --insecure '
'--resolve lists.zuul-ci.org:443:127.0.0.1 '
'https://lists.zuul-ci.org/cgi-bin/mailman/listinfo')
assert '<TITLE>lists.zuul-ci.org Mailing Lists</TITLE>' in cmd.stdout
def test_mm_list_site_redirect_http(host):
cmd = host.run('curl '
'--resolve lists.airshipit.org:80:127.0.0.1 '
'http://lists.airshipit.org/cgi-bin/mailman/listinfo')
assert ('The document has moved <a href="'
'https://lists.airshipit.org/cgi-bin/mailman/listinfo'
'">here</a>') in cmd.stdout
cmd = host.run('curl '
'--resolve lists.opendev.org:80:127.0.0.1 '
'http://lists.opendev.org/cgi-bin/mailman/listinfo')
assert ('The document has moved <a href="'
'https://lists.opendev.org/cgi-bin/mailman/listinfo'
'">here</a>') in cmd.stdout
cmd = host.run('curl '
'--resolve lists.openinfra.dev:80:127.0.0.1 '
'http://lists.openinfra.dev/cgi-bin/mailman/listinfo')
assert ('The document has moved <a href="'
'https://lists.openinfra.dev/cgi-bin/mailman/listinfo'
'">here</a>') in cmd.stdout
cmd = host.run('curl '
'--resolve lists.openstack.org:80:127.0.0.1 '
'http://lists.openstack.org/cgi-bin/mailman/listinfo')
assert ('The document has moved <a href="'
'https://lists.openstack.org/cgi-bin/mailman/listinfo'
'">here</a>') in cmd.stdout
cmd = host.run('curl '
'--resolve lists.starlingx.io:80:127.0.0.1 '
'http://lists.starlingx.io/cgi-bin/mailman/listinfo')
assert ('The document has moved <a href="'
'https://lists.starlingx.io/cgi-bin/mailman/listinfo'
'">here</a>') in cmd.stdout
cmd = host.run('curl '
'--resolve lists.zuul-ci.org:80:127.0.0.1 '
'http://lists.zuul-ci.org/cgi-bin/mailman/listinfo')
assert ('The document has moved <a href="'
'https://lists.zuul-ci.org/cgi-bin/mailman/listinfo'
'">here</a>') in cmd.stdout
def test_mm_list_site_redirect_listinfo(host):
cmd = host.run('curl --insecure '
'--resolve lists.openstack.org:443:127.0.0.1 '
'https://lists.openstack.org/cgi-bin/mailman/listinfo/staff')
assert ('The document has moved <a href="'
'https://lists.openinfra.dev/cgi-bin/mailman/listinfo/staff'
'">here</a>') in cmd.stdout
cmd = host.run('curl --insecure --location '
'--resolve lists.openinfra.dev:443:127.0.0.1 '
'--resolve lists.openstack.org:443:127.0.0.1 '
'https://lists.openstack.org/cgi-bin/mailman/listinfo/staff')
assert '<TITLE>Staff Info Page</TITLE>' in cmd.stdout
def test_mm_list_site_redirect_archives(host):
cmd = host.run('curl --insecure '
'--resolve lists.openstack.org:443:127.0.0.1 '
'https://lists.openstack.org/pipermail/staff/')
assert ('The document has moved <a href="'
'https://lists.openinfra.dev/pipermail/staff/'
'">here</a>') in cmd.stdout
cmd = host.run('curl --insecure --location '
'--resolve lists.openinfra.dev:443:127.0.0.1 '
'--resolve lists.openstack.org:443:127.0.0.1 '
'https://lists.openstack.org/pipermail/staff/')
assert '<h1>The Staff Archives </h1>' in cmd.stdout
def test_mm_list_site_static_files(host):
cmd = host.run('curl --insecure '
'--resolve lists.opendev.org:443:127.0.0.1 '
'https://lists.opendev.org/archives.yaml')
assert 'service-discuss' in cmd.stdout
cmd = host.run('curl --insecure '
'--resolve lists.opendev.org:443:127.0.0.1 '
'https://lists.opendev.org/robots.txt')
assert 'Disallow: /' in cmd.stdout
def test_domain_aliases(host):
domain_aliases = host.file('/etc/aliases.domain')
assert domain_aliases.exists
assert domain_aliases.contains('staff@lists.openstack.org: staff@lists.openinfra.dev')