Exemplo n.º 1
0
    def test_merge_users(self):
        """
        Test to verify merger of user accounts and return new user
        """
        # Scenario 1: if first user's created_at date younger than second user's created_at
        crusoe = self.fixtures.crusoe
        batdog = models.User(username=u"batdog", fullname=u"Batdog")
        db.session.add(batdog)
        db.session.commit()
        merged = models.merge_users(crusoe, batdog)
        self.assertEqual(merged, crusoe)
        self.assertIsInstance(merged, models.User)
        # because the logic is to merge into older account
        self.assertEqual(crusoe.status, 0)
        self.assertEqual(batdog.status, 2)

        # Scenario 1: if second user's created_at date older than first user 's created_at
        tyrion = models.User(username=u'tyrion', fullname=u'Tyrion Lannister')
        db.session.add(tyrion)
        db.session.commit()
        subramanian = models.User(username=u'subramanian',
                                  fullname=u'Tyrion subramanian')
        db.session.add(subramanian)
        db.session.commit()
        merged = models.merge_users(subramanian, tyrion)
        self.assertEqual(merged, tyrion)
        self.assertIsInstance(merged, models.User)
        # because the logic is to merge into older account
        self.assertEqual(tyrion.status, 0)
        self.assertEqual(subramanian.status, 2)
Exemplo n.º 2
0
    def test_merge_users(self):
        """
        Test to verify merger of user accounts and return new user
        """
        # Scenario 1: if first user's created_at date younger than second user's created_at
        crusoe = self.fixtures.crusoe
        batdog = models.User(username=u"batdog", fullname=u"Batdog")
        db.session.add(batdog)
        db.session.commit()
        merged = models.merge_users(crusoe, batdog)
        self.assertEqual(merged, crusoe)
        self.assertIsInstance(merged, models.User)
        # because the logic is to merge into older account
        self.assertEqual(crusoe.status, 0)
        self.assertEqual(batdog.status, 2)

        # Scenario 1: if second user's created_at date older than first user 's created_at
        tyrion = models.User(username=u'tyrion', fullname=u'Tyrion Lannister')
        db.session.add(tyrion)
        db.session.commit()
        subramanian = models.User(username=u'subramanian', fullname=u'Tyrion subramanian')
        db.session.add(subramanian)
        db.session.commit()
        merged = models.merge_users(subramanian, tyrion)
        self.assertEqual(merged, tyrion)
        self.assertIsInstance(merged, models.User)
        # because the logic is to merge into older account
        self.assertEqual(tyrion.status, 0)
        self.assertEqual(subramanian.status, 2)
Exemplo n.º 3
0
def account_merge():
    if 'merge_buid' not in session:
        return redirect(get_next_url(), code=302)
    other_user = User.get(buid=session['merge_buid'])
    if other_user is None:
        session.pop('merge_buid', None)
        return redirect(get_next_url(), code=302)
    form = ProfileMergeForm()
    if form.validate_on_submit():
        if 'merge' in request.form:
            new_user = merge_users(current_auth.user, other_user)
            login_internal(new_user)
            flash(_("Your accounts have been merged"), 'success')
            session.pop('merge_buid', None)
            db.session.commit()
            user_data_changed.send(new_user, changes=['merge'])
            return redirect(get_next_url(), code=303)
        else:
            session.pop('merge_buid', None)
            return redirect(get_next_url(), code=303)
    return render_template(
        'merge.html.jinja2',
        form=form,
        user=current_auth.user,
        other_user=other_user,
        login_registry=login_registry,
    )
Exemplo n.º 4
0
 def test_user_all(self):
     """
     Test for User's all method
     """
     # scenario 1: when neither buids or usernames are passed
     with self.assertRaises(Exception):
         models.User.all()
     crusoe = self.fixtures.crusoe
     oakley = self.fixtures.oakley
     expected_result = [crusoe, oakley]
     # scenario 2: when both buids and usernames are passed
     lookup_by_both = models.User.all(buids=[crusoe.buid],
                                      usernames=[oakley.username])
     self.assertIsInstance(lookup_by_both, list)
     self.assertCountEqual(lookup_by_both, expected_result)
     # scenario 3: when only buids are passed
     lookup_by_buids = models.User.all(buids=[crusoe.buid, oakley.buid])
     self.assertIsInstance(lookup_by_buids, list)
     self.assertCountEqual(lookup_by_buids, expected_result)
     # scenario 4: when only usernames are passed
     lookup_by_usernames = models.User.all(
         usernames=[crusoe.username, oakley.username])
     self.assertIsInstance(lookup_by_usernames, list)
     self.assertCountEqual(lookup_by_usernames, expected_result)
     # scenario 5: when defercols is set to True
     lookup_by_usernames_defercols = models.User.all(
         usernames=[crusoe.username, oakley.username], defercols=True)
     lookup_by_usernames_defercols
     self.assertIsInstance(lookup_by_usernames, list)
     self.assertCountEqual(lookup_by_usernames, expected_result)
     # scenario 6: when user.status is active
     hannibal = models.User(username='******')
     hannibal.status = models.USER_STATUS.ACTIVE
     db.session.add(hannibal)
     db.session.commit()
     lookup_by_buid_status = models.User.all(usernames=[hannibal.username])
     self.assertIsInstance(lookup_by_buid_status, list)
     self.assertEqual(lookup_by_buid_status[0].status, hannibal.status)
     # scenario 7 : when user.status is USER_STATUS.MERGED
     jykll = models.User()
     hyde = models.User()
     db.session.add_all([jykll, hyde])
     db.session.commit()
     merged_user = models.merge_users(jykll, hyde)
     merged_user
     db.session.commit()
     lookup_by_buid_merged = models.User.all(buids=[hyde.buid])
     self.assertIsInstance(lookup_by_buid_merged, list)
     self.assertEqual(lookup_by_buid_merged[0].username, jykll.username)
