示例#1
0
 def setUp(self):
     self.mock_config = Mock()
     self.mock_config.get.return_value = '1'
     self.mock_report = Mock()
     self.mock_report.headers = {}
     self.listener = StreamerListener(
         Mock(),
         self.mock_config,
         Mock(unit_id='abc', unit_type_id='123'),
     )
示例#2
0
    def test_download_succeeded_pulp_request(self, mock_deferred_download):
        # Setup
        mock_request = Mock()
        mock_request.getHeader.return_value = 'True'
        mock_catalog_entry = Mock()
        mock_catalog_entry.unit_id = 'abc'
        mock_catalog_entry.unit_type_id = '123'
        mock_data = {'catalog_entry': mock_catalog_entry, 'client_request': mock_request}
        mock_report = Mock(data=mock_data)
        listener = StreamerListener(Mock(), Mock())

        # Test
        listener.download_succeeded(mock_report)
        self.assertEqual(0, mock_deferred_download.call_count)
示例#3
0
    def test_download_succeeded_entry_not_unique(self, mock_deferred_download):
        """Assert NotUniqueError exceptions are ignored."""
        # Setup
        mock_request = Mock()
        mock_request.getHeader.return_value = None
        mock_catalog_entry = Mock()
        mock_deferred_download.return_value.save.side_effect = NotUniqueError()
        mock_data = {'catalog_entry': mock_catalog_entry, 'client_request': mock_request}
        mock_report = Mock(data=mock_data)
        listener = StreamerListener(Mock(), Mock())

        # Test
        listener.download_succeeded(mock_report)
        mock_deferred_download.return_value.save.assert_called_once_with()
示例#4
0
    def test_download_succeeded(self, mock_deferred_download):
        """Assert a deferred download entry is made."""
        # Setup
        mock_request = Mock()
        mock_request.getHeader.return_value = None
        mock_catalog_entry = Mock()
        mock_catalog_entry.unit_id = 'abc'
        mock_catalog_entry.unit_type_id = '123'
        mock_data = {'catalog_entry': mock_catalog_entry, 'client_request': mock_request}
        mock_report = Mock(data=mock_data)
        listener = StreamerListener(Mock(), Mock())

        # Test
        listener.download_succeeded(mock_report)
        mock_deferred_download.assert_called_once_with(unit_id='abc', unit_type_id='123')
        mock_deferred_download.return_value.save.assert_called_once_with()
示例#5
0
    def test_download_failed(self):
        """
        The content-length is corrected since Nectar does not download anything if
        it receives a non-200 response.
        """
        mock_report = Mock()
        mock_report.error_report = {'response_code': '418', 'response_msg': 'I am a teapot.'}
        mock_report.url = 'https://example.com/teapot/'
        listener = StreamerListener(Mock(), Mock())

        listener.download_failed(mock_report)
        self.assertEqual(('Connection', 'close'),
                         listener.request.setHeader.call_args_list[0][0])
        self.assertEqual(('Content-Length', '0'),
                         listener.request.setHeader.call_args_list[1][0])
        listener.request.setResponseCode.assert_called_once_with('418')
示例#6
0
    def test_download_headers(self):
        """
        The cache-control headers are set appropriately.
        """
        mock_config = Mock()
        mock_config.get.return_value = '1'
        mock_report = Mock()
        mock_report.headers = {'key': 'value', 'key2': 'value2'}
        expected_headers = mock_report.headers.copy()
        expected_headers['cache-control'] = 'public, s-maxage=1, max-age=1'
        listener = StreamerListener(Mock(), mock_config)

        listener.download_headers(mock_report)
        self.assertEqual(3, listener.request.setHeader.call_count)
        for expected, actual in zip(expected_headers.items(),
                                    listener.request.setHeader.call_args_list):
            self.assertEqual(expected, actual[0])
示例#7
0
    def test_download_succeeded_pulp_request(self, mock_deferred_download):
        # Setup
        mock_request = Mock()
        mock_request.getHeader.return_value = 'True'
        mock_catalog_entry = Mock()
        mock_catalog_entry.unit_id = 'abc'
        mock_catalog_entry.unit_type_id = '123'
        mock_data = {
            'catalog_entry': mock_catalog_entry,
            'client_request': mock_request
        }
        mock_report = Mock(data=mock_data)
        listener = StreamerListener(Mock(), Mock())

        # Test
        listener.download_succeeded(mock_report)
        self.assertEqual(0, mock_deferred_download.call_count)
