def test_verify_firefox_aliases_redirect_to_correct_products(self, base_url, os):
        """Verifies the downloaded version of Firefox matches the expected version number
        and filename when a resource is requested using a go-bouncer alias.

        The test verifies the following aliases: firefox-latest, firefox-esr-latest,
        firefox-nightly-latest, firefox-beta-latest, firefox-beta-latest, firefox-aurora-latest.
        """
        releng_obj = RelengHelper()
        releng_aliases = releng_obj.fetch_current_fx_product_details()
        expected_products = releng_obj.generate_fx_alias_ver_mappings(releng_aliases)
        get_params = {
            'product': 'alias',
            'lang': 'en-US',
            'os': os
        }
        for alias, product_version in expected_products.iteritems():
            fx_pkg_name = self.get_expected_fx_pkg_str(os, alias, product_version)
            # set the GET params that will be sent to bouncer.
            get_params['product'] = alias
            # make the GET request
            response = self._head_request(base_url, params=get_params)
            parsed_url = urlparse(response.url)
            # verify service is up
            assert requests.codes.ok == response.status_code, \
                'Redirect failed with HTTP status. %s' % \
                self.response_info_failure_message(base_url, get_params, response)
            # verify download location
            assert parsed_url.netloc in self.cdn_netloc_locations, \
                'Failed, redirected to unknown host. %s' % \
                self.response_info_failure_message(base_url, get_params, response)
            # verify Firefox package name and version
            assert fx_pkg_name in response.url, \
                'Failed: Expected product str did not match what was returned %s' % \
                self.response_info_failure_message(base_url, get_params, response)
    def test_verify_releng_aliases_match_what_we_expect(self):
        """Verify the Firefox product list that Releng maintains matches the expected
        list. These product mappings are incorporated into tests, we need to be made
        aware if the keys that releng provide change.

        The json file being verified:
        https://product-details.mozilla.org/1.0/firefox_versions.json
        """
        releng_obj = RelengHelper()
        releng_aliases = releng_obj.fetch_current_fx_product_details()
        bouncer_aliases = releng_obj.releng_to_bouncer_alias_dict
        assert releng_aliases.keys().sort() == bouncer_aliases.keys().sort()