Exemplo n.º 5
0
    def test_name_transfer(self):
        assert self.fixtures.nameless.username is None
        assert models.AccountName.get('newname') is None
        newname = models.User(username='******', fullname="New Name")
        db.session.add(newname)
        db.session.commit()
        assert models.AccountName.get('newname') is not None
        assert newname.username == 'newname'

        merged = models.merge_users(self.fixtures.nameless, newname)
        assert merged is not newname
        assert merged is self.fixtures.nameless
        assert newname.username is None
        assert merged.username == 'newname'
        assert self.fixtures.nameless.username == 'newname'
Exemplo n.º 6
0
    def test_name_transfer(self):
        assert self.fixtures.nameless.username is None
        assert models.Name.get(u'newname') is None
        newname = models.User(username=u'newname', fullname="New Name")
        db.session.add(newname)
        db.session.commit()
        assert models.Name.get(u'newname') is not None
        assert newname.username == u'newname'

        merged = models.merge_users(self.fixtures.nameless, newname)
        assert merged is not newname
        assert merged is self.fixtures.nameless
        assert newname.username is None
        assert merged.username == u'newname'
        assert self.fixtures.nameless.username == u'newname'
Exemplo n.º 7
0
 def test_useroldid_get(self):
     """
     Test for verifying creation and retrieval of UserOldId instance
     """
     crusoe = self.fixtures.crusoe
     bathound = models.User(username="******", fullname="Bathound")
     db.session.add(bathound)
     db.session.commit()
     merged = models.merge_users(crusoe, bathound)
     if merged == crusoe:
         other = bathound
     else:
         other = crusoe
     query_for_olduser = models.UserOldId.get(other.uuid)
     self.assertIsInstance(query_for_olduser, models.UserOldId)
     self.assertEqual(query_for_olduser.olduser, other)
Exemplo n.º 8
0
 def test_UserOldId_get(self):
     """
     Test for verifying creation and retrieval of UserOldId instance
     """
     crusoe = self.fixtures.crusoe
     bathound = models.User(username=u"bathound", fullname=u"Bathound")
     db.session.add(bathound)
     db.session.commit()
     merged = models.merge_users(crusoe, bathound)
     if merged == crusoe:
         other = bathound
     else:
         other = crusoe
     query_for_olduser = models.UserOldId.get(other.uuid)
     self.assertIsInstance(query_for_olduser, models.UserOldId)
     self.assertEqual(query_for_olduser.olduser, other)
