示例#1
0
    def test_send_with_sendgrid_success(self):
        mock_client = mock.MagicMock()
        mock_client.send.return_value = 200, 'success'
        from_addr, to_addr = fake_email(), fake_email()
        category1, category2 = fake.word(), fake.word()
        subject = fake.bs()
        message = fake.text()
        ret = _send_with_sendgrid(
            from_addr=from_addr,
            to_addr=to_addr,
            subject=subject,
            message=message,
            mimetype='html',
            client=mock_client,
            categories=(category1, category2)
        )
        assert_true(ret)

        assert_equal(mock_client.send.call_count, 1)
        # First call's argument should be a Mail object with
        # the correct configuration
        first_call_arg = mock_client.send.call_args[0][0]
        assert_is_instance(first_call_arg, sendgrid.Mail)
        assert_equal(first_call_arg.from_email, from_addr)
        assert_equal(first_call_arg.to[0], to_addr)
        assert_equal(first_call_arg.subject, subject)
        assert_in(message, first_call_arg.html)
        # Categories are set
        assert_equal(first_call_arg.smtpapi.data['category'], (category1, category2))
示例#2
0
    def test_send_with_sendgrid_success(self):
        mock_client = mock.MagicMock()
        mock_client.send.return_value = 200, 'success'
        from_addr, to_addr = fake_email(), fake_email()
        category1, category2 = fake.word(), fake.word()
        subject = fake.bs()
        message = fake.text()
        ret = _send_with_sendgrid(from_addr=from_addr,
                                  to_addr=to_addr,
                                  subject=subject,
                                  message=message,
                                  mimetype='html',
                                  client=mock_client,
                                  categories=(category1, category2))
        assert_true(ret)

        assert_equal(mock_client.send.call_count, 1)
        # First call's argument should be a Mail object with
        # the correct configuration
        first_call_arg = mock_client.send.call_args[0][0]
        assert_is_instance(first_call_arg, sendgrid.Mail)
        assert_equal(first_call_arg.from_email, from_addr)
        assert_equal(first_call_arg.to[0], to_addr)
        assert_equal(first_call_arg.subject, subject)
        assert_in(message, first_call_arg.html)
        # Categories are set
        assert_equal(first_call_arg.smtpapi.data['category'],
                     (category1, category2))
示例#3
0
 def test_send_with_sendgrid_failure_returns_false(self):
     mock_client = mock.MagicMock()
     mock_client.send.return_value = 400, 'failed'
     from_addr, to_addr = fake_email(), fake_email()
     subject = fake.bs()
     message = fake.text()
     ret = _send_with_sendgrid(from_addr=from_addr,
                               to_addr=to_addr,
                               subject=subject,
                               message=message,
                               client=mock_client)
     assert_false(ret)
示例#4
0
    def test_correct_name_shows_in_contributor_list(self):
        name1, email = fake.name(), fake_email()
        UnregUserFactory(fullname=name1, email=email)
        name2, email = fake.name(), fake_email()
        # Added with different name
        self.project.add_unregistered_contributor(fullname=name2,
            email=email, auth=Auth(self.referrer))
        self.project.save()

        res = self.app.get(self.project.url, auth=self.referrer.auth)
        # Correct name is shown
        assert_in_html(name2, res)
        assert_not_in(name1, res)
示例#5
0
    def test_correct_name_shows_in_contributor_list(self):
        name1, email = fake.name(), fake_email()
        UnregUserFactory(fullname=name1, email=email)
        name2, email = fake.name(), fake_email()
        # Added with different name
        self.project.add_unregistered_contributor(fullname=name2,
            email=email, auth=Auth(self.referrer))
        self.project.save()

        res = self.app.get(self.project.url, auth=self.referrer.auth)
        # Correct name is shown
        assert_in_html(name2, res)
        assert_not_in(name1, res)
