Exemplo n.º 1
0
    def test_handle_get(self, model, _download, _on_succeeded, responder):
        """
         Three catalog entries.
         The 1st download fails but succeeds on the 2nd.
         The 3rd is not tried.
        """
        request = Mock(uri='http://content-world.com/content/bear.rpm')
        responder.return_value.__enter__.return_value = responder.return_value
        report = DownloadReport('', '')
        _download.side_effect = SideEffect(DownloadFailed(report), report,
                                           None)
        catalog = [
            Mock(url='url-a'),
            Mock(url='url-b'),
            Mock(url='url-c'),  # not tried.
        ]
        model.objects.filter.return_value.order_by.return_value.all.return_value = catalog
        model.objects.filter.return_value.order_by.return_value.count.return_value = len(
            catalog)

        # test
        streamer = Streamer(Mock())
        streamer._handle_get(request)

        # validation
        model.objects.filter.assert_called_once_with(path='/content/bear.rpm')
        model.objects.filter.return_value.order_by.\
            assert_called_once_with('-_id', '-revision')
        responder.assert_called_once_with(request)
        _on_succeeded.assert_called_once_with(catalog[1], request, report)
        self.assertEqual(_download.call_args_list, [
            call(request, catalog[0], responder.return_value),
            call(request, catalog[1], responder.return_value)
        ])
Exemplo n.º 2
0
    def test_handle_get_all_failed(self, model, _download, _on_all_failed,
                                   responder):
        """
         Three catalog entries.
         All (3) failed.
        """
        request = Mock(uri='http://content-world.com/content/bear.rpm')
        responder.return_value.__enter__.return_value = responder.return_value
        report = DownloadReport('', '')
        _download.side_effect = SideEffect(PluginNotFound(), DoesNotExist(),
                                           DownloadFailed(report))
        catalog = [
            Mock(url='url-a'),
            Mock(url='url-b'),
            Mock(url='url-c'),
        ]
        model.objects.filter.return_value.order_by.return_value.all.return_value = catalog
        model.objects.filter.return_value.order_by.return_value.count.return_value = len(
            catalog)

        # test
        streamer = Streamer(Mock())
        streamer._handle_get(request)

        # validation
        model.objects.filter.assert_called_once_with(path='/content/bear.rpm')
        model.objects.filter.return_value.order_by.\
            assert_called_once_with('-_id', '-revision')
        responder.assert_called_once_with(request)
        _on_all_failed.assert_called_once_with(request)
        self.assertEqual(_download.call_args_list, [
            call(request, catalog[0], responder.return_value),
            call(request, catalog[1], responder.return_value),
            call(request, catalog[2], responder.return_value)
        ])
Exemplo n.º 3
0
    def test_handle_get_failed_badly(self, model):
        request = Mock()
        model.objects.filter.side_effect = ValueError()

        # test
        streamer = Streamer(Mock())
        streamer._handle_get(request)

        # validation
        request.setResponseCode.assert_called_once_with(INTERNAL_SERVER_ERROR)
Exemplo n.º 4
0
    def test_handle_get_no_catalog_matched(self, model, _download, responder):
        """
        No catalog entries matched.
        """
        responder.return_value.__enter__.return_value = responder.return_value
        request = Mock(uri='http://content-world.com/content/bear.rpm')
        catalog = []
        model.objects.filter.return_value.order_by.return_value.all.return_value = catalog
        model.objects.filter.return_value.order_by.return_value.count.return_value = len(catalog)

        # test
        streamer = Streamer(Mock())
        streamer._handle_get(request)

        # validation
        model.objects.filter.assert_called_once_with(path='/content/bear.rpm')
        model.objects.filter.return_value.order_by.\
            assert_called_once_with('-_id', '-revision')
        request.setResponseCode.assert_called_once_with(NOT_FOUND)
        self.assertFalse(_download.called)
Exemplo n.º 5
0
    def test_handle_get(self, model, _download, _on_succeeded, responder):
        """
         Three catalog entries.
         The 1st download fails but succeeds on the 2nd.
         The 3rd is not tried.
        """
        request = Mock(uri='http://content-world.com/content/bear.rpm')
        responder.return_value.__enter__.return_value = responder.return_value
        report = DownloadReport('', '')
        _download.side_effect = SideEffect(
            DownloadFailed(report),
            report,
            None)
        catalog = [
            Mock(url='url-a'),
            Mock(url='url-b'),
            Mock(url='url-c'),  # not tried.
        ]
        model.objects.filter.return_value.order_by.return_value.all.return_value = catalog
        model.objects.filter.return_value.order_by.return_value.count.return_value = len(catalog)

        # test
        streamer = Streamer(Mock())
        streamer._handle_get(request)

        # validation
        model.objects.filter.assert_called_once_with(path='/content/bear.rpm')
        model.objects.filter.return_value.order_by.\
            assert_called_once_with('-_id', '-revision')
        responder.assert_called_once_with(request)
        _on_succeeded.assert_called_once_with(catalog[1], request, report)
        self.assertEqual(
            _download.call_args_list,
            [
                call(request, catalog[0], responder.return_value),
                call(request, catalog[1], responder.return_value)
            ])
Exemplo n.º 6
0
    def test_handle_get_all_failed(self, model, _download, _on_all_failed, responder):
        """
         Three catalog entries.
         All (3) failed.
        """
        request = Mock(uri='http://content-world.com/content/bear.rpm')
        responder.return_value.__enter__.return_value = responder.return_value
        report = DownloadReport('', '')
        _download.side_effect = SideEffect(
            PluginNotFound(),
            DoesNotExist(),
            DownloadFailed(report))
        catalog = [
            Mock(url='url-a'),
            Mock(url='url-b'),
            Mock(url='url-c'),
        ]
        model.objects.filter.return_value.order_by.return_value.all.return_value = catalog
        model.objects.filter.return_value.order_by.return_value.count.return_value = len(catalog)

        # test
        streamer = Streamer(Mock())
        streamer._handle_get(request)

        # validation
        model.objects.filter.assert_called_once_with(path='/content/bear.rpm')
        model.objects.filter.return_value.order_by.\
            assert_called_once_with('-_id', '-revision')
        responder.assert_called_once_with(request)
        _on_all_failed.assert_called_once_with(request)
        self.assertEqual(
            _download.call_args_list,
            [
                call(request, catalog[0], responder.return_value),
                call(request, catalog[1], responder.return_value),
                call(request, catalog[2], responder.return_value)
            ])