Exemplo n.º 9
0
 def test_User_all(self):
     """
     Test for User's all method
     """
     # scenario 1: when neither buids or usernames are passed
     with self.assertRaises(Exception):
         models.User.all()
     crusoe = self.fixtures.crusoe
     oakley = self.fixtures.oakley
     expected_result = [crusoe, oakley]
     # scenario 2: when both buids and usernames are passed
     lookup_by_both = models.User.all(buids=[crusoe.buid], usernames=[oakley.username])
     self.assertIsInstance(lookup_by_both, list)
     self.assertItemsEqual(lookup_by_both, expected_result)
     # scenario 3: when only buids are passed
     lookup_by_buids = models.User.all(buids=[crusoe.buid, oakley.buid])
     self.assertIsInstance(lookup_by_buids, list)
     self.assertItemsEqual(lookup_by_buids, expected_result)
     # scenario 4: when only usernames are passed
     lookup_by_usernames = models.User.all(usernames=[crusoe.username, oakley.username])
     self.assertIsInstance(lookup_by_usernames, list)
     self.assertItemsEqual(lookup_by_usernames, expected_result)
     # scenario 5: when defercols is set to True
     lookup_by_usernames_defercols = models.User.all(usernames=[crusoe.username, oakley.username], defercols=True)
     lookup_by_usernames_defercols  # NOQA
     self.assertIsInstance(lookup_by_usernames, list)
     self.assertItemsEqual(lookup_by_usernames, expected_result)
     # scenario 6: when user.status is active
     hannibal = models.User(username=u'hannibal')
     hannibal.status = models.USER_STATUS.ACTIVE
     db.session.add(hannibal)
     db.session.commit()
     lookup_by_buid_status = models.User.all(usernames=[hannibal.username])
     self.assertIsInstance(lookup_by_buid_status, list)
     self.assertEqual(lookup_by_buid_status[0].status, hannibal.status)
     # scenario 7 : when user.status is USER_STATUS.MERGED
     jykll = models.User()
     hyde = models.User()
     db.session.add_all([jykll, hyde])
     db.session.commit()
     merged_user = models.merge_users(jykll, hyde)
     merged_user  # NOQA
     db.session.commit()
     lookup_by_buid_merged = models.User.all(buids=[hyde.buid])
     self.assertIsInstance(lookup_by_buid_merged, list)
     self.assertEqual(lookup_by_buid_merged[0].username, jykll.username)
Exemplo n.º 10
0
 def test_user_merged_user(self):
     """
     Test for checking if user had a old id
     """
     # ## Merge a user onto an older user ###
     crusoe = self.fixtures.crusoe
     crusoe2 = models.User(username=u"batdog", fullname=u"Batdog")
     db.session.add(crusoe2)
     db.session.commit()
     merged_user = models.merge_users(crusoe, crusoe2)
     db.session.commit()
     # ## DONE ###
     self.assertIsInstance(merged_user, models.User)
     # because the logic is to merge into older account so merge status set on newer account
     self.assertEqual(crusoe.status, 0)
     self.assertEqual(crusoe2.status, 2)
     self.assertEqual(merged_user.username, u"crusoe")
     self.assertIsInstance(merged_user.oldids, InstrumentedList)
     assert u'of User crusoe "Crusoe Celebrity Dachshund">' in repr(merged_user.oldids)
Exemplo n.º 11
0
 def test_user_merged_user(self):
     """
     Test for checking if user had a old id
     """
     # ## Merge a user onto an older user ###
     crusoe = self.fixtures.crusoe
     crusoe2 = models.User(username="******", fullname="Crusoe2")
     db.session.add(crusoe2)
     db.session.commit()
     merged_user = models.merge_users(crusoe, crusoe2)
     db.session.commit()
     # ## DONE ###
     self.assertIsInstance(merged_user, models.User)
     # because the logic is to merge into older account so merge status set on newer account
     self.assertEqual(crusoe.status, 0)
     self.assertEqual(crusoe2.status, 2)
     self.assertEqual(merged_user.username, "crusoe")
     self.assertIsInstance(merged_user.oldids, InstrumentedList)
     self.assertCountEqual(crusoe.oldids, merged_user.oldids)
Exemplo n.º 12
0
def profile_merge():
    if "merge_userid" not in session:
        return redirect(get_next_url(), code=302)
    other_user = User.query.filter_by(userid=session["merge_userid"]).first()
    if other_user is None:
        session.pop("merge_userid", None)
        return redirect(get_next_url(), code=302)
    form = ProfileMergeForm()
    if form.validate_on_submit():
        if "merge" in request.form:
            new_user = merge_users(g.user, other_user)
            login_internal(new_user)
            user_data_changed.send(new_user, changes=["merge"])
            flash("Your accounts have been merged.", "success")
            session.pop("merge_userid", None)
            return redirect(get_next_url(), code=303)
        else:
            session.pop("merge_userid", None)
            return redirect(get_next_url(), code=303)
    return render_template("merge.html", form=form, user=g.user, other_user=other_user, login_registry=login_registry)
