def test_should_get_list_of_all_users(self): self.db.users.insert(user_in_db()) self.db.users.insert(user_in_db(confirmed=True, name="Jan Brzęczyszczykiewicz")) response = self.app.get('/contacts') self.assertEqual(response.content_type, "application/json") self.assertEqual(response.get_data(as_text=True), """[{"email": "*****@*****.**", "name": "Jan Brzęczyszczykiewicz"}]""")
def test_overrides_if_tag_already_associated_with_another_user(self): self.db.users.insert(user_in_db(confirmed=True, email="*****@*****.**")) first_response = self.app.put('/contact/%s/%s' % ("*****@*****.**", NFC_TAG_ID)) self.assertEqual(first_response.status_code, 201) self.db.users.insert(user_in_db(confirmed=True)) second_response = self.app.put('/contact/%s/%s' % (USER_EMAIL_ADDRESS, NFC_TAG_ID)) self.assertEqual(second_response.content_type, "application/json") self.assertEqual(second_response.status_code, 201) self.assertEqual(find_user_for_tag(NFC_TAG_ID)['email'], USER_EMAIL_ADDRESS) self.assertEqual(self.db.users.find_one({"email": "*****@*****.**"})['deletedNfcTags'], [NFC_TAG_ID])
def test_should_find_user_for_given_tag(self): self.db.users.insert(user_in_db(confirmed=True, nfcTags=[NFC_TAG_ID])) response = self.app.get('/contact/%s' % NFC_TAG_ID) self.assertEqual(response.content_type, "application/json") self.assertEqual(response.status_code, 200)
def test_returns_200_if_tag_already_associated_with_given_user(self): self.db.users.insert(user_in_db(confirmed=True)) self.app.put('/contact/%s/%s' % (USER_EMAIL_ADDRESS, NFC_TAG_ID)) response = self.app.put('/contact/%s/%s' % (USER_EMAIL_ADDRESS, NFC_TAG_ID)) self.assertEqual(response.content_type, "application/json") self.assertEqual(response.status_code, 200)
def test_should_assign_new_tag_to_user(self): self.db.users.insert(user_in_db(confirmed=True)) response = self.app.put('/contact/%s/%s' % (USER_EMAIL_ADDRESS, NFC_TAG_ID)) self.assertEqual(response.content_type, "application/json") self.assertEqual(response.status_code, 201) self.assertIn(NFC_TAG_ID, self.db.users.find_one()['nfcTags'])
def test_should_limit_finding_user_by_tag(self): self.db.users.insert(user_in_db(confirmed=True, nfcTags=[NFC_TAG_ID])) for i in range(50): response = self.app.get('/contact/%s?requester=x' % NFC_TAG_ID) self.assertEqual(response.status_code, 200) response = self.app.get('/contact/%s?requester=x' % NFC_TAG_ID) self.assertEqual(response.status_code, 429)
def test_should_fail_to_save_user_registration_when_not_confirmed_user_selects_workshop(self, requests_mock): # Given: self.user_and_workshop_exists(user=user_in_db(confirmed=False)) # When: response = self.user_selects_workshop() # Then self.assertEqual(response.status_code, 412)
def test_should_mark_user_as_confirmed(self): self.db.users.insert(user_in_db(confirmed=True)) self.app.get('/confirmation/%s' % USER_EMAIL_ADDRESS) self.assertEqual( self.db.users.find_one({"email": USER_EMAIL_ADDRESS})['isConfirmedTwice'], True)
def test_should_return_user_workshops(self): self.db.users.insert(user_in_db(confirmed=True)) self.db.workshops.insert(workshop_in_db(with_user=True, with_mail=False)) response = self.app.get('/confirmation/%s' % USER_EMAIL_ADDRESS) self.assertIn("text/html", response.content_type) self.assertEqual(response.status_code, 200) self.assertIn("Workshop Name", pprint.pformat(response.get_data()))
def test_should_fail_to_save_user_registration_when_not_confirmed_user_selects_workshop( self, requests_mock): # Given: self.user_and_workshop_exists(user=user_in_db(confirmed=False)) # When: response = self.user_selects_workshop() # Then self.assertEqual(response.status_code, 412)
def test_should_send_confirmation_email_to_users(self, mock): for i in range(23): self.db.users.insert(user_in_db(confirmed=True, email="*****@*****.**" % i)) self.app.post('/confirmation/send?count=3&query=2') sent_email_addresses = [x[1]['data']['to'] for x in mock.call_args_list] self.assertEqual(len(sent_email_addresses), 3) for address in sent_email_addresses: self.assertIn(address, VALID_RESULT_ADDRESSES)
def test_should_save_user_registration_once_if_when_user_selected_workshop_multipe_times(self, requests_mock): # Given: self.user_and_workshop_exists(user=user_in_db(confirmed=True)) self.user_selects_workshop() # When: self.user_selects_workshop() # Then self.assertEqual(1, len(self.db.workshops.find_one()['users']))
def test_should_return_user_workshops(self): self.db.users.insert(user_in_db(confirmed=True)) self.db.workshops.insert( workshop_in_db(with_user=True, with_mail=False)) response = self.app.get('/confirmation/%s' % USER_EMAIL_ADDRESS) self.assertIn("text/html", response.content_type) self.assertEqual(response.status_code, 200) self.assertIn("Workshop Name", pprint.pformat(response.get_data()))
def test_should_save_user_registration_once_if_when_user_selected_workshop_multipe_times( self, requests_mock): # Given: self.user_and_workshop_exists(user=user_in_db(confirmed=True)) self.user_selects_workshop() # When: self.user_selects_workshop() # Then self.assertEqual(1, len(self.db.workshops.find_one()['users']))
def test_should_save_incoming_emails_in_workshop_and_forward_to_users(self, requests_mock): # Given a database with one workshop self.db.workshops.insert(workshop_in_db(with_user=True, with_mail=False)) self.db.users.insert(user_in_db(confirmed=True)) # When rv = self.mailgun_sends_email() # Then self.assertEqual(1, len(self.db.workshops.find_one()['emails'])) self.assertEqual(1, requests_mock.post.call_count) assert_mailgun(requests_mock, to=USER_EMAIL_ADDRESS, subject='Warsjawa - test_workshop: %s' % SECOND_MAIL_SUBJECT)
def test_should_send_confirmation_email_to_users(self, mock): for i in range(23): self.db.users.insert( user_in_db(confirmed=True, email="*****@*****.**" % i)) self.app.post('/confirmation/send?count=3&query=2') sent_email_addresses = [ x[1]['data']['to'] for x in mock.call_args_list ] self.assertEqual(len(sent_email_addresses), 3) for address in sent_email_addresses: self.assertIn(address, VALID_RESULT_ADDRESSES)
def test_should_save_incoming_emails_in_workshop_and_forward_to_users( self, requests_mock): # Given a database with one workshop self.db.workshops.insert( workshop_in_db(with_user=True, with_mail=False)) self.db.users.insert(user_in_db(confirmed=True)) # When rv = self.mailgun_sends_email() # Then self.assertEqual(1, len(self.db.workshops.find_one()['emails'])) self.assertEqual(1, requests_mock.post.call_count) assert_mailgun(requests_mock, to=USER_EMAIL_ADDRESS, subject='Warsjawa - test_workshop: %s' % SECOND_MAIL_SUBJECT)
def user_and_workshop_exists(self, user=user_in_db(confirmed=True), workshop=workshop_in_db(with_user=False, with_mail=True)): self.db.users.insert(user) self.db.workshops.insert(workshop)
def test_should_mark_user_as_confirmed(self): self.db.users.insert(user_in_db(confirmed=True)) self.app.get('/confirmation/%s' % USER_EMAIL_ADDRESS) self.assertEqual(self.db.users.find_one({"email": USER_EMAIL_ADDRESS})['isConfirmedTwice'], True)