示例#6
0
    def test_build_create_user_time_conflict(self):
        # Test that build and create user factories do not create conflicting usernames
        # because they occured quickly
        user_email_one = fake_email()
        user_email_two = fake_email()
        assert user_email_one != user_email_two

        user_one_build = UserFactory.build()
        user_two_build = UserFactory.build()
        assert user_one_build.username != user_two_build.username

        user_one_create = UserFactory()
        user_two_create = UserFactory()
        assert user_one_create.username != user_two_create.username
示例#7
0
    def test_build_create_user_time_conflict(self):
        # Test that build and create user factories do not create conflicting usernames
        # because they occured quickly
        user_email_one = fake_email()
        user_email_two = fake_email()
        assert user_email_one != user_email_two

        user_one_build = UserFactory.build()
        user_two_build = UserFactory.build()
        assert user_one_build.username != user_two_build.username

        user_one_create = UserFactory()
        user_two_create = UserFactory()
        assert user_one_create.username != user_two_create.username
示例#8
0
 def test_send_with_sendgrid_failure_returns_false(self):
     mock_client = mock.MagicMock()
     mock_client.send.return_value = 400, 'failed'
     from_addr, to_addr = fake_email(), fake_email()
     subject = fake.bs()
     message = fake.text()
     ret = _send_with_sendgrid(
         from_addr=from_addr,
         to_addr=to_addr,
         subject=subject,
         message=message,
         mimetype='html',
         client=mock_client
     )
     assert_false(ret)
示例#9
0
    def test_claim_user_registered_preprint_with_correct_password(self):
        preprint = PreprintFactory(creator=self.referrer)
        name, email = fake.name(), fake_email()
        unreg_user = preprint.add_unregistered_contributor(
            fullname=name,
            email=email,
            auth=Auth(user=self.referrer)
        )
        reg_user = AuthUserFactory()  # NOTE: AuthUserFactory sets password as 'queenfan86'
        url = unreg_user.get_claim_url(preprint._id)
        # Follow to password re-enter page
        res = self.app.get(url, auth=reg_user.auth).follow(auth=reg_user.auth)

        # verify that the "Claim Account" form is returned
        assert_in('Claim Contributor', res.body)

        form = res.forms['claimContributorForm']
        form['password'] = '******'
        res = form.submit(auth=reg_user.auth)

        preprint.reload()
        unreg_user.reload()
        # user is now a contributor to the project
        assert_in(reg_user, preprint.contributors)

        # the unregistered user (unreg_user) is removed as a contributor, and their
        assert_not_in(unreg_user, preprint.contributors)

        # unclaimed record for the project has been deleted
        assert_not_in(preprint, unreg_user.unclaimed_records)
示例#10
0
 def setUp(self):
     super(TestClaimingAsARegisteredUser, self).setUp()
     self.referrer = AuthUserFactory()
     self.project = ProjectFactory(creator=self.referrer, is_public=True)
     name, email = fake.name(), fake_email()
     self.user = self.project.add_unregistered_contributor(
         fullname=name, email=email, auth=Auth(user=self.referrer))
     self.project.save()
示例#11
0
 def test_sees_is_redirected_if_user_already_logged_in(self):
     name, email = fake.name(), fake_email()
     new_user = self.project.add_unregistered_contributor(
         email=email, fullname=name, auth=Auth(self.referrer))
     self.project.save()
     existing = AuthUserFactory()
     claim_url = new_user.get_claim_url(self.project._primary_key)
     # a user is already logged in
     res = self.app.get(claim_url, auth=existing.auth, expect_errors=True)
     assert_equal(res.status_code, 302)
示例#12
0
 def test_registered_user_csl(self):
     # Tests the csl name for a registered user
     user = OSFUser.create_confirmed(username=fake_email(),
                                     password='******',
                                     fullname=fake.name())
     if user.is_registered:
         assert bool(user.csl_name() == {
             'given': user.csl_given_name,
             'family': user.family_name,
         })
示例#13
0
 def setUp(self):
     super(TestClaimingAsARegisteredUser, self).setUp()
     self.referrer = AuthUserFactory()
     self.project = ProjectFactory(creator=self.referrer, is_public=True)
     name, email = fake.name(), fake_email()
     self.user = self.project.add_unregistered_contributor(
         fullname=name,
         email=email,
         auth=Auth(user=self.referrer)
     )
     self.project.save()
