def test_build_session(self):
        kwargs = {'basic_auth_username': '******',
                  'basic_auth_password': '******',
                  'ssl_validation': False,
                  'ssl_client_cert_path': os.path.join(_find_data_directory(), 'pki/bogus/cert.pem'),
                  'ssl_client_key_path': os.path.join(_find_data_directory(), 'pki/bogus/key.pem'),
                  'proxy_url': 'https://invalid-proxy.com',
                  'proxy_port': 1234,
                  'proxy_username': '******',
                  'proxy_password': '******'}
        proxy_host = urllib.splithost(urllib.splittype(kwargs['proxy_url'])[1])[0]

        cfg = config.DownloaderConfig(**kwargs)
        session = revent.build_session(cfg)

        self.assertEqual(session.stream, True)
        self.assertEqual(session.auth, (kwargs['basic_auth_username'], kwargs['basic_auth_password']))
        self.assertEqual(session.cert, (kwargs['ssl_client_cert_path'], kwargs['ssl_client_key_path']))
        self.assertEqual(session.proxies, {'http': 'https://%s:%s@%s:%d' % (kwargs['proxy_username'],
                                                                            kwargs['proxy_password'],
                                                                            proxy_host,
                                                                            kwargs['proxy_port']),
                                           'https': 'http://%s:%s@%s:%d' % (kwargs['proxy_username'],
                                                                            kwargs['proxy_password'],
                                                                            proxy_host,
                                                                            kwargs['proxy_port'])})
    def test_wrong_content_encoding(self):
        URL = 'http://pulpproject.org/primary.xml.gz'
        req = DownloadRequest(URL, StringIO())
        response = Response()
        response.status_code = httplib.OK
        response.raw = StringIO('abc')
        session = revent.build_session(self.config)
        session.get = mock.MagicMock(return_value=response, spec_set=session.get)

        report = self.downloader._fetch(req, session)

        self.assertEqual(report.state, DOWNLOAD_SUCCEEDED)
        self.assertEqual(report.bytes_downloaded, 3)
        session.get.assert_called_once_with(URL, headers={'accept-encoding':''})
    def test_normal_content_encoding(self):
        URL = 'http://pulpproject.org/primary.xml'
        req = DownloadRequest(URL, StringIO())
        response = Response()
        response.status_code = httplib.OK
        response.iter_content = mock.MagicMock(return_value=['abc'], spec_set=response.iter_content)
        session = revent.build_session(self.config)
        session.get = mock.MagicMock(return_value=response, spec_set=session.get)

        report = self.downloader._fetch(req, session)

        self.assertEqual(report.state, DOWNLOAD_SUCCEEDED)
        self.assertEqual(report.bytes_downloaded, 3)
        # passing "None" for headers lets the requests library add whatever
        # headers it thinks are appropriate.
        session.get.assert_called_once_with(URL, headers=None)