def test_bar_payment_user_uses_only_accepted_tabs( self, mock_bar_models_charge_source, mock_bar_models_authorize_source ): """ Ensure that a payment only use tabs that have been accepted For this test you need: - A bar - A user - Another user - A tab created by each user """ self.user.customer.default_source = "123" self.user.customer.save() mock_bar_models_authorize_source.return_value = {"id": "jnsdflkgj34r"} mock_bar_models_charge_source.return_value = {"id": "jnsdflkgj34r"} # Create another user user = UserProfile.new("*****@*****.**", "password", "Ryan", "Frahm", datetime.datetime.now()) user.groups.add(Group.objects.filter(name="Drinkers")[0]) # Create a 2 tabs # This one should not be accepted tab2 = Tab.new(20.00, self.user.email, "ijbwflgkbsdf", user) # This one should be automatically accepted tab1 = Tab.new(20.00, self.user.email, "ijbwflgkbsdf", self.user) url = reverse("api:bar-pay", args=(1,)) amount = 10 d = {"amount": amount} response = self.client.post(url, d, format="json") self.assertEqual(len(response.data.get("transactions")), 1) self.assertIsNotNone(response.data.get("sale")) # The user's tab should now be $10 self.assertEqual(response.data.get("tab"), 10) transactions = response.data.get("transactions") self.assertEqual(transactions[0]["status"], "authorized") self.assertEqual(transactions[0]["amount"], 10.00) self.assertEqual(transactions[0]["tab_id"], tab1.pk)
def setUp(self, mock_bar_models_authorize_source, mock_bar_models_charge_source, mock_account_models_stripe): # mock_account_models_customer.default_source = '123' mock_account_models_stripe.Customer.create.return_value = {"id": "13542lknlknlkn"} mock_bar_models_authorize_source.return_value = {"id": "jnsdflkgj34r"} # Create groups group = Group(name="Bar Owners") group.save() g = Group(name="Drinkers") g.save() # Create a user email = "*****@*****.**" password = "******" self.firstname = "Bob" self.lastname = "Dyllan" self.dob = datetime.datetime.now() self.user = UserProfile.new(email, password, self.firstname, self.lastname, self.dob) self.user.groups.add(group) self.client = APIClient(enforce_csrf_checks=True) self.client.force_authenticate(user=self.user) d = { "street": "123 Street", "city": "Des Moines", "province": "IA", "postal": "50305", "country": "US", "lat": 41.0, "lng": -91.0, } bar = Bar.new("Test Bar 1", d, self.user) bar.save() self.bar = bar m = StripeMerchant(user=self.user, account_id="123", pub_key="123", refresh_token="123", access_token="123") m.save()
def test_role_create(self): """ Ensure that we can create a role """ url = reverse("api:bar-roles", args=(1,)) # Create another user user = UserProfile.new("*****@*****.**", "password", "Ryan", "Frahm", datetime.datetime.now()) user.groups.add(Group.objects.filter(name="Drinkers")[0]) role = "admin,bartender,manager" d = {"uid": user.pk, "role": role} response = self.client.post(url, d, format="json") self.assertEqual(response.data.get("role"), role) self.assertTrue(Role.objects.filter().exists()) self.assertEqual(response.status_code, status.HTTP_201_CREATED)
def test_tab_create_for_another_user(self, mock_bar_models_authorize_source): """ Ensure we can create a tab for another registered user """ # Create another user user = UserProfile.new("*****@*****.**", "password", "Ryan", "Frahm", datetime.datetime.now()) user.groups.add(Group.objects.filter(name="Drinkers")[0]) url = reverse("api:tabs") d = {"amount": 20, "source": "123", "users": [{"id": user.pk}], "note": "Testy test notes!"} mock_bar_models_authorize_source.return_value = {"id": "jnsdflkgj34r"} response = self.client.post(url, d, format="json") tabs = response.data.get("tabs") self.assertEqual(len(tabs), 1) self.assertEqual(tabs[0]["receiver"], user.pk) self.assertEqual(response.data.get("amount"), d["amount"])
def test_user_get_tab_list(self): """ Ensure we only return active tabs """ # Create another user user = UserProfile.new("*****@*****.**", "password", "Ryan", "Frahm", datetime.datetime.now()) user.groups.add(Group.objects.filter(name="Drinkers")[0]) tab = Tab(amount=20, total=20, sender=user, receiver=self.user, source="23423542", charge="13425", active=False) tab.save() tab = Tab(amount=20, total=20, sender=user, receiver=self.user, source="23423542", charge="13425") tab.save() url = reverse("api:tabs") response = self.client.get(url, format="json") tabs = response.data self.assertEqual(len(tabs), 1)
def test_role_create_when_not_owner_or_admin(self): """ Ensure that only owners/admins can create roles. It should return a status 400 """ url = reverse("api:bar-roles", args=(1,)) # Create another user user = UserProfile.new("*****@*****.**", "password", "Ryan", "Frahm", datetime.datetime.now()) user.groups.add(Group.objects.filter(name="Drinkers")[0]) # Switch owners really quick on this bar bar = Bar.objects.get(pk=1) bar.owner = user bar.save() role = "admin,bartender,manager" d = {"uid": user.pk, "role": role} response = self.client.post(url, d, format="json") self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)
def create_user(): return UserProfile.new(email, password, 'Bill', 'Black', '2015-10-26')