def test_bitsian_can_report_non_bitsian(self): user1 = create_user_from_email('*****@*****.**') user2 = create_user_from_email('*****@*****.**') result = execute_request_with_user( self.query_string, user=user1, variables={"reportedUserName": user2.username}) self.assertNotIn('errors', result) data = result['data']['createUserReport'] self.assertEqual(data['ok'], True)
def test_non_bitsian_cannot_make_new_product(self): user = create_user_from_email('*****@*****.**') result = execute_request_with_user(self.query_string, user=user) self.assertIn('errors', result) data = result['data']['createProduct'] self.assertIsNone(data)
def test_bitsian_can_create_product(self): user = create_user_from_email('*****@*****.**') result = execute_request_with_user(self.query_string, user=user) self.assertNotIn('errors', result) data = result['data']['createProduct'] self.assertEqual(data['ok'], True)
def test_user_can_get_products(self): user = create_user_from_email('*****@*****.**') result = execute_request_with_user(self.query_string, user=user) self.assertNotIn('errors', result) data = result['data']['products'] self.assertEqual(len(data["objects"]), 5)
def test_number_report_increase(self): user1 = create_user_from_email('*****@*****.**') user2 = create_user_from_email('*****@*****.**') reports = UserReport.objects.count() result = execute_request_with_user( self.query_string, user=user1, variables={"reportedUserName": user2.username}) new_reports = UserReport.objects.count() self.assertNotIn('errors', result) self.assertEqual(reports + 1, new_reports) data = result['data']['createUserReport'] self.assertEqual(data['ok'], True)
def test_user_can_get_all_categories(self): user = create_user_from_email('*****@*****.**') result = execute_request_with_user(self.query_string, user=user) self.assertNotIn('errors', result) data = result['data']['allCategories'] self.assertEqual(len(data), 5) self.assertEqual(len(data[0]['products']), 1)
def test_user_can_get_wishlist(self): user = create_user_from_email('*****@*****.**') user.profile.wishlist.products.add(self.product) result = execute_request_with_user(self.query_string, user=user) self.assertNotIn('errors', result) data = result['data']['wishlist'][0] self.assertEqual(len(data), 2)
def test_user_can_offer_for_expected_price(self): query_string, _ = self.generate_query_string(with_amount=False, is_negotiable=False) user = create_user_from_email('*****@*****.**') result = execute_request_with_user(query_string, user=user) self.assertNotIn('errors', result) data = result['data']['createOffer'] self.assertEqual(data['ok'], True)
def test_user_can_get_profile_by_email(self): user = create_user_from_email('*****@*****.**') result = execute_request_with_user(self.query_string, user=user, variables={'email': user.email}) self.assertNotIn('errors', result) data = result['data']['profile'] self.assertEqual(len(data), 3)
def test_user_can_get_all_profiles(self): user = create_user_from_email('*****@*****.**') result = execute_request_with_user(self.query_string, user=user) self.assertNotIn('errors', result) data = result['data']['allProfiles'] self.assertEqual( len(data), 6 ) # 6 because a new user was created with function create_user_from_email
def test_user_can_get_product_offer(self): user = create_user_from_email('*****@*****.**') result = execute_request_with_user(self.query_string, user=user, variables={'id': self.product.id}) self.assertNotIn('errors', result) data = result['data']['productOffer'][0] self.assertEqual(len(data), 4)
def test_user_can_get_category(self): user = create_user_from_email('*****@*****.**') result = execute_request_with_user( self.query_string, user=user, variables={'name': self.categories[0].name}) self.assertNotIn('errors', result) data = result['data']['category'] self.assertEqual(len(data), 2)
def test_anonymous_cannot_get_profile_by_email(self): user = AnonymousUser() find_user = create_user_from_email('*****@*****.**') result = execute_request_with_user( self.query_string, user=user, variables={'email': find_user.email}) self.assertIn('errors', result) error = result["errors"][0] self.assertEqual(error["message"], "You do not have permission to perform this action")
def test_user_cannot_make_offer_without_amount(self): query_string, _ = self.generate_query_string(with_amount=False, is_negotiable=True) user = create_user_from_email('*****@*****.**') result = execute_request_with_user(query_string, user=user) self.assertNotIn('errors', result) data = result['data']['createOffer'] self.assertEqual(data['ok'], False) errors = data['errors'] self.assertEqual(errors[0], "Missing argument 'amount'")
def test_upload_single_image_by_user_not_seller(self): product, user = create_product_from_email( '*****@*****.**', is_negotiable=False) user2 = create_user_from_email('*****@*****.**') result = execute_request_with_user( self.query_string, user=user2, variables={"prodId": product.id}, context={"img1.jpg": tempfile.NamedTemporaryFile(suffix=".jpg")}) self.assertNotIn('errors', result) data = result['data']['uploadImage'] self.assertEqual(data['ok'], True)
def test_user_cannot_make_multiple_offers(self): query_string, _ = self.generate_query_string(with_amount=True, is_negotiable=True) user = create_user_from_email('*****@*****.**') result1 = execute_request_with_user(query_string, user=user) #running the same mutation again result2 = execute_request_with_user(query_string, user=user) self.assertNotIn('errors', result2) data = result2['data']['createOffer'] self.assertEqual(data['ok'], False) errors = data['errors'] self.assertEqual(errors[0], "You cannot create multiple offers")
def authenticate(request): try: id_token = request.data["id_token"] except KeyError: log.error(f"{request.path}: no id_token provided in request body. ") return Response({"error": "No id_token provided"}, status=status.HTTP_403_FORBIDDEN) id_info = googleIdToken.verify_oauth2_token(id_token, google_requests.Request()) if id_info["iss"] not in [ "accounts.google.com", "https://accounts.google.com" ]: return Response({"error": "Not a valid Google account"}, status=status.HTTP_403_FORBIDDEN) email = id_info["email"] # Login if user already exists. username, _ = email.split('@') try: user = User.objects.get(username=username) except User.DoesNotExist: user = create_user_from_email(email) token = get_jwt_with_user(user) log.info(f"{request.path}: created user with email {user.email}") return Response( { "token": token, "username": user.username, "isComplete": user.profile.is_complete }, status=status.HTTP_201_CREATED, )
def test_user_can_get_my_profile(self): user = create_user_from_email('*****@*****.**') category = baker.make(Category, _quantity=1) users = baker.make(User, _quantity=1) product = baker.make(Product, seller=user.profile, category=category[0]) offer = baker.make(ProductOffer, offerer=users[0].profile, product=product, amount=randint(0, 10000)) report = baker.make(UserReport, reported_user=user.profile, reported_by=users[0].profile, category=randint(1, 3)) result = execute_request_with_user(self.query_string, user=user) self.assertNotIn('errors', result) data = result['data']['myProfile'] self.assertEqual(len(data), 4)
def create_non_bitsian_user(self): email = "*****@*****.**" user = create_user_from_email(email) return user
def create_test_user(self, email): return create_user_from_email(email)
def create_bitsian_user(self): email = "*****@*****.**" user = create_user_from_email(email) return user