示例#8
0
    def test_download_succeeded_entry_not_unique(self, mock_deferred_download):
        """Assert NotUniqueError exceptions are ignored."""
        # Setup
        mock_request = Mock()
        mock_request.getHeader.return_value = None
        mock_catalog_entry = Mock()
        mock_deferred_download.return_value.save.side_effect = NotUniqueError()
        mock_data = {
            'catalog_entry': mock_catalog_entry,
            'client_request': mock_request
        }
        mock_report = Mock(data=mock_data)
        listener = StreamerListener(Mock(), Mock())

        # Test
        listener.download_succeeded(mock_report)
        mock_deferred_download.return_value.save.assert_called_once_with()
示例#9
0
    def test_download_headers(self):
        """
        The cache-control headers are set appropriately.
        """
        mock_config = Mock()
        mock_config.get.return_value = '1'
        mock_report = Mock()
        mock_report.headers = {'key': 'value', 'key2': 'value2'}
        expected_headers = mock_report.headers.copy()
        expected_headers['cache-control'] = 'public, s-maxage=1, max-age=1'
        listener = StreamerListener(Mock(), mock_config)

        listener.download_headers(mock_report)
        self.assertEqual(3, listener.request.setHeader.call_count)
        for expected, actual in zip(expected_headers.items(),
                                    listener.request.setHeader.call_args_list):
            self.assertEqual(expected, actual[0])
示例#10
0
 def setUp(self):
     self.mock_config = Mock()
     self.mock_config.get.return_value = '1'
     self.mock_report = Mock()
     self.mock_report.headers = {}
     self.listener = StreamerListener(
         Mock(),
         self.mock_config,
         Mock(unit_id='abc', unit_type_id='123'),
     )
示例#11
0
    def test_download_failed(self):
        """
        The content-length is corrected since Nectar does not download anything if
        it receives a non-200 response.
        """
        mock_report = Mock()
        mock_report.error_report = {
            'response_code': '418',
            'response_msg': 'I am a teapot.'
        }
        mock_report.url = 'https://example.com/teapot/'
        listener = StreamerListener(Mock(), Mock())

        listener.download_failed(mock_report)
        self.assertEqual(('Connection', 'close'),
                         listener.request.setHeader.call_args_list[0][0])
        self.assertEqual(('Content-Length', '0'),
                         listener.request.setHeader.call_args_list[1][0])
        listener.request.setResponseCode.assert_called_once_with('418')
示例#12
0
    def test_download_succeeded(self, mock_deferred_download):
        """Assert a deferred download entry is made."""
        # Setup
        mock_request = Mock()
        mock_request.getHeader.return_value = None
        mock_catalog_entry = Mock()
        mock_catalog_entry.unit_id = 'abc'
        mock_catalog_entry.unit_type_id = '123'
        mock_data = {
            'catalog_entry': mock_catalog_entry,
            'client_request': mock_request
        }
        mock_report = Mock(data=mock_data)
        listener = StreamerListener(Mock(), Mock())

        # Test
        listener.download_succeeded(mock_report)
        mock_deferred_download.assert_called_once_with(unit_id='abc',
                                                       unit_type_id='123')
        mock_deferred_download.return_value.save.assert_called_once_with()
示例#13
0
 def setUp(self):
     self.mock_config = Mock()
     self.mock_config.get.return_value = "1"
     self.mock_report = Mock()
     self.mock_report.headers = {}
     self.listener = StreamerListener(Mock(), self.mock_config, Mock(unit_id="abc", unit_type_id="123"))
