示例#1
0
    def test_unreg_user_can_register(self):
        user = UnregUserFactory()

        auth.register_unconfirmed(
            username=user.username,
            password='******',
            fullname='Rosie',
        )

        user.reload()

        assert_true(user.get_confirmation_token(user.username))
示例#2
0
    def test_unreg_user_can_register(self):
        user = UnregUserFactory()

        auth.register_unconfirmed(
            username=user.username,
            password='******',
            fullname='Rosie',
        )

        user.reload()

        assert_true(user.get_confirmation_token(user.username))
示例#3
0
    def test_unique_email_validator_with_unreg_user(self):
        class MockForm(Form):
            username = Field('Username',
                             [forms.UniqueEmail(allow_unregistered=True)])

        u = UnregUserFactory()
        f = MockForm(username=u.username)
        assert_true(f.validate())
示例#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_POST_retraction_does_not_send_email_to_unregistered_admins(
         self, mock_send_mail):
     unreg = UnregUserFactory()
     self.registration.add_contributor(
         unreg,
         auth=Auth(self.user),
         permissions=['read', 'write', 'admin'])
     self.registration.save()
     self.app.post_json(
         self.retraction_post_url,
         {'justification': ''},
         auth=self.user.auth,
     )
     # Only the creator gets an email; the unreg user does not get emailed
     assert_equal(mock_send_mail.call_count, 1)
示例#6
0
    def test_correct_display_name_is_shown_at_claim_page(self):
        original_name = fake.name()
        unreg = UnregUserFactory(fullname=original_name)

        different_name = fake.name()
        new_user = self.project.add_unregistered_contributor(
            email=unreg.username,
            fullname=different_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)
        # Correct name (different_name) should be on page
        assert_in_html(different_name, res)
示例#7
0
    def test_confirm_email(self, mock_mail):
        user = UnregUserFactory()

        auth.register_unconfirmed(
            username=user.username,
            password='******',
            fullname='Rosie',
        )

        user.reload()
        token = user.get_confirmation_token(user.username)

        res = self.app.get('/confirm/{}/{}'.format(user._id, token),
                           allow_redirects=False)
        res = res.follow()

        assert_equal(res.status_code, 302)
        assert_in('login?service=', res.location)

        user.reload()
        mock_mail.assert_called()
        assert_equal(len(mock_mail.call_args_list), 1)
        empty, kwargs = mock_mail.call_args
        kwargs['user'].reload()

        assert_equal(empty, ())
        assert_equal(
            kwargs, {
                'user': user,
                'mimetype': 'html',
                'mail': mails.WELCOME,
                'to_addr': user.username,
            })

        self.app.set_cookie(settings.COOKIE_NAME, user.get_or_create_cookie())
        res = self.app.get('/confirm/{}/{}'.format(user._id, token))

        res = res.follow()

        assert_equal(res.status_code, 302)
        assert_equal('/', urlparse.urlparse(res.location).path)
        assert_equal(len(mock_mail.call_args_list), 1)
        session = Session.objects.filter(
            data__auth_user_id=user._id).order_by('-modified').first()
        assert_equal(len(session.data['status']), 1)
    def test_withdraw_request_does_not_send_email_to_unregistered_admins(
            self, mock_send_mail, app, user, public_registration, public_url,
            public_payload):
        unreg = UnregUserFactory()
        with disconnected_from_listeners(contributor_added):
            public_registration.add_unregistered_contributor(
                unreg.fullname,
                unreg.email,
                auth=Auth(user),
                permissions=permissions.ADMIN,
                existing_user=unreg,
                save=True)

        res = app.put_json_api(public_url, public_payload, auth=user.auth)
        assert res.status_code == 200

        # Only the creator gets an email; the unreg user does not get emailed
        assert public_registration._contributors.count() == 2
        assert mock_send_mail.call_count == 1
示例#9
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,
         })
示例#10
0
    def test_confirm_email(self, mock_mail):
        user = UnregUserFactory()

        auth.register_unconfirmed(username=user.username,
                                  password='******',
                                  fullname='Rosie')

        user.reload()
        token = user.get_confirmation_token(user.username)

        res = self.app.get('/confirm/{}/{}'.format(user._id, token),
                           allow_redirects=False)
        res = res.follow()

        assert_equal(res.status_code, 302)
        assert_in('login?service=', res.location)

        user.reload()

        mock_mail.assert_called_with(
            osf_support_email=settings.OSF_SUPPORT_EMAIL,
            mimetype='html',
            storage_flag_is_active=False,
            to_addr=user.username,
            domain=settings.DOMAIN,
            user=user,
            mail=mails.WELCOME)

        self.app.set_cookie(settings.COOKIE_NAME, user.get_or_create_cookie())
        res = self.app.get('/confirm/{}/{}'.format(user._id, token))

        res = res.follow()

        assert_equal(res.status_code, 302)
        assert_equal('/', urlparse.urlparse(res.location).path)
        assert_equal(len(mock_mail.call_args_list), 1)
        session = Session.objects.filter(
            data__auth_user_id=user._id).order_by('-modified').first()
        assert_equal(len(session.data['status']), 1)
示例#11
0
    def test_confirm_email(self, mock_mail):
        user = UnregUserFactory()

        auth.register_unconfirmed(
            username=user.username,
            password='******',
            fullname='Rosie'
        )

        user.reload()
        token = user.get_confirmation_token(user.username)

        res = self.app.get('/confirm/{}/{}'.format(user._id, token), allow_redirects=False)
        res = res.follow()

        assert_equal(res.status_code, 302)
        assert_in('login?service=', res.location)

        user.reload()
        mock_mail.assert_called()
        assert_equal(len(mock_mail.call_args_list), 1)
        empty, kwargs = mock_mail.call_args
        kwargs['user'].reload()

        assert_equal(empty, ())
        assert_equal(kwargs, {
            'user': user,
            'mimetype': 'html',
            'mail': mails.WELCOME,
            'domain': settings.DOMAIN,
            'to_addr': user.username,
            'osf_support_email': settings.OSF_SUPPORT_EMAIL
        })

        self.app.set_cookie(settings.COOKIE_NAME, user.get_or_create_cookie())
        res = self.app.get('/confirm/{}/{}'.format(user._id, token))

        res = res.follow()

        assert_equal(res.status_code, 302)
        assert_equal('/', urlparse.urlparse(res.location).path)
        assert_equal(len(mock_mail.call_args_list), 1)
        session = Session.objects.filter(data__auth_user_id=user._id).order_by('-modified').first()
        assert_equal(len(session.data['status']), 1)
示例#12
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,
         }
     )