Exemplo n.º 13
0
 def test_User_get(self):
     """
     Test for User's get method
     """
     # scenario 1: if both username and buid not passed
     with self.assertRaises(TypeError):
         models.User.get()
     crusoe = self.fixtures.crusoe
     piglet = self.fixtures.piglet
     # scenario 2: if buid is passed
     lookup_by_buid = models.User.get(buid=crusoe.buid)
     self.assertIsInstance(lookup_by_buid, models.client.User)
     self.assertEqual(lookup_by_buid.buid, crusoe.buid)
     # scenario 3: if username is passed
     lookup_by_username = models.User.get(username=u"crusoe")
     self.assertIsInstance(lookup_by_username, models.User)
     self.assertEqual(lookup_by_username.username, u"crusoe")
     # scenario 4: if defercols is set to True
     lookup_by_username = models.User.get(username=u"crusoe",
                                          defercols=True)
     self.assertIsInstance(lookup_by_username, models.User)
     self.assertEqual(lookup_by_username.username, u"crusoe")
     # scenario 5: when user.status is active
     lector = models.User()
     lector.status = models.USER_STATUS.ACTIVE
     db.session.add(lector)
     db.session.commit()
     lookup_by_buid_status = models.User.get(buid=lector.buid)
     self.assertIsInstance(lookup_by_buid_status, models.User)
     self.assertEqual(lookup_by_buid_status.status, lector.status)
     # scenario 6 : when user.status is USER_STATUS.MERGED
     piglet = self.fixtures.piglet
     piggy = models.User(username=u'piggy')
     db.session.add(piggy)
     db.session.commit()
     merged_user = models.merge_users(piglet, piggy)
     merged_user  # NOQA
     db.session.commit()
     lookup_by_buid_merged = models.User.get(buid=piggy.buid)
     self.assertIsInstance(lookup_by_buid_merged, models.User)
     self.assertEqual(lookup_by_buid_merged.username, piglet.username)
Exemplo n.º 14
0
 def test_User_get(self):
     """
     Test for User's get method
     """
     # scenario 1: if both username and buid not passed
     with self.assertRaises(TypeError):
         models.User.get()
     crusoe = self.fixtures.crusoe
     piglet = self.fixtures.piglet
     # scenario 2: if buid is passed
     lookup_by_buid = models.User.get(buid=crusoe.buid)
     self.assertIsInstance(lookup_by_buid, models.client.User)
     self.assertEqual(lookup_by_buid.buid, crusoe.buid)
     # scenario 3: if username is passed
     lookup_by_username = models.User.get(username=u"crusoe")
     self.assertIsInstance(lookup_by_username, models.User)
     self.assertEqual(lookup_by_username.username, u"crusoe")
     # scenario 4: if defercols is set to True
     lookup_by_username = models.User.get(username=u"crusoe", defercols=True)
     self.assertIsInstance(lookup_by_username, models.User)
     self.assertEqual(lookup_by_username.username, u"crusoe")
     # scenario 5: when user.status is active
     lector = models.User()
     lector.status = models.USER_STATUS.ACTIVE
     db.session.add(lector)
     db.session.commit()
     lookup_by_buid_status = models.User.get(buid=lector.buid)
     self.assertIsInstance(lookup_by_buid_status, models.User)
     self.assertEqual(lookup_by_buid_status.status, lector.status)
     # scenario 6 : when user.status is USER_STATUS.MERGED
     piglet = self.fixtures.piglet
     piggy = models.User(username=u'piggy')
     db.session.add(piggy)
     db.session.commit()
     merged_user = models.merge_users(piglet, piggy)
     merged_user  # NOQA
     db.session.commit()
     lookup_by_buid_merged = models.User.get(buid=piggy.buid)
     self.assertIsInstance(lookup_by_buid_merged, models.User)
     self.assertEqual(lookup_by_buid_merged.username, piglet.username)
Exemplo n.º 15
0
def account_merge():
    if 'merge_buid' not in session:
        return redirect(get_next_url(), code=302)
    other_user = User.get(buid=session['merge_buid'])
    if other_user is None:
        session.pop('merge_buid', None)
        return redirect(get_next_url(), code=302)
    form = ProfileMergeForm()
    if form.validate_on_submit():
        if 'merge' in request.form:
            new_user = merge_users(current_auth.user, other_user)
            login_internal(new_user)
            flash(_("Your accounts have been merged"), 'success')
            session.pop('merge_buid', None)
            db.session.commit()
            user_data_changed.send(new_user, changes=['merge'])
            return redirect(get_next_url(), code=303)
        else:
            session.pop('merge_buid', None)
            return redirect(get_next_url(), code=303)
    return render_template('merge.html.jinja2', form=form, user=current_auth.user, other_user=other_user,
        login_registry=login_registry)
Exemplo n.º 16
0
def profile_merge():
    if 'merge_userid' not in session:
        return redirect(get_next_url(), code=302)
    other_user = User.get(userid=session['merge_userid'])
    if other_user is None:
        session.pop('merge_userid', None)
        return redirect(get_next_url(), code=302)
    form = ProfileMergeForm()
    if form.validate_on_submit():
        if 'merge' in request.form:
            new_user = merge_users(g.user, other_user)
            login_internal(new_user)
            user_data_changed.send(new_user, changes=['merge'])
            flash("Your accounts have been merged.", 'success')
            session.pop('merge_userid', None)
            return redirect(get_next_url(), code=303)
        else:
            session.pop('merge_userid', None)
            return redirect(get_next_url(), code=303)
    return render_template("merge.html",
                           form=form,
                           user=g.user,
                           other_user=other_user,
                           login_registry=login_registry)