示例#14
0
class TestStreamerListener(unittest.TestCase):
    def setUp(self):
        self.mock_config = Mock()
        self.mock_config.get.return_value = "1"
        self.mock_report = Mock()
        self.mock_report.headers = {}
        self.listener = StreamerListener(Mock(), self.mock_config, Mock(unit_id="abc", unit_type_id="123"))

    def test_download_headers_cache_control(self):
        """
        The cache-control headers are set appropriately.
        """
        self.listener.download_headers(self.mock_report)
        self.listener.request.setHeader.assert_called_once_with("Cache-Control", "public, s-maxage=1, max-age=1")

    def test_download_headers_hop(self):
        """
        The cache-control headers are set appropriately.
        """
        self.mock_report.headers = {
            "Content-Length": "1234",
            "Connection": "close-if-you-want",
            "Keep-Alive": "timeout=UINT_MAX, max=UINT_MAX",
            "Public": "True",
            "Proxy-Authenticate": "username=alot, password=hunter2",
            "Transfer-Encoding": "Braille",
            "Upgrade": "True",
            "Some-Header": "value",
        }
        expected_headers = (
            ("Content-Length", "1234"),
            ("Some-Header", "value"),
            ("Cache-Control", "public, s-maxage=1, max-age=1"),
        )

        self.listener.download_headers(self.mock_report)
        actual_headers = [c[0] for c in self.listener.request.setHeader.call_args_list]
        for expected, actual in zip(expected_headers, actual_headers):
            self.assertEqual(expected, actual)

    def test_download_failed(self):
        """
        The content-length is corrected since Nectar does not download anything if
        it receives a non-200 response.
        """
        self.mock_report.error_report = {"response_code": "418", "response_msg": "I am a teapot."}
        self.mock_report.url = "https://example.com/teapot/"

        self.listener.download_failed(self.mock_report)
        self.assertEqual(("Content-Length", "0"), self.listener.request.setHeader.call_args_list[0][0])
        self.listener.request.setResponseCode.assert_called_once_with("418")

    def test_download_failed_no_response(self):
        """
        The content-length is corrected since Nectar does not download anything if
        it receives a non-200 response.
        """
        self.mock_report.error_report = {}
        self.mock_report.url = "https://example.com/no_response_for_you"

        self.listener.download_failed(self.mock_report)
        self.assertEqual(("Content-Length", "0"), self.listener.request.setHeader.call_args_list[0][0])
        self.listener.request.setResponseCode.assert_called_once_with(SERVICE_UNAVAILABLE)

    @patch(MODULE_PREFIX + "model.DeferredDownload")
    def test_download_succeeded(self, mock_deferred_download):
        """Assert a deferred download entry is made."""
        self.listener.download_succeeded(None)
        mock_deferred_download.assert_called_once_with(unit_id="abc", unit_type_id="123")
        mock_deferred_download.return_value.save.assert_called_once_with()

    @patch(MODULE_PREFIX + "model.DeferredDownload")
    def test_download_succeeded_entry_not_unique(self, mock_deferred_download):
        """Assert NotUniqueError exceptions are ignored."""
        # Setup
        mock_deferred_download.return_value.save.side_effect = NotUniqueError()

        # Test
        self.listener.download_succeeded(None)
        mock_deferred_download.return_value.save.assert_called_once_with()

    @patch(MODULE_PREFIX + "model.DeferredDownload")
    def test_download_succeeded_pulp_request(self, mock_deferred_download):
        # Setup
        self.listener.pulp_request = True

        # Test
        self.listener.download_succeeded(None)
        self.assertEqual(0, mock_deferred_download.call_count)
示例#15
0
class TestStreamerListener(unittest.TestCase):

    def setUp(self):
        self.mock_config = Mock()
        self.mock_config.get.return_value = '1'
        self.mock_report = Mock()
        self.mock_report.headers = {}
        self.listener = StreamerListener(
            Mock(),
            self.mock_config,
            Mock(unit_id='abc', unit_type_id='123'),
        )

    def test_download_headers_cache_control(self):
        """
        The cache-control headers are set appropriately.
        """
        self.listener.download_headers(self.mock_report)
        self.listener.request.setHeader.assert_called_once_with(
            'Cache-Control',
            'public, s-maxage=1, max-age=1',
        )

    def test_download_headers_hop(self):
        """
        The cache-control headers are set appropriately.
        """
        self.mock_report.headers = {
            'Content-Length': '1234',
            'Connection': 'close-if-you-want',
            'Keep-Alive': 'timeout=UINT_MAX, max=UINT_MAX',
            'Public': 'True',
            'Proxy-Authenticate': 'username=alot, password=hunter2',
            'Transfer-Encoding': 'Braille',
            'Upgrade': 'True',
            'Some-Header': 'value'
        }
        expected_headers = (
            ('Content-Length', '1234'),
            ('Some-Header', 'value'),
            ('Cache-Control', 'public, s-maxage=1, max-age=1'),
        )

        self.listener.download_headers(self.mock_report)
        actual_headers = [c[0] for c in self.listener.request.setHeader.call_args_list]
        for expected, actual in zip(expected_headers, actual_headers):
            self.assertEqual(expected, actual)

    def test_download_failed(self):
        """
        The content-length is corrected since Nectar does not download anything if
        it receives a non-200 response.
        """
        self.mock_report.error_report = {'response_code': '418', 'response_msg': 'I am a teapot.'}
        self.mock_report.url = 'https://example.com/teapot/'

        self.listener.download_failed(self.mock_report)
        self.assertEqual(('Content-Length', '0'),
                         self.listener.request.setHeader.call_args_list[0][0])
        self.listener.request.setResponseCode.assert_called_once_with('418')

    def test_download_failed_no_response(self):
        """
        The content-length is corrected since Nectar does not download anything if
        it receives a non-200 response.
        """
        self.mock_report.error_report = {}
        self.mock_report.url = 'https://example.com/no_response_for_you'

        self.listener.download_failed(self.mock_report)
        self.assertEqual(('Content-Length', '0'),
                         self.listener.request.setHeader.call_args_list[0][0])
        self.listener.request.setResponseCode.assert_called_once_with(SERVICE_UNAVAILABLE)

    @patch(MODULE_PREFIX + 'model.DeferredDownload')
    def test_download_succeeded(self, mock_deferred_download):
        """Assert a deferred download entry is made."""
        self.listener.download_succeeded(None)
        mock_deferred_download.assert_called_once_with(unit_id='abc', unit_type_id='123')
        mock_deferred_download.return_value.save.assert_called_once_with()

    @patch(MODULE_PREFIX + 'model.DeferredDownload')
    def test_download_succeeded_entry_not_unique(self, mock_deferred_download):
        """Assert NotUniqueError exceptions are ignored."""
        # Setup
        mock_deferred_download.return_value.save.side_effect = NotUniqueError()

        # Test
        self.listener.download_succeeded(None)
        mock_deferred_download.return_value.save.assert_called_once_with()

    @patch(MODULE_PREFIX + 'model.DeferredDownload')
    def test_download_succeeded_pulp_request(self, mock_deferred_download):
        # Setup
        self.listener.pulp_request = True

        # Test
        self.listener.download_succeeded(None)
        self.assertEqual(0, mock_deferred_download.call_count)
示例#16
0
class TestStreamerListener(unittest.TestCase):

    def setUp(self):
        self.mock_config = Mock()
        self.mock_config.get.return_value = '1'
        self.mock_report = Mock()
        self.mock_report.headers = {}
        self.listener = StreamerListener(
            Mock(),
            self.mock_config,
            Mock(unit_id='abc', unit_type_id='123'),
        )

    def test_download_headers_cache_control(self):
        """
        The cache-control headers are set appropriately.
        """
        self.listener.download_headers(self.mock_report)
        self.listener.request.setHeader.assert_called_once_with(
            'Cache-Control',
            'public, s-maxage=1, max-age=1',
        )

    def test_download_headers_hop(self):
        """
        The cache-control headers are set appropriately.
        """
        self.mock_report.headers = {
            'Content-Length': '1234',
            'Connection': 'close-if-you-want',
            'Keep-Alive': 'timeout=UINT_MAX, max=UINT_MAX',
            'Public': 'True',
            'Proxy-Authenticate': 'username=alot, password=hunter2',
            'Transfer-Encoding': 'Braille',
            'Upgrade': 'True',
            'Some-Header': 'value'
        }
        expected_headers = (
            ('Content-Length', '1234'),
            ('Some-Header', 'value'),
            ('Cache-Control', 'public, s-maxage=1, max-age=1'),
        )

        self.listener.download_headers(self.mock_report)
        actual_headers = [c[0] for c in self.listener.request.setHeader.call_args_list]
        for expected, actual in zip(expected_headers, actual_headers):
            self.assertEqual(expected, actual)

    def test_download_failed(self):
        """
        The content-length is corrected since Nectar does not download anything if
        it receives a non-200 response.
        """
        self.mock_report.error_report = {'response_code': '418', 'response_msg': 'I am a teapot.'}
        self.mock_report.url = 'https://example.com/teapot/'

        self.listener.download_failed(self.mock_report)
        self.assertEqual(('Content-Length', '0'),
                         self.listener.request.setHeader.call_args_list[0][0])
        self.listener.request.setResponseCode.assert_called_once_with('418')

    @patch(MODULE_PREFIX + 'model.DeferredDownload', autospec=True)
    def test_download_succeeded(self, mock_deferred_download):
        """Assert a deferred download entry is made."""
        self.listener.download_succeeded(None)
        mock_deferred_download.assert_called_once_with(unit_id='abc', unit_type_id='123')
        mock_deferred_download.return_value.save.assert_called_once_with()

    @patch(MODULE_PREFIX + 'model.DeferredDownload', autospec=True)
    def test_download_succeeded_entry_not_unique(self, mock_deferred_download):
        """Assert NotUniqueError exceptions are ignored."""
        # Setup
        mock_deferred_download.return_value.save.side_effect = NotUniqueError()

        # Test
        self.listener.download_succeeded(None)
        mock_deferred_download.return_value.save.assert_called_once_with()

    @patch(MODULE_PREFIX + 'model.DeferredDownload', autospec=True)
    def test_download_succeeded_pulp_request(self, mock_deferred_download):
        # Setup
        self.listener.pulp_request = True

        # Test
        self.listener.download_succeeded(None)
        self.assertEqual(0, mock_deferred_download.call_count)