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)
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)
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)
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)
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(different_name, res)
def test_get_most_in_common_contributors(self): # project 1 (contrib 1, contrib 2, unreg_contrib 3) # - component 1 (contrib 1) # project 2 - add should show contrib 1 first (2 links), contrib 2 second (1 link) contributor_1 = AuthUserFactory() contributor_2 = AuthUserFactory() self.project.add_contributor(contributor_1, auth=self.auth) self.project.add_contributor(contributor_2, auth=self.auth) # has one unregistered contributor self.project.add_unregistered_contributor( fullname=fake.name(), email=fake.email(), auth=self.auth, ) self.project.save() component = NodeFactory(parent=self.project, creator=self.user) component.add_contributor(contributor_1, auth=self.auth) component.save() project_2 = ProjectFactory(creator=self.user) project_2.add_contributor(contributor_1, auth=self.auth) url = project_2.api_url_for('get_most_in_common_contributors') res = self.app.get(url, auth=self.user.auth) project_2.reload() res_contribs = res.json['contributors'] assert_equal(len(res.json['contributors']), 2) assert_equal(contributor_1._id, res_contribs[0]['id']) assert_equal(res_contribs[0]['n_projects_in_common'], 2) assert_equal(contributor_2._id, res_contribs[1]['id']) assert_equal(res_contribs[1]['n_projects_in_common'], 1)
def test_cannot_go_to_claim_url_after_setting_password(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() # 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'] #form['username'] = new_user.username #Removed as long as the E-mail can't be changed form['password'] = '******' form['password2'] = 'killerqueen' res = form.submit().maybe_follow() # logs out res = self.app.get('/logout/').maybe_follow() # tries to go to claim url again res = self.app.get(claim_url, expect_errors=True) assert_equal(res.status_code, 400) assert_in('already been claimed', res)
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()
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)
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()
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)
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(name1, res) res2 = self.app.get(project2.url) assert_in(name2, res2)
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)
def test_get_recently_added_contributors(self): project = ProjectFactory(creator=self.user) project.add_contributor(AuthUserFactory(), auth=self.auth) project.add_contributor(AuthUserFactory(), auth=self.auth) # has one unregistered contributor project.add_unregistered_contributor(fullname=fake.name(), email=fake.email(), auth=self.auth) project.save() url = self.project.api_url_for("get_recently_added_contributors") res = self.app.get(url, auth=self.user.auth) project.reload() recent = [c for c in self.user.recently_added if c.is_active] assert_equal(len(res.json["contributors"]), len(recent))
def test_update_published_does_not_send_contributor_added_for_inactive_users( self): unpublished = PreprintFactory(creator=self.user, is_published=False) unpublished.node.add_unregistered_contributor(fullname=fake.name(), email=fake.email(), auth=Auth(self.user), save=True) url = '/{}preprints/{}/'.format(API_BASE, unpublished._id) payload = build_preprint_update_payload( unpublished._id, attributes={'is_published': True}) with capture_signals() as captured: res = self.app.patch_json_api(url, payload, auth=self.user.auth) # Signal not sent, because contributor is not registered assert_false(captured[contributor_added])
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
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, verification_key=security.random_string(15), date_registered=fake.date_time(), emails=[email], **parsed) user.set_password('faker123') user.save() return user
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"))
def test_get_recently_added_contributors(self): project = ProjectFactory(creator=self.user) project.add_contributor(AuthUserFactory(), auth=self.auth) project.add_contributor(AuthUserFactory(), auth=self.auth) # has one unregistered contributor project.add_unregistered_contributor( fullname=fake.name(), email=fake.email(), auth=self.auth, ) project.save() url = self.project.api_url_for('get_recently_added_contributors') res = self.app.get(url, auth=self.user.auth) project.reload() recent = [c for c in self.user.recently_added if c.is_active()] assert_equal(len(res.json['contributors']), len(recent))
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
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'))
def test_was_invited(self): referrer = UserFactory() node = NodeFactory(creator=referrer) name = fake.name() email = fake.email() user = node.add_unregistered_contributor( fullname=name, email=email, auth=Auth(user=referrer), ) user.register(email, 'secret') assert_true(is_invited(user)) user.is_invited = None user.save() main(dry_run=False) user.reload() assert_true(user.is_invited)
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, verification_key=security.random_string(15), date_registered=fake.date_time(), emails=[email], **parsed ) user.set_password('faker123') user.save() return user
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)
def test_unregistered_user_can_create_an_account(self): # User is added as an unregistered contributor to a project email, name = fake.email(), fake.name() self.project.add_unregistered_contributor(email=email, fullname=name, auth=Auth(self.referrer)) self.project.save() # Goes to registration page (instead of claiming their email) res = self.app.get('/account/').maybe_follow() form = res.forms['registerForm'] form['register-fullname'] = name form['register-username'] = email form['register-username2'] = email form['register-password'] = '******' form['register-password2'] = 'example' res = form.submit() # registered successfully assert_in(language.REGISTRATION_SUCCESS.format(email=email), res)
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 form['password'] = '******' form['password2'] = 'killerqueen' res = form.submit().maybe_follow() new_user.reload() # at settings page assert_equal(res.request.path, '/settings/') assert_in('Welcome to the OSF', res)
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)
def test_unregistered_user_can_create_an_account(self): # User is added as an unregistered contributor to a project email, name = fake.email(), fake.name() self.project.add_unregistered_contributor( email=email, fullname=name, auth=Auth(self.referrer) ) self.project.save() # Goes to registration page (instead of claiming their email) res = self.app.get('/account/').maybe_follow() form = res.forms['registerForm'] form['register-fullname'] = name form['register-username'] = email form['register-username2'] = email form['register-password'] = '******' form['register-password2'] = 'example' res = form.submit() # registered successfully assert_in(language.REGISTRATION_SUCCESS.format(email=email), res)
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().maybe_follow() new_user.reload() # at settings page assert_equal(res.request.path, '/settings/') assert_in('Welcome to the OSF', res)
def test_cannot_go_to_claim_url_after_setting_password(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() # 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'] form['username'] = new_user.username form['password'] = '******' form['password2'] = 'killerqueen' res = form.submit().maybe_follow() # logs out res = self.app.get('/logout/').maybe_follow() # tries to go to claim url again res = self.app.get(claim_url, expect_errors=True) assert_equal(res.status_code, 400) assert_in('already been claimed', res)