Example #1
0
    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"}]""")
Example #2
0
    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])
Example #3
0
    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)
Example #4
0
    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)
Example #5
0
    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'])
Example #6
0
    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()))
Example #10
0
    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()))
Example #14
0
    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)
Example #18
0
 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)
 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)