def _get_mgr_with(self, testuser, data):
        mgr = UserManager()
        # add the user first
        mgr.add_request(testuser)
        testuser.user_data = data
        mgr.update(testuser)
        mgr.finish_request()
        self.assertListEqual(list(mgr.list_users()), [testuser])
        self.assertFalse(mgr.is_request_pending())

        return mgr
    def _get_mgr_with_two_users(self):
        mgr = UserManager()
        testuser1 = UserIdentifier('foo', 'bar')
        testuser2 = UserIdentifier('john doe', 'phone')

        mgr.add_request(testuser1)
        mgr.update(testuser1)
        mgr.finish_request()

        mgr.add_request(testuser2)
        mgr.update(testuser2)
        mgr.finish_request()

        return mgr, testuser1, testuser2
    def test_update_request(self):
        mgr = UserManager()
        testuser = UserIdentifier('foo', 'bar')

        pw = mgr.generate_password()
        mgr.add_request(testuser)
        testdata = UserData()
        testuser.user_data = testdata
        testuser.password = pw
        mgr.update(testuser)
        mgr.finish_request()

        # generate another password, which should not affect the stored one
        mgr.generate_password()

        found = mgr.find('foo')
        self.assertEqual(found.name, testuser.name)
        self.assertEqual(found.device_id, testuser.device_id)
        self.assertEqual(found.password, pw)
        self.assertEqual(found.user_data, testdata)
    def test_add_two_users(self):
        mgr = UserManager()
        testuser1 = UserIdentifier('foo', 'bar')
        testuser2 = UserIdentifier('john doe', 'phone')

        res1 = mgr.add_request(testuser1)
        mgr.update(testuser1)
        mgr.finish_request()

        res2 = mgr.add_request(testuser2)
        mgr.update(testuser2)
        mgr.finish_request()

        self.assertTrue(res1)
        self.assertTrue(res2)
        self.assertFalse(mgr.is_request_pending())
        userlist = mgr.list_users()
        self.assertEqual(len(userlist), 2)
        self.assertIn(testuser1, userlist)
        self.assertIn(testuser2, userlist)