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) ])
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) ])
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)
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)
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) ])
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) ])