Skip to content
This repository has been archived by the owner on Aug 20, 2018. It is now read-only.

Commit

Permalink
Merge pull request #71 from m8ttyB/clean_up
Browse files Browse the repository at this point in the history
Replace unittestzero with native asserts
  • Loading branch information
Matt Brandt committed Sep 24, 2015
2 parents 76e6af9 + 876984a commit f23fbe4
Show file tree
Hide file tree
Showing 3 changed files with 67 additions and 175 deletions.
11 changes: 2 additions & 9 deletions requirements.txt
@@ -1,10 +1,3 @@
# This pulls in all the libraries needed to run Selenium tests
# on Mozilla WebQA projects

py==1.4.14
pytest==2.3.5
pytest-xdist==1.8
unittestzero
requests==2.4.3
pytest==2.7.2
requests==2.7.0
beautifulsoup4==4.0.4

6 changes: 3 additions & 3 deletions tests/base.py
Expand Up @@ -6,7 +6,6 @@

import requests
from bs4 import BeautifulSoup
from unittestzero import Assert


class Base:
Expand All @@ -26,15 +25,16 @@ def _head_request(self, url, user_agent=_user_agent_firefox,
except requests.RequestException as e:
request_url = self._build_request_url(url, params)

Assert.fail('Failing URL: %s.\nError message: %s' % (request_url, e))
raise AssertionError('Failing URL: %s.\nError message: %s' % (request_url, e))

if r.status_code == 302 and r.headers['Location']:
try:
request_url = r.headers['Location']
r = requests.head(request_url, headers=headers, verify=False,
timeout=15, allow_redirects=True)
except requests.RequestException as e:
Assert.fail('Failing URL: %s.\nError message: %s' % (request_url, e))
raise AssertionError('Failing URL: %s.\nError message: %s' % (request_url, e))

return r

def _parse_response(self, content):
Expand Down
225 changes: 62 additions & 163 deletions tests/test_redirects.py
Expand Up @@ -6,12 +6,12 @@
import requests
from urlparse import urlparse
from urllib import urlencode
from unittestzero import Assert

from base import Base


class TestRedirects(Base):

def test_that_checks_redirect_using_incorrect_query_values(self, base_url):
param = {
'product': 'firefox-31.0',
Expand All @@ -20,48 +20,23 @@ def test_that_checks_redirect_using_incorrect_query_values(self, base_url):
}
response = self._head_request(base_url, params=param)

Assert.equal(
response.status_code,
requests.codes.not_found,
self.response_info_failure_message(
base_url,
param,
response
)
)
assert (requests.codes.not_found == response.status_code,
self.response_info_failure_message(base_url, param, response))

parsed_url = urlparse(response.url)
Assert.equal(
parsed_url.scheme,
'http',
'Failed by redirected to incorrect scheme %s. \n %s' %
(parsed_url.scheme, self.response_info_failure_message(
base_url,
param,
response))
)
Assert.equal(
parsed_url.netloc,
urlparse(base_url).netloc,
self.response_info_failure_message(
base_url,
param,
response)
)
Assert.equal(
parsed_url.query,
urlencode(param),
self.response_info_failure_message(
base_url,
param,
response)
)
Assert.not_equal(
self.get_x_backend_server(response),
'Unknown',
'Failed, x-backend-server was not in the response object. %s' %
(self.response_info_failure_message(base_url, param, response))
)

assert ('http' == parsed_url.scheme, 'Failed to redirect to the correct scheme. %s' %
self.response_info_failure_message(base_url, param, response))

assert (urlparse(base_url).netloc == parsed_url.netloc,
self.response_info_failure_message(base_url, param, response))

assert (urlencode(param) == parsed_url.query,
self.response_info_failure_message(base_url, param, response))

assert ('Unknown' != self.get_x_backend_server(response),
'Failed, x-backend-server was not in the response object. %s' %
self.response_info_failure_message(base_url, param, response))

def test_that_checks_redirect_using_locales_and_os(
self,
Expand All @@ -83,35 +58,17 @@ def test_that_checks_redirect_using_locales_and_os(

parsed_url = urlparse(response.url)

Assert.equal(
response.status_code,
requests.codes.ok,
'Redirect failed with HTTP status %s. \n %s' %
(response.status_code, self.response_info_failure_message(
base_url,
param,
response))
)
Assert.equal(
parsed_url.scheme,
'http',
'Failed by redirected to incorrect scheme %s. \n %s' %
(parsed_url.scheme, self.response_info_failure_message(
base_url,
param,
response))
)
Assert.not_equal(
self.get_x_backend_server(response),
'Unknown',
'Failed, x-backend-server was not in the response object %s' %
(self.response_info_failure_message(base_url, param, response))
)

# xfail as mentioned in https://github.com/mozilla/bouncer-tests/issues/46
@pytest.mark.xfail(
"config.getvalue('base_url') == 'http://download.allizom.org'"
)
assert (requests.codes.ok == response.status_code,
'Redirect failed with HTTP status. %s' %
self.response_info_failure_message(base_url, param, response))

assert ('http' == parsed_url.scheme, 'Failed to redirect to the correct scheme. %s' %
self.response_info_failure_message(base_url, param, response))

assert ('Unknown' != self.get_x_backend_server(response),
'Failed, x-backend-server was not in the response object %s' %
self.response_info_failure_message(base_url, param, response))

def test_stub_installer_redirect_for_en_us_and_win(self, base_url, product):
param = {
'product': product,
Expand All @@ -123,39 +80,21 @@ def test_stub_installer_redirect_for_en_us_and_win(self, base_url, product):

parsed_url = urlparse(response.url)

Assert.equal(
response.status_code,
requests.codes.ok,
'Redirect failed with HTTP status %s. \n %s' %
(response.status_code, self.response_info_failure_message(
base_url,
param,
response))
)
Assert.equal(
parsed_url.scheme,
'https',
'Failed by redirected to incorrect scheme %s. \n %s' %
(parsed_url.scheme, self.response_info_failure_message(
base_url,
param,
response))
)
Assert.equal(
parsed_url.netloc,
'download-installer.cdn.mozilla.net',
'Failed by redirected to incorrect host %s. \n %s' %
(parsed_url.netloc, self.response_info_failure_message(
base_url,
param,
response))
)
Assert.not_equal(
self.get_x_backend_server(response),
'Unknown',
'Failed, x-backend-server was not in the response object %s' %
(self.response_info_failure_message(base_url, param, response))
)
assert (requests.codes.ok == response.status_code,
'Redirect failed with HTTP status. %s' %
self.response_info_failure_message(base_url, param, response))

assert ('https' == parsed_url.scheme,
'Failed to redirect to the correct scheme. %s' %
self.response_info_failure_message(base_url, param, response))

assert ('download-installer.cdn.mozilla.net' == parsed_url.netloc,
'Failed by redirected to incorrect host. %s' %
self.response_info_failure_message(base_url, param, response))

assert ('Unknown' != self.get_x_backend_server(response),
'Failed, x-backend-server was not in the response object %s' %
self.response_info_failure_message(base_url, param, response))

@pytest.mark.parametrize('product_alias', [
{'product_name': 'firefox-beta-latest', 'lang': 'en-US'},
Expand All @@ -165,23 +104,6 @@ def test_stub_installer_redirect_for_en_us_and_win(self, base_url, product):
{'product_name': 'firefox-nightly-latest', 'lang': 'en-US'},
])
def test_redirect_for_firefox_aliases(self, base_url, product_alias):

if product_alias == {
'product_name': 'firefox-latest',
'lang': 'en-US'
} and base_url == 'http://download.allizom.org':
pytest.xfail(
reason='https://bugzilla.mozilla.org/show_bug.cgi?id=813968 - '
'Alias returns 404')

if product_alias == {
'product_name': 'firefox-nightly-latest',
'lang': 'en-US'
} and base_url == 'http://download.allizom.org':
pytest.xfail(
reason='https://github.com/mozilla/bouncer-tests/issues/46'
'Alias returns 404')

param = {
'product': product_alias['product_name'],
'os': 'win',
Expand All @@ -199,57 +121,34 @@ def test_redirect_for_firefox_aliases(self, base_url, product_alias):
url_scheme = 'http'
if product_alias['product_name'] == 'firefox-beta-stub':
url_scheme = 'https'
Assert.equal(
response.status_code,
requests.codes.ok,
'Redirect failed with HTTP status %s. \n %s' %
(response.status_code, self.response_info_failure_message(
base_url,
param,
response))
)
Assert.equal(
parsed_url.scheme,
url_scheme,
'Failed, redirected to incorrect scheme %s. \n %s' %
(parsed_url.scheme, self.response_info_failure_message(
base_url,
param,
response))
)
Assert.true(
parsed_url.netloc in ['download.cdn.mozilla.net',
'edgecastcdn.net',
'download-installer.cdn.mozilla.net',
'cloudfront.net',
'ftp.mozilla.org'],
'Failed, redirected to unknown host %s. \n %s' %
(parsed_url.netloc, self.response_info_failure_message(
base_url,
param,
response))
)
Assert.not_equal(
self.get_x_backend_server(response),
'Unknown',
'Failed, x-backend-server was not in the response object %s' %
(self.response_info_failure_message(base_url, param, response))
)

assert (requests.codes.ok == response.status_code,
'Redirect failed with HTTP status. %s' %
self.response_info_failure_message(base_url, param, response))

assert (url_scheme == parsed_url.scheme,
'Failed to redirect to the correct scheme. %s' %
self.response_info_failure_message(base_url, param, response))

assert (parsed_url.netloc in ['download.cdn.mozilla.net', 'edgecastcdn.net',
'download-installer.cdn.mozilla.net', 'cloudfront.net', 'ftp.mozilla.org'],
'Failed, redirected to unknown host. %s' %
self.response_info_failure_message(base_url, param, response))

assert ('Unknown' != self.get_x_backend_server(response),
'Failed, x-backend-server was not in the response object %s' %
self.response_info_failure_message(base_url, param, response))

if (
product_alias['product_name'] != 'firefox-nightly-latest' and
product_alias['product_name'] != 'firefox-aurora-latest' and
product_alias['product_name'] != 'firefox-latest-euballot'
):
Assert.contains('/%s/' % 'win32', parsed_url.path,
'\n %s' % self.response_info(response))
assert '/win32/' in parsed_url.path, self.response_info(response)

def test_robotstxt_exists(self, base_url):

url = '%s/robots.txt' % base_url
response = self._head_request(url)

Assert.equal(
response.status_code,
requests.codes.ok,
'Robots.txt does not exist'
)
assert requests.codes.ok == response.status_code, 'Robots.txt does not exist'

0 comments on commit f23fbe4

Please sign in to comment.