예제 #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_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])
예제 #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_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()