示例#14
0
def create_fake_user():
    email = fake_email()
    name = fake.name()
    user = UserFactory(username=email, fullname=name,
                       is_registered=True, emails=[email],
                       date_registered=fake.date_time(tzinfo=pytz.UTC),
                   )
    user.set_password('faker123')
    user.save()
    logger.info('Created user: {0} <{1}>'.format(user.fullname, user.username))
    return user
示例#15
0
def create_fake_user():
    email = fake_email()
    name = fake.name()
    user = UserFactory(username=email, fullname=name,
                       is_registered=True, emails=[email],
                       date_registered=fake.date_time(tzinfo=pytz.UTC),
                   )
    user.set_password('faker123')
    user.save()
    logger.info('Created user: {0} <{1}>'.format(user.fullname, user.username))
    return user
示例#16
0
 def test_sees_is_redirected_if_user_already_logged_in(self):
     name, email = fake.name(), fake_email()
     new_user = self.project.add_unregistered_contributor(
         email=email,
         fullname=name,
         auth=Auth(self.referrer)
     )
     self.project.save()
     existing = AuthUserFactory()
     claim_url = new_user.get_claim_url(self.project._primary_key)
     # a user is already logged in
     res = self.app.get(claim_url, auth=existing.auth, expect_errors=True)
     assert_equal(res.status_code, 302)
示例#17
0
 def test_registered_user_csl(self):
     # Tests the csl name for a registered user
     user = OSFUser.create_confirmed(
         username=fake_email(), password='******', fullname=fake.name()
     )
     if user.is_registered:
         assert bool(
             user.csl_name() ==
             {
                 'given': user.csl_given_name,
                 'family': user.family_name,
             }
         )
示例#18
0
def create_fake_user():
    email = fake_email()
    name = fake.name()
    parsed = impute_names(name)
    user = UserFactory(username=email,
                       fullname=name,
                       is_registered=True,
                       is_claimed=True,
                       date_registered=fake.date_time(),
                       emails=[email],
                       **parsed)
    user.set_password('faker123')
    user.save()
    return user
示例#19
0
 def test_user_can_set_password_on_claim_page(self):
     name, email = fake.name(), fake_email()
     new_user = self.project.add_unregistered_contributor(
         email=email, fullname=name, auth=Auth(self.referrer))
     self.project.save()
     claim_url = new_user.get_claim_url(self.project._primary_key)
     res = self.app.get(claim_url)
     self.project.reload()
     assert_in('Set Password', res)
     form = res.forms['setPasswordForm']
     #form['username'] = new_user.username #Removed as long as E-mail can't be updated.
     form['password'] = '******'
     form['password2'] = 'killerqueen'
     res = form.submit().follow()
     new_user.reload()
     assert_true(new_user.check_password('killerqueen'))
示例#20
0
 def test_unregistered_user_csl(self):
     # Tests the csl name for an unregistered user
     referrer = UserFactory()
     project = NodeFactory(creator=referrer)
     user = UnregUserFactory()
     user.add_unclaimed_record(project,
                               given_name=user.fullname,
                               referrer=referrer,
                               email=fake_email())
     user.save()
     name = user.unclaimed_records[project._primary_key]['name'].split(' ')
     family_name = name[-1]
     given_name = ' '.join(name[:-1])
     assert bool(
         user.csl_name(project._id) == {
             'given': given_name,
             'family': family_name,
         })
示例#21
0
 def test_user_can_set_password_on_claim_page(self):
     name, email = fake.name(), fake_email()
     new_user = self.project.add_unregistered_contributor(
         email=email,
         fullname=name,
         auth=Auth(self.referrer)
     )
     self.project.save()
     claim_url = new_user.get_claim_url(self.project._primary_key)
     res = self.app.get(claim_url)
     self.project.reload()
     assert_in('Set Password', res)
     form = res.forms['setPasswordForm']
     #form['username'] = new_user.username #Removed as long as E-mail can't be updated.
     form['password'] = '******'
     form['password2'] = 'killerqueen'
     res = form.submit().follow()
     new_user.reload()
     assert_true(new_user.check_password('killerqueen'))
示例#22
0
 def test_unregistered_user_csl(self):
     # Tests the csl name for an unregistered user
     referrer = UserFactory()
     project = NodeFactory(creator=referrer)
     user = UnregUserFactory()
     user.add_unclaimed_record(project,
         given_name=user.fullname, referrer=referrer,
         email=fake_email())
     user.save()
     name = user.unclaimed_records[project._primary_key]['name'].split(' ')
     family_name = name[-1]
     given_name = ' '.join(name[:-1])
     assert bool(
         user.csl_name(project._id) ==
         {
             'given': given_name,
             'family': family_name,
         }
     )
示例#23
0
 def test_cannot_set_email_to_a_user_that_already_exists(self):
     reg_user = UserFactory()
     name, email = fake.name(), fake_email()
     new_user = self.project.add_unregistered_contributor(
         email=email, fullname=name, auth=Auth(self.referrer))
     self.project.save()
     # Goes to claim url and successfully claims account
     claim_url = new_user.get_claim_url(self.project._primary_key)
     res = self.app.get(claim_url)
     self.project.reload()
     assert_in('Set Password', res)
     form = res.forms['setPasswordForm']
     # Fills out an email that is the username of another user
     form['username'] = reg_user.username
     form['password'] = '******'
     form['password2'] = 'killerqueen'
     res = form.submit().maybe_follow(expect_errors=True)
     assert_in(language.ALREADY_REGISTERED.format(email=reg_user.username),
               res)
示例#24
0
    def test_unregistered_users_names_are_project_specific(self):
        name1, name2, email = fake.name(), fake.name(), fake_email()
        project2 = ProjectFactory(creator=self.referrer)
        # different projects use different names for the same unreg contributor
        self.project.add_unregistered_contributor(email=email,
                                                  fullname=name1,
                                                  auth=Auth(self.referrer))
        self.project.save()
        project2.add_unregistered_contributor(email=email,
                                              fullname=name2,
                                              auth=Auth(self.referrer))
        project2.save()
        self.app.authenticate(*self.referrer.auth)
        # Each project displays a different name in the contributor list
        res = self.app.get(self.project.url)
        assert_in_html(name1, res)

        res2 = self.app.get(project2.url)
        assert_in_html(name2, res2)
示例#25
0
    def test_unregistered_users_names_are_project_specific(self):
        name1, name2, email = fake.name(), fake.name(), fake_email()
        project2 = ProjectFactory(creator=self.referrer)
        # different projects use different names for the same unreg contributor
        self.project.add_unregistered_contributor(
            email=email,
            fullname=name1,
            auth=Auth(self.referrer)
        )
        self.project.save()
        project2.add_unregistered_contributor(
            email=email,
            fullname=name2,
            auth=Auth(self.referrer)
        )
        project2.save()
        self.app.authenticate(*self.referrer.auth)
        # Each project displays a different name in the contributor list
        res = self.app.get(self.project.url)
        assert_in_html(name1, res)

        res2 = self.app.get(project2.url)
        assert_in_html(name2, res2)
示例#26
0
 def test_cannot_set_email_to_a_user_that_already_exists(self):
     reg_user = UserFactory()
     name, email = fake.name(), fake_email()
     new_user = self.project.add_unregistered_contributor(
         email=email,
         fullname=name,
         auth=Auth(self.referrer)
     )
     self.project.save()
     # Goes to claim url and successfully claims account
     claim_url = new_user.get_claim_url(self.project._primary_key)
     res = self.app.get(claim_url)
     self.project.reload()
     assert_in('Set Password', res)
     form = res.forms['setPasswordForm']
     # Fills out an email that is the username of another user
     form['username'] = reg_user.username
     form['password'] = '******'
     form['password2'] = 'killerqueen'
     res = form.submit().maybe_follow(expect_errors=True)
     assert_in(
         language.ALREADY_REGISTERED.format(email=reg_user.username),
         res
     )