def test_get_reviews(self): """Testing the GET review-requests/<id>/reviews/ API""" review_request = self.create_review_request(publish=True) self.create_review(review_request, publish=True) rsp = self.apiGet(get_review_list_url(review_request), expected_mimetype=self.list_mimetype) self.assertEqual(rsp['stat'], 'ok') self.assertEqual(len(rsp['reviews']), 1)
def setup_basic_get_test(self, user, with_local_site, local_site_name, populate_items): review_request = self.create_review_request(with_local_site=with_local_site, submitter=user, publish=True) if populate_items: items = [self.create_review(review_request, publish=True)] else: items = [] return (get_review_list_url(review_request, local_site_name), review_list_mimetype, items)
def setup_basic_post_test(self, user, with_local_site, local_site_name, post_valid_data): review_request = self.create_review_request(with_local_site=with_local_site, submitter=user, publish=True) return ( get_review_list_url(review_request, local_site_name), review_item_mimetype, {"ship_it": True, "body_top": "My body top", "body_bottom": "My body bottom"}, [review_request], )
def test_post_reviews_with_site_no_access(self): """Testing the POST review-requests/<id>/reviews/ API with a local site and Permission Denied error""" review_request = self.create_review_request(with_local_site=True, publish=True) rsp = self.apiPost( get_review_list_url(review_request, self.local_site_name), expected_status=403) self.assertEqual(rsp['stat'], 'fail') self.assertEqual(rsp['err']['code'], PERMISSION_DENIED.code)
def test_get_with_counts_only(self): """Testing the GET review-requests/<id>/reviews/?counts-only=1 API""" review_request = self.create_review_request(publish=True) self.create_review(review_request, publish=True) self.create_review(review_request, publish=True) rsp = self.api_get(get_review_list_url(review_request), { 'counts-only': 1, }, expected_mimetype=review_list_mimetype) self.assertEqual(rsp['stat'], 'ok') self.assertEqual(rsp['count'], 2)
def test_get_with_counts_only(self): """Testing the GET review-requests/<id>/reviews/?counts-only=1 API""" review_request = self.create_review_request(publish=True) self.create_review(review_request, publish=True) self.create_review(review_request, publish=True) rsp = self.apiGet( get_review_list_url(review_request), {"counts-only": 1}, expected_mimetype=review_list_mimetype ) self.assertEqual(rsp["stat"], "ok") self.assertEqual(rsp["count"], 2)
def test_get_reviews_with_counts_only(self): """Testing the GET review-requests/<id>/reviews/?counts-only=1 API""" review_request = self.create_review_request(publish=True) self.create_review(review_request, publish=True) self.create_review(review_request, publish=True) rsp = self.apiGet(get_review_list_url(review_request), { 'counts-only': 1, }, expected_mimetype=self.list_mimetype) self.assertEqual(rsp['stat'], 'ok') self.assertEqual(rsp['count'], 2)
def setup_basic_post_test(self, user, with_local_site, local_site_name, post_valid_data): review_request = self.create_review_request( with_local_site=with_local_site, submitter=user, publish=True) return (get_review_list_url(review_request, local_site_name), review_item_mimetype, { 'ship_it': True, 'body_top': 'My body top', 'body_bottom': 'My body bottom', }, [review_request])
def setup_basic_get_test(self, user, with_local_site, local_site_name, populate_items): review_request = self.create_review_request( with_local_site=with_local_site, submitter=user, publish=True) if populate_items: items = [self.create_review(review_request, publish=True)] else: items = [] return (get_review_list_url(review_request, local_site_name), review_list_mimetype, items)
def test_get_reviews_with_site(self): """Testing the GET review-requests/<id>/reviews/ API with a local site""" self.test_post_reviews_with_site(public=True) local_site = LocalSite.objects.get(name=self.local_site_name) review_request = ReviewRequest.objects.public(local_site=local_site)[0] rsp = self.apiGet(get_review_list_url(review_request, self.local_site_name), expected_mimetype=self.list_mimetype) self.assertEqual(rsp['stat'], 'ok') self.assertEqual(len(rsp['reviews']), review_request.reviews.count())
def test_post_with_site(self, public=False): """Testing the POST review-requests/<id>/reviews/ API with a local site """ self._login_user(local_site=True) body_top = "" body_bottom = "My Body Bottom" ship_it = True self.siteconfig.set('mail_send_review_mail', True) self.siteconfig.save() review_request = self.create_review_request(with_local_site=True, publish=True) mail.outbox = [] post_data = { 'ship_it': ship_it, 'body_top': body_top, 'body_bottom': body_bottom, 'public': public, } rsp, response = self.api_post_with_response( get_review_list_url(review_request, self.local_site_name), post_data, expected_mimetype=review_item_mimetype) self.assertTrue('stat' in rsp) self.assertEqual(rsp['stat'], 'ok') self.assertTrue('Location' in response) reviews = review_request.reviews.all() self.assertEqual(len(reviews), 1) review = reviews[0] self.assertEqual(rsp['review']['id'], review.id) self.assertEqual(review.ship_it, ship_it) self.assertEqual(review.body_top, body_top) self.assertEqual(review.body_bottom, body_bottom) self.assertEqual(review.public, public) if public: self.assertEqual(len(mail.outbox), 1) else: self.assertEqual(len(mail.outbox), 0)
def test_get_with_invite_only_group_and_permission_denied_error(self): """Testing the GET review-requests/<id>/reviews/ API with invite-only group and Permission Denied error """ review_request = self.create_review_request(publish=True) self.assertNotEqual(review_request.submitter, self.user) group = self.create_review_group(invite_only=True) review_request.target_groups.add(group) review_request.save() rsp = self.apiGet(get_review_list_url(review_request), expected_status=403) self.assertEqual(rsp["stat"], "fail") self.assertEqual(rsp["err"]["code"], PERMISSION_DENIED.code)
def test_get_with_invite_only_group_and_permission_denied_error(self): """Testing the GET review-requests/<id>/reviews/ API with invite-only group and Permission Denied error """ review_request = self.create_review_request(publish=True) self.assertNotEqual(review_request.submitter, self.user) group = self.create_review_group(invite_only=True) review_request.target_groups.add(group) review_request.save() rsp = self.apiGet(get_review_list_url(review_request), expected_status=403) self.assertEqual(rsp['stat'], 'fail') self.assertEqual(rsp['err']['code'], PERMISSION_DENIED.code)
def test_post_reviews_with_site(self, public=False): """Testing the POST review-requests/<id>/reviews/ API with a local site""" self._login_user(local_site=True) body_top = "" body_bottom = "My Body Bottom" ship_it = True self.siteconfig.set('mail_send_review_mail', True) self.siteconfig.save() review_request = self.create_review_request(with_local_site=True, publish=True) mail.outbox = [] post_data = { 'ship_it': ship_it, 'body_top': body_top, 'body_bottom': body_bottom, 'public': public, } rsp, response = self.api_post_with_response( get_review_list_url(review_request, self.local_site_name), post_data, expected_mimetype=self.item_mimetype) self.assertTrue('stat' in rsp) self.assertEqual(rsp['stat'], 'ok') self.assertTrue('Location' in response) reviews = review_request.reviews.all() self.assertEqual(len(reviews), 1) review = reviews[0] self.assertEqual(rsp['review']['id'], review.id) self.assertEqual(review.ship_it, ship_it) self.assertEqual(review.body_top, body_top) self.assertEqual(review.body_bottom, body_bottom) self.assertEqual(review.public, public) if public: self.assertEqual(len(mail.outbox), 1) else: self.assertEqual(len(mail.outbox), 0)
def test_put_with_site(self): """Testing the PUT review-requests/<id>/reviews/<id>/ API with a local site """ self._login_user(local_site=True) body_top = "" body_bottom = "My Body Bottom" ship_it = True review_request = self.create_review_request(with_local_site=True, publish=True) mail.outbox = [] rsp, response = self.api_post_with_response( get_review_list_url(review_request, self.local_site_name), expected_mimetype=review_item_mimetype) self.assertTrue('stat' in rsp) self.assertEqual(rsp['stat'], 'ok') self.assertTrue('Location' in response) review_url = response['Location'] rsp = self.apiPut( review_url, { 'ship_it': ship_it, 'body_top': body_top, 'body_bottom': body_bottom, }, expected_mimetype=review_item_mimetype) reviews = review_request.reviews.filter(user__username='******') self.assertEqual(len(reviews), 1) review = reviews[0] self.assertEqual(review.ship_it, ship_it) self.assertEqual(review.body_top, body_top) self.assertEqual(review.body_bottom, body_bottom) self.assertEqual(review.public, False) self.assertEqual(len(mail.outbox), 0) # Make this easy to use in other tests. return review
def test_put_review_with_site(self): """Testing the PUT review-requests/<id>/reviews/<id>/ API with a local site""" self._login_user(local_site=True) body_top = "" body_bottom = "My Body Bottom" ship_it = True review_request = self.create_review_request(with_local_site=True, publish=True) mail.outbox = [] rsp, response = self.api_post_with_response( get_review_list_url(review_request, self.local_site_name), expected_mimetype=self.item_mimetype) self.assertTrue('stat' in rsp) self.assertEqual(rsp['stat'], 'ok') self.assertTrue('Location' in response) review_url = response['Location'] rsp = self.apiPut( review_url, { 'ship_it': ship_it, 'body_top': body_top, 'body_bottom': body_bottom, }, expected_mimetype=self.item_mimetype) reviews = review_request.reviews.filter(user__username='******') self.assertEqual(len(reviews), 1) review = reviews[0] self.assertEqual(review.ship_it, ship_it) self.assertEqual(review.body_top, body_top) self.assertEqual(review.body_bottom, body_bottom) self.assertEqual(review.public, False) self.assertEqual(len(mail.outbox), 0) # Make this easy to use in other tests. return review
def test_post_reviews(self): """Testing the POST review-requests/<id>/reviews/ API""" body_top = "" body_bottom = "My Body Bottom" ship_it = True review_request = self.create_review_request(publish=True) mail.outbox = [] rsp, response = self.api_post_with_response( get_review_list_url(review_request), { 'ship_it': ship_it, 'body_top': body_top, 'body_bottom': body_bottom, }, expected_mimetype=self.item_mimetype) self.assertTrue('stat' in rsp) self.assertEqual(rsp['stat'], 'ok') self.assertTrue('Location' in response) reviews = review_request.reviews.filter(user=self.user) self.assertEqual(len(reviews), 1) review = reviews[0] self.assertEqual(response['Location'], self.base_url + get_review_item_url(review_request, review.id)) self.assertEqual(review.ship_it, ship_it) self.assertEqual(review.body_top, body_top) self.assertEqual(review.body_bottom, body_bottom) self.assertEqual(review.public, False) self.assertEqual(len(mail.outbox), 0)
def setup_review_request_child_test(self, review_request): return (get_review_list_url(review_request), review_list_mimetype)