Example #1
0
 def setUp(self):
     super(RecordAnswerTests, self).setUp()
     self.owner_id = self.get_user_id_from_email(self.OWNER_EMAIL)
     user_services.get_or_create_user(self.owner_id, self.OWNER_EMAIL)
     self.signup(self.OWNER_EMAIL, self.OWNER_USERNAME)
     self.exploration = self.save_new_valid_exploration(
         self.EXP_ID, self.owner_id, end_state_name='End')
Example #2
0
    def test_set_and_get_user_email_preferences(self):
        user_id = 'someUser'
        username = '******'
        user_email = '*****@*****.**'

        user_services.get_or_create_user(user_id, user_email)
        user_services.set_username(user_id, username)

        # When UserEmailPreferencesModel is yet to be created,
        # the value returned by get_email_preferences() should be True.
        email_preferences = user_services.get_email_preferences(user_id)
        self.assertEquals(email_preferences['can_receive_editor_role_email'],
                          feconf.DEFAULT_EDITOR_ROLE_EMAIL_PREFERENCE)

        # The user retrieves their email preferences. This initializes
        # a UserEmailPreferencesModel instance with the default values.
        user_services.update_email_preferences(
            user_id, feconf.DEFAULT_EMAIL_UPDATES_PREFERENCE,
            feconf.DEFAULT_EDITOR_ROLE_EMAIL_PREFERENCE)

        email_preferences = user_services.get_email_preferences(user_id)
        self.assertEquals(email_preferences['can_receive_editor_role_email'],
                          feconf.DEFAULT_EDITOR_ROLE_EMAIL_PREFERENCE)

        # The user sets their membership email preference to False.
        user_services.update_email_preferences(
            user_id, feconf.DEFAULT_EMAIL_UPDATES_PREFERENCE, False)

        email_preferences = user_services.get_email_preferences(user_id)
        self.assertEquals(email_preferences['can_receive_editor_role_email'],
                          False)
    def setUp(self):
        """Before each individual test, set up dummy explorations, users
        and admin."""
        super(RecommendationsServicesUnitTests, self).setUp()

        for name, user in self.USER_DATA.iteritems():
            user['id'] = self.get_user_id_from_email(
                user['email'])
            user_services.get_or_create_user(user['id'], user['email'])
            self.signup(user['email'], name)
            self.USER_DATA[name]['id'] = user['id']

        self.EXP_DATA['exp_id_1']['owner_id'] = self.USER_DATA['alice']['id']
        self.EXP_DATA['exp_id_2']['owner_id'] = self.USER_DATA['alice']['id']
        self.EXP_DATA['exp_id_3']['owner_id'] = self.USER_DATA['bob']['id']
        self.EXP_DATA['exp_id_4']['owner_id'] = self.USER_DATA['charlie']['id']

        for exp_id, exp in self.EXP_DATA.iteritems():
            self.save_new_valid_exploration(
                exp_id, exp['owner_id'], category=exp['category'])
            rights_manager.publish_exploration(exp['owner_id'], exp_id)

        self.admin_id = self.get_user_id_from_email(self.ADMIN_EMAIL)
        user_services.get_or_create_user(
            self.admin_id, self.ADMIN_EMAIL)
        self.signup(self.ADMIN_EMAIL, self.ADMIN_USERNAME)
        self.set_admins([self.ADMIN_USERNAME])
    def setUp(self):
        """Before each individual test, set up dummy explorations, users
        and admin."""
        super(RecommendationsServicesUnitTests, self).setUp()

        for name, user in self.USER_DATA.iteritems():
            user["id"] = self.get_user_id_from_email(user["email"])
            user_services.get_or_create_user(user["id"], user["email"])
            self.signup(user["email"], name)
            self.USER_DATA[name]["id"] = user["id"]

        self.EXP_DATA["exp_id_1"]["owner_id"] = self.USER_DATA["alice"]["id"]
        self.EXP_DATA["exp_id_2"]["owner_id"] = self.USER_DATA["alice"]["id"]
        self.EXP_DATA["exp_id_3"]["owner_id"] = self.USER_DATA["bob"]["id"]
        self.EXP_DATA["exp_id_4"]["owner_id"] = self.USER_DATA["charlie"]["id"]

        self.explorations = []
        for exp_id, exp in self.EXP_DATA.iteritems():
            self.save_new_valid_exploration(exp_id, exp["owner_id"], category=exp["category"])
            rights_manager.publish_exploration(exp["owner_id"], exp_id)

        self.ADMIN_ID = self.get_user_id_from_email(self.ADMIN_EMAIL)
        user_services.get_or_create_user(self.ADMIN_ID, self.ADMIN_EMAIL)
        self.signup(self.ADMIN_EMAIL, self.ADMIN_USERNAME)
        self.set_admins([self.ADMIN_EMAIL])
Example #5
0
    def test_set_and_get_user_email_preferences(self):
        user_id = 'someUser'
        username = '******'
        user_email = '*****@*****.**'

        user_services.get_or_create_user(user_id, user_email)
        user_services.set_username(user_id, username)

        # When UserEmailPreferencesModel is yet to be created,
        # the value returned by get_email_preferences() should be True.
        email_preferences = user_services.get_email_preferences(user_id)
        self.assertEquals(
            email_preferences['can_receive_editor_role_email'],
            feconf.DEFAULT_EDITOR_ROLE_EMAIL_PREFERENCE)

        # The user retrieves their email preferences. This initializes
        # a UserEmailPreferencesModel instance with the default values.
        user_services.update_email_preferences(
            user_id, feconf.DEFAULT_EMAIL_UPDATES_PREFERENCE,
            feconf.DEFAULT_EDITOR_ROLE_EMAIL_PREFERENCE)

        email_preferences = user_services.get_email_preferences(user_id)
        self.assertEquals(
            email_preferences['can_receive_editor_role_email'],
            feconf.DEFAULT_EDITOR_ROLE_EMAIL_PREFERENCE)

        # The user sets their membership email preference to False.
        user_services.update_email_preferences(
            user_id, feconf.DEFAULT_EMAIL_UPDATES_PREFERENCE, False)

        email_preferences = user_services.get_email_preferences(user_id)
        self.assertEquals(
            email_preferences['can_receive_editor_role_email'],
            False)
Example #6
0
 def setUp(self):
     super(RecordAnswerTests, self).setUp()
     self.owner_id = self.get_user_id_from_email(self.OWNER_EMAIL)
     user_services.get_or_create_user(self.owner_id, self.OWNER_EMAIL)
     self.signup(self.OWNER_EMAIL, self.OWNER_USERNAME)
     self.exploration = self.save_new_valid_exploration(
         self.EXP_ID, self.owner_id, end_state_name='End')
Example #7
0
    def setUp(self):
        """Before each individual test, set up dummy explorations, users
        and admin."""
        super(RecommendationsServicesUnitTests, self).setUp()

        for name, user in self.USER_DATA.iteritems():
            user['id'] = self.get_user_id_from_email(user['email'])
            user_services.get_or_create_user(user['id'], user['email'])
            self.signup(user['email'], name)
            self.USER_DATA[name]['id'] = user['id']

        self.EXP_DATA['exp_id_1']['owner_id'] = self.USER_DATA['alice']['id']
        self.EXP_DATA['exp_id_2']['owner_id'] = self.USER_DATA['alice']['id']
        self.EXP_DATA['exp_id_3']['owner_id'] = self.USER_DATA['bob']['id']
        self.EXP_DATA['exp_id_4']['owner_id'] = self.USER_DATA['charlie']['id']

        for exp_id, exp in self.EXP_DATA.iteritems():
            self.save_new_valid_exploration(exp_id,
                                            exp['owner_id'],
                                            category=exp['category'])
            rights_manager.publish_exploration(exp['owner_id'], exp_id)

        self.admin_id = self.get_user_id_from_email(self.ADMIN_EMAIL)
        user_services.get_or_create_user(self.admin_id, self.ADMIN_EMAIL)
        self.signup(self.ADMIN_EMAIL, self.ADMIN_USERNAME)
        self.set_admins([self.ADMIN_EMAIL])
Example #8
0
 def test_set_invalid_usernames(self):
     user_id = 'someUser'
     user_services.get_or_create_user(user_id, '*****@*****.**')
     bad_usernames = [
         ' bob ', '@', '', 'a' * 100, 'ADMIN', 'admin', 'AdMiN2020']
     for username in bad_usernames:
         with self.assertRaises(utils.ValidationError):
             user_services.set_username(user_id, username)
Example #9
0
    def setUp(self):
        super(SubjectInterestsUnitTests, self).setUp()
        self.user_id = 'someUser'
        self.username = '******'
        self.user_email = '*****@*****.**'

        user_services.get_or_create_user(self.user_id, self.user_email)
        user_services.set_username(self.user_id, self.username)
Example #10
0
    def setUp(self):
        super(SubjectInterestsUnitTests, self).setUp()
        self.user_id = 'someUser'
        self.username = '******'
        self.user_email = '*****@*****.**'

        user_services.get_or_create_user(self.user_id, self.user_email)
        user_services.set_username(self.user_id, self.username)
Example #11
0
 def test_set_invalid_usernames(self):
     user_id = 'someUser'
     user_services.get_or_create_user(user_id, '*****@*****.**')
     bad_usernames = [
         ' bob ', '@', '', 'a' * 100, 'ADMIN', 'admin', 'AdMiN2020']
     for username in bad_usernames:
         with self.assertRaises(utils.ValidationError):
             user_services.set_username(user_id, username)
Example #12
0
    def test_set_and_get_username(self):
        user_id = 'someUser'
        username = '******'
        with self.assertRaisesRegexp(Exception, 'User not found.'):
            user_services.set_username(user_id, username)

        user_services.get_or_create_user(user_id, '*****@*****.**')

        user_services.set_username(user_id, username)
        self.assertEquals(username, user_services.get_username(user_id))
Example #13
0
    def test_set_and_get_username(self):
        user_id = 'someUser'
        username = '******'
        with self.assertRaisesRegexp(Exception, 'User not found.'):
            user_services.set_username(user_id, username)

        user_services.get_or_create_user(user_id, '*****@*****.**')

        user_services.set_username(user_id, username)
        self.assertEquals(username, user_services.get_username(user_id))
Example #14
0
    def setUp(self):
        super(SuggestionQueriesUnitTests, self).setUp()
        # Register users.
        self.user_id = self.get_user_id_from_email(self.USER_EMAIL)
        user_services.get_or_create_user(self.user_id, self.USER_EMAIL)
        self.signup(self.USER_EMAIL, self.USERNAME)
        # Open thread with suggestion.
        thread1 = feedback_models.FeedbackThreadModel(
            id=feedback_models.FeedbackThreadModel.generate_full_thread_id(
                self.EXP_ID1, self.THREAD_ID1),
            exploration_id=self.EXP_ID1,
            state_name='state_name',
            original_author_id=self.user_id,
            subject='SUGGESTION',
            has_suggestion=True)
        # Closed threads with suggestion.
        thread2 = feedback_models.FeedbackThreadModel(
            id=feedback_models.FeedbackThreadModel.generate_full_thread_id(
                self.EXP_ID1, self.THREAD_ID2),
            exploration_id=self.EXP_ID1,
            state_name='state_name',
            original_author_id=self.user_id,
            subject='SUGGESTION',
            status=feedback_models.STATUS_CHOICES_FIXED,
            has_suggestion=True)
        thread3 = feedback_models.FeedbackThreadModel(
            id=feedback_models.FeedbackThreadModel.generate_full_thread_id(
                self.EXP_ID1, self.THREAD_ID3),
            exploration_id=self.EXP_ID1,
            state_name='state_name',
            original_author_id=self.user_id,
            subject='SUGGESTION',
            status=feedback_models.STATUS_CHOICES_IGNORED,
            has_suggestion=True)
        # Closed thread without suggestion.
        thread4 = feedback_models.FeedbackThreadModel(
            id=feedback_models.FeedbackThreadModel.generate_full_thread_id(
                self.EXP_ID1, self.THREAD_ID4),
            exploration_id=self.EXP_ID1,
            state_name='state_name',
            original_author_id=self.user_id,
            subject='NO SUGGESTION',
            status=feedback_models.STATUS_CHOICES_IGNORED)
        # Open thread without suggestion.
        thread5 = feedback_models.FeedbackThreadModel(
            id=feedback_models.FeedbackThreadModel.generate_full_thread_id(
                self.EXP_ID1, self.THREAD_ID5),
            exploration_id=self.EXP_ID1,
            state_name='state_name',
            original_author_id=self.user_id,
            subject='NO SUGGESTION',
            status=feedback_models.STATUS_CHOICES_OPEN)

        for thread in [thread1, thread2, thread3, thread4, thread5]:
            thread.put()
Example #15
0
    def setUp(self):
        super(SuggestionQueriesUnitTests, self).setUp()
        # Register users.
        self.user_id = self.get_user_id_from_email(self.USER_EMAIL)
        user_services.get_or_create_user(self.user_id, self.USER_EMAIL)
        self.signup(self.USER_EMAIL, self.USERNAME)
        # Open thread with suggestion.
        thread1 = feedback_models.FeedbackThreadModel(
            id=feedback_models.FeedbackThreadModel.generate_full_thread_id(
                self.EXP_ID1, self.THREAD_ID1),
            exploration_id=self.EXP_ID1,
            state_name='state_name',
            original_author_id=self.user_id,
            subject='SUGGESTION',
            has_suggestion=True)
        # Closed threads with suggestion.
        thread2 = feedback_models.FeedbackThreadModel(
            id=feedback_models.FeedbackThreadModel.generate_full_thread_id(
                self.EXP_ID1, self.THREAD_ID2),
            exploration_id=self.EXP_ID1,
            state_name='state_name',
            original_author_id=self.user_id,
            subject='SUGGESTION',
            status=feedback_models.STATUS_CHOICES_FIXED,
            has_suggestion=True)
        thread3 = feedback_models.FeedbackThreadModel(
            id=feedback_models.FeedbackThreadModel.generate_full_thread_id(
                self.EXP_ID1, self.THREAD_ID3),
            exploration_id=self.EXP_ID1,
            state_name='state_name',
            original_author_id=self.user_id,
            subject='SUGGESTION',
            status=feedback_models.STATUS_CHOICES_IGNORED,
            has_suggestion=True)
        # Closed thread without suggestion.
        thread4 = feedback_models.FeedbackThreadModel(
            id=feedback_models.FeedbackThreadModel.generate_full_thread_id(
                self.EXP_ID1, self.THREAD_ID4),
            exploration_id=self.EXP_ID1,
            state_name='state_name',
            original_author_id=self.user_id,
            subject='NO SUGGESTION',
            status=feedback_models.STATUS_CHOICES_IGNORED)
        # Open thread without suggestion.
        thread5 = feedback_models.FeedbackThreadModel(
            id=feedback_models.FeedbackThreadModel.generate_full_thread_id(
                self.EXP_ID1, self.THREAD_ID5),
            exploration_id=self.EXP_ID1,
            state_name='state_name',
            original_author_id=self.user_id,
            subject='NO SUGGESTION',
            status=feedback_models.STATUS_CHOICES_OPEN)

        for thread in [thread1, thread2, thread3, thread4, thread5]:
            thread.put()
Example #16
0
    def setUp(self):
        super(CollectionLearnerDictTests, self).setUp()

        self.owner_id = self.get_user_id_from_email(self.OWNER_EMAIL)
        self.editor_id = self.get_user_id_from_email(self.EDITOR_EMAIL)

        user_services.get_or_create_user(self.owner_id, self.OWNER_EMAIL)
        user_services.get_or_create_user(self.editor_id, self.EDITOR_EMAIL)

        self.signup(self.OWNER_EMAIL, self.OWNER_USERNAME)
        self.signup(self.EDITOR_EMAIL, self.EDITOR_USERNAME)
Example #17
0
    def setUp(self):
        super(CollectionLearnerDictTests, self).setUp()

        self.owner_id = self.get_user_id_from_email(self.OWNER_EMAIL)
        self.editor_id = self.get_user_id_from_email(self.EDITOR_EMAIL)

        user_services.get_or_create_user(self.owner_id, self.OWNER_EMAIL)
        user_services.get_or_create_user(self.editor_id, self.EDITOR_EMAIL)

        self.signup(self.OWNER_EMAIL, self.OWNER_USERNAME)
        self.signup(self.EDITOR_EMAIL, self.EDITOR_USERNAME)
Example #18
0
File: base.py Project: miyucy/oppia
    def __init__(self, request, response):
        # Set self.request, self.response and self.app.
        self.initialize(request, response)

        self.start_time = datetime.datetime.utcnow()

        # Initializes the return dict for the handlers.
        self.values = {}

        self.user = current_user_services.get_current_user(self.request)
        self.user_id = current_user_services.get_user_id(
            self.user) if self.user else None

        if self.user_id:
            email = current_user_services.get_user_email(self.user)
            user_settings = user_services.get_or_create_user(
                self.user_id, email)
            self.username = user_settings.username

            self.values['user_email'] = user_settings.email
            self.values['username'] = self.username

        self.is_moderator = rights_manager.Actor(self.user_id).is_moderator()
        self.is_admin = rights_manager.Actor(self.user_id).is_admin()
        self.is_super_admin = user_services.is_super_admin(
            self.user_id, self.request)

        self.values['is_moderator'] = self.is_moderator
        self.values['is_admin'] = self.is_admin
        self.values['is_super_admin'] = self.is_super_admin

        if self.request.get('payload'):
            self.payload = json.loads(self.request.get('payload'))
        else:
            self.payload = None
Example #19
0
    def __init__(self, request, response):  # pylint: disable=super-init-not-called
        # Set self.request, self.response and self.app.
        self.initialize(request, response)

        self.start_time = datetime.datetime.utcnow()

        # Initializes the return dict for the handlers.
        self.values = {}

        self.user = current_user_services.get_current_user()
        self.user_id = current_user_services.get_user_id(
            self.user) if self.user else None
        self.username = None
        self.has_seen_editor_tutorial = False
        self.partially_logged_in = False
        self.values['profile_picture_data_url'] = None
        self.preferred_site_language_code = None

        if self.user_id:
            email = current_user_services.get_user_email(self.user)
            user_settings = user_services.get_or_create_user(
                self.user_id, email)
            self.values['user_email'] = user_settings.email

            if (self.REDIRECT_UNFINISHED_SIGNUPS and not
                    user_services.has_fully_registered(self.user_id)):
                _clear_login_cookies(self.response.headers)
                self.partially_logged_in = True
                self.user_id = None
            else:
                self.username = user_settings.username
                self.preferred_site_language_code = (
                    user_settings.preferred_site_language_code)
                self.values['username'] = self.username
                self.values['profile_picture_data_url'] = (
                    user_settings.profile_picture_data_url)
                if user_settings.last_started_state_editor_tutorial:
                    self.has_seen_editor_tutorial = True
                # In order to avoid too many datastore writes, we do not bother
                # recording a log-in if the current time is sufficiently close
                # to the last log-in time.
                if (user_settings.last_logged_in is None or
                        not utils.are_datetimes_close(
                            datetime.datetime.utcnow(),
                            user_settings.last_logged_in)):
                    user_services.record_user_logged_in(self.user_id)

        self.is_moderator = rights_manager.Actor(self.user_id).is_moderator()
        self.is_admin = rights_manager.Actor(self.user_id).is_admin()
        self.is_super_admin = (
            current_user_services.is_current_user_super_admin())

        self.values['is_moderator'] = self.is_moderator
        self.values['is_admin'] = self.is_admin
        self.values['is_super_admin'] = self.is_super_admin

        if self.request.get('payload'):
            self.payload = json.loads(self.request.get('payload'))
        else:
            self.payload = None
Example #20
0
    def __init__(self, request, response):
        # Set self.request, self.response and self.app.
        self.initialize(request, response)

        self.start_time = datetime.datetime.utcnow()

        # Initializes the return dict for the handlers.
        self.values = {}

        self.user = current_user_services.get_current_user(self.request)
        self.user_id = current_user_services.get_user_id(
            self.user) if self.user else None

        if self.user_id:
            email = current_user_services.get_user_email(self.user)
            user_settings = user_services.get_or_create_user(
                self.user_id, email)
            self.username = user_settings.username

            self.values['user_email'] = user_settings.email
            self.values['username'] = self.username

        self.is_moderator = rights_manager.Actor(self.user_id).is_moderator()
        self.is_admin = rights_manager.Actor(self.user_id).is_admin()
        self.is_super_admin = user_services.is_super_admin(
            self.user_id, self.request)

        self.values['is_moderator'] = self.is_moderator
        self.values['is_admin'] = self.is_admin
        self.values['is_super_admin'] = self.is_super_admin

        if self.request.get('payload'):
            self.payload = json.loads(self.request.get('payload'))
        else:
            self.payload = None
Example #21
0
    def __init__(self, request, response):  # pylint: disable=super-init-not-called
        # Set self.request, self.response and self.app.
        self.initialize(request, response)

        self.start_time = datetime.datetime.utcnow()

        # Initializes the return dict for the handlers.
        self.values = {}

        self.user = current_user_services.get_current_user()
        self.user_id = current_user_services.get_user_id(
            self.user) if self.user else None
        self.username = None
        self.has_seen_editor_tutorial = False
        self.partially_logged_in = False
        self.values['profile_picture_data_url'] = None
        self.preferred_site_language_code = None

        if self.user_id:
            email = current_user_services.get_user_email(self.user)
            user_settings = user_services.get_or_create_user(
                self.user_id, email)
            self.values['user_email'] = user_settings.email

            if (self.REDIRECT_UNFINISHED_SIGNUPS
                    and not user_services.has_fully_registered(self.user_id)):
                _clear_login_cookies(self.response.headers)
                self.partially_logged_in = True
                self.user_id = None
            else:
                self.username = user_settings.username
                self.preferred_site_language_code = (
                    user_settings.preferred_site_language_code)
                self.values['username'] = self.username
                self.values['profile_picture_data_url'] = (
                    user_settings.profile_picture_data_url)
                if user_settings.last_started_state_editor_tutorial:
                    self.has_seen_editor_tutorial = True
                # In order to avoid too many datastore writes, we do not bother
                # recording a log-in if the current time is sufficiently close
                # to the last log-in time.
                if (user_settings.last_logged_in is None
                        or not utils.are_datetimes_close(
                            datetime.datetime.utcnow(),
                            user_settings.last_logged_in)):
                    user_services.record_user_logged_in(self.user_id)

        self.is_moderator = rights_manager.Actor(self.user_id).is_moderator()
        self.is_admin = rights_manager.Actor(self.user_id).is_admin()
        self.is_super_admin = (
            current_user_services.is_current_user_super_admin())

        self.values['is_moderator'] = self.is_moderator
        self.values['is_admin'] = self.is_admin
        self.values['is_super_admin'] = self.is_super_admin

        if self.request.get('payload'):
            self.payload = json.loads(self.request.get('payload'))
        else:
            self.payload = None
Example #22
0
 def test_email_truncation(self):
     email_addresses = [
         ("[email protected]", "[email protected]"),
         ("[email protected]", "[email protected]"),
         ("*****@*****.**", "*****@*****.**"),
         ("[email protected]", "[email protected]"),
         ("[email protected]", "[email protected]"),
     ]
     for ind, (actual_email, expected_email) in enumerate(email_addresses):
         user_settings = user_services.get_or_create_user(str(ind), actual_email)
         self.assertEqual(user_settings.truncated_email, expected_email)
Example #23
0
    def test_get_user_id_from_username(self):
        user_id = 'someUser'
        username = '******'
        user_email = '*****@*****.**'

        user_services.get_or_create_user(user_id, user_email)
        user_services.set_username(user_id, username)
        self.assertEquals(user_services.get_username(user_id), username)

        # Handle usernames that exist.
        self.assertEquals(user_services.get_user_id_from_username(username),
                          user_id)

        # Handle usernames in the same equivalence class correctly.
        self.assertEquals(user_services.get_user_id_from_username('USERNAME'),
                          user_id)

        # Return None for usernames which don't exist.
        self.assertIsNone(
            user_services.get_user_id_from_username('fakeUsername'))
Example #24
0
    def test_get_email_from_username(self):
        user_id = 'someUser'
        username = '******'
        user_email = '*****@*****.**'

        user_services.get_or_create_user(user_id, user_email)
        user_services.set_username(user_id, username)
        self.assertEquals(user_services.get_username(user_id), username)

        # Handle usernames that exist.
        self.assertEquals(
            user_services.get_email_from_username(username), user_email)

        # Handle usernames in the same equivalence class correctly.
        self.assertEquals(
            user_services.get_email_from_username('USERNAME'), user_email)

        # Return None for usernames which don't exist.
        self.assertIsNone(
            user_services.get_email_from_username('fakeUsername'))
Example #25
0
 def test_email_truncation(self):
     email_addresses = [
         ('[email protected]', '[email protected]'),
         ('[email protected]', '[email protected]'),
         ('*****@*****.**', '*****@*****.**'),
         ('[email protected]', '[email protected]'),
         ('[email protected]', '[email protected]'),
     ]
     for ind, (actual_email, expected_email) in enumerate(email_addresses):
         user_settings = user_services.get_or_create_user(
             str(ind), actual_email)
         self.assertEqual(user_settings.truncated_email, expected_email)
Example #26
0
    def setUp(self):
        """Before each individual test, create a dummy exploration."""
        super(ExplorationServicesUnitTests, self).setUp()

        self.EXP_ID = 'An exploration_id'

        self.OWNER_EMAIL = '*****@*****.**'
        self.EDITOR_EMAIL = '*****@*****.**'
        self.VIEWER_EMAIL = '*****@*****.**'

        self.OWNER_ID = self.get_user_id_from_email(self.OWNER_EMAIL)
        self.EDITOR_ID = self.get_user_id_from_email(self.EDITOR_EMAIL)
        self.VIEWER_ID = self.get_user_id_from_email(self.VIEWER_EMAIL)

        self.OWNER_NAME = 'owner'
        self.EDITOR_NAME = 'editor'
        self.VIEWER_NAME = 'viewer'

        user_services.get_or_create_user(self.OWNER_ID, self.OWNER_EMAIL)
        user_services.get_or_create_user(self.EDITOR_ID, self.EDITOR_EMAIL)
        user_services.get_or_create_user(self.VIEWER_ID, self.VIEWER_EMAIL)

        self.register_editor(self.OWNER_EMAIL, username=self.OWNER_NAME)
        self.register_editor(self.EDITOR_EMAIL, username=self.EDITOR_NAME)
        self.register_editor(self.VIEWER_EMAIL, username=self.VIEWER_NAME)

        config_services.set_property(
            feconf.ADMIN_COMMITTER_ID, 'admin_emails', ['*****@*****.**'])
        self.user_id_admin = self.get_user_id_from_email('*****@*****.**')
Example #27
0
    def __init__(self, request, response):  # pylint: disable=super-init-not-called
        # Set self.request, self.response and self.app.
        self.initialize(request, response)

        self.start_time = datetime.datetime.utcnow()

        # Initializes the return dict for the handlers.
        self.values = {}

        self.user = current_user_services.get_current_user()
        self.user_id = current_user_services.get_user_id(
            self.user) if self.user else None
        self.username = None
        self.has_seen_editor_tutorial = False
        self.partially_logged_in = False
        self.values['profile_picture_data_url'] = None

        if self.user_id:
            email = current_user_services.get_user_email(self.user)
            user_settings = user_services.get_or_create_user(
                self.user_id, email)
            self.values['user_email'] = user_settings.email

            if (self.REDIRECT_UNFINISHED_SIGNUPS and not
                    user_services.has_fully_registered(self.user_id)):
                _clear_login_cookies(self.response.headers)
                self.partially_logged_in = True
                self.user_id = None
            else:
                self.username = user_settings.username
                self.values['username'] = self.username
                self.values['profile_picture_data_url'] = (
                    user_settings.profile_picture_data_url)
                if user_settings.last_started_state_editor_tutorial:
                    self.has_seen_editor_tutorial = True

        self.is_moderator = rights_manager.Actor(self.user_id).is_moderator()
        self.is_admin = rights_manager.Actor(self.user_id).is_admin()
        self.is_super_admin = (
            current_user_services.is_current_user_super_admin())

        self.values['is_moderator'] = self.is_moderator
        self.values['is_admin'] = self.is_admin
        self.values['is_super_admin'] = self.is_super_admin

        if self.request.get('payload'):
            self.payload = json.loads(self.request.get('payload'))
        else:
            self.payload = None
Example #28
0
    def __init__(self, request, response):
        # Set self.request, self.response and self.app.
        self.initialize(request, response)

        self.start_time = datetime.datetime.utcnow()

        # Initializes the return dict for the handlers.
        self.values = {}

        self.user = current_user_services.get_current_user(self.request)
        self.user_id = current_user_services.get_user_id(
            self.user) if self.user else None
        self.username = None
        self.user_has_started_state_editor_tutorial = False
        self.partially_logged_in = False
        self.values['profile_picture_data_url'] = None

        if self.user_id:
            email = current_user_services.get_user_email(self.user)
            user_settings = user_services.get_or_create_user(
                self.user_id, email)
            self.values['user_email'] = user_settings.email

            if self.REDIRECT_UNFINISHED_SIGNUPS and not user_settings.username:
                _clear_login_cookies(self.response.headers)
                self.partially_logged_in = True
                self.user_id = None
            else:
                self.username = user_settings.username
                self.last_agreed_to_terms = user_settings.last_agreed_to_terms
                self.values['username'] = self.username
                self.values['profile_picture_data_url'] = (
                    user_settings.profile_picture_data_url)
                if user_settings.last_started_state_editor_tutorial:
                    self.user_has_started_state_editor_tutorial = True

        self.is_moderator = rights_manager.Actor(self.user_id).is_moderator()
        self.is_admin = rights_manager.Actor(self.user_id).is_admin()
        self.is_super_admin = user_services.is_super_admin(
            self.user_id, self.request)

        self.values['is_moderator'] = self.is_moderator
        self.values['is_admin'] = self.is_admin
        self.values['is_super_admin'] = self.is_super_admin

        if self.request.get('payload'):
            self.payload = json.loads(self.request.get('payload'))
        else:
            self.payload = None
Example #29
0
    def __init__(self, request, response):
        # Set self.request, self.response and self.app.
        self.initialize(request, response)

        self.start_time = datetime.datetime.utcnow()

        # Initializes the return dict for the handlers.
        self.values = {}

        self.user = current_user_services.get_current_user(self.request)
        self.user_id = current_user_services.get_user_id(self.user) if self.user else None
        self.username = None
        self.user_has_started_state_editor_tutorial = False
        self.partially_logged_in = False
        self.values["profile_picture_data_url"] = None

        if self.user_id:
            email = current_user_services.get_user_email(self.user)
            user_settings = user_services.get_or_create_user(self.user_id, email)
            self.values["user_email"] = user_settings.email

            if self.REDIRECT_UNFINISHED_SIGNUPS and not user_settings.username:
                _clear_login_cookies(self.response.headers)
                self.partially_logged_in = True
                self.user_id = None
            else:
                self.username = user_settings.username
                self.last_agreed_to_terms = user_settings.last_agreed_to_terms
                self.values["username"] = self.username
                self.values["profile_picture_data_url"] = user_settings.profile_picture_data_url
                if user_settings.last_started_state_editor_tutorial:
                    self.user_has_started_state_editor_tutorial = True

        self.is_moderator = rights_manager.Actor(self.user_id).is_moderator()
        self.is_admin = rights_manager.Actor(self.user_id).is_admin()
        self.is_super_admin = user_services.is_super_admin(self.user_id, self.request)

        self.values["is_moderator"] = self.is_moderator
        self.values["is_admin"] = self.is_admin
        self.values["is_super_admin"] = self.is_super_admin

        if self.request.get("payload"):
            self.payload = json.loads(self.request.get("payload"))
        else:
            self.payload = None
Example #30
0
    def setUp(self):
        super(FeedbackThreadUnitTests, self).setUp()

        self.viewer_id = self.get_user_id_from_email(self.VIEWER_EMAIL)
        user_services.get_or_create_user(self.viewer_id, self.VIEWER_EMAIL)
        self.signup(self.VIEWER_EMAIL, self.VIEWER_USERNAME)
Example #31
0
 def test_invalid_emails(self):
     bad_email_addresses = ["@", "@@", "abc", "", None, ["a", "@", "b.com"]]
     for email in bad_email_addresses:
         with self.assertRaises(utils.ValidationError):
             user_services.get_or_create_user("user_id", email)
Example #32
0
 def test_invalid_emails(self):
     bad_email_addresses = ['@', '@@', 'abc', '', None, ['a', '@', 'b.com']]
     for email in bad_email_addresses:
         with self.assertRaises(utils.ValidationError):
             user_services.get_or_create_user('user_id', email)
Example #33
0
 def test_is_username_taken_true(self):
     user_id = 'someUser'
     username = '******'
     user_services.get_or_create_user(user_id, '*****@*****.**')
     user_services.set_username(user_id, username)
     self.assertTrue(user_services.is_username_taken(username))
Example #34
0
 def test_is_username_taken_different_case(self):
     user_id = 'someUser'
     username = '******'
     user_services.get_or_create_user(user_id, '*****@*****.**')
     user_services.set_username(user_id, username)
     self.assertTrue(user_services.is_username_taken('CaMeLcAsE'))
Example #35
0
    def put(self, exploration_id):
        """Updates the editing rights for the given exploration."""
        exploration = exp_services.get_exploration_by_id(exploration_id)
        version = self.payload.get('version')
        _require_valid_version(version, exploration.version)

        is_public = self.payload.get('is_public')
        is_publicized = self.payload.get('is_publicized')
        is_community_owned = self.payload.get('is_community_owned')
        new_member_email = self.payload.get('new_member_email')
        new_member_role = self.payload.get('new_member_role')

        if new_member_email:
            if not rights_manager.Actor(self.user_id).can_modify_roles(
                    exploration_id):
                raise self.UnauthorizedUserException(
                    'Only an owner of this exploration can add or change '
                    'roles.')

            new_member_id = user_services.get_user_id_from_email(
                new_member_email)

            if new_member_id is None:
                raise Exception(
                    'Sorry, we could not find a user with this email address.')

            user_services.get_or_create_user(new_member_id, new_member_email)

            rights_manager.assign_role(
                self.user_id, exploration_id, new_member_id, new_member_role)

        elif is_public is not None:
            exploration = exp_services.get_exploration_by_id(exploration_id)
            if is_public:
                try:
                    exploration.validate(strict=True)
                except utils.ValidationError as e:
                    raise self.InvalidInputException(e)

                rights_manager.publish_exploration(
                    self.user_id, exploration_id)
            else:
                rights_manager.unpublish_exploration(
                    self.user_id, exploration_id)

        elif is_publicized is not None:
            exploration = exp_services.get_exploration_by_id(exploration_id)
            if is_publicized:
                try:
                    exploration.validate(strict=True)
                except utils.ValidationError as e:
                    raise self.InvalidInputException(e)

                rights_manager.publicize_exploration(
                    self.user_id, exploration_id)
            else:
                rights_manager.unpublicize_exploration(
                    self.user_id, exploration_id)

        elif is_community_owned:
            exploration = exp_services.get_exploration_by_id(exploration_id)
            try:
                exploration.validate(strict=True)
            except utils.ValidationError as e:
                raise self.InvalidInputException(e)

            rights_manager.release_ownership(self.user_id, exploration_id)

        else:
            raise self.InvalidInputException(
                'No change was made to this exploration.')

        self.render_json({
            'rights': rights_manager.get_exploration_rights(
                exploration_id).to_dict()
        })
Example #36
0
 def test_get_username_none(self):
     user_services.get_or_create_user('fakeUser', '*****@*****.**')
     self.assertEquals(None, user_services.get_username('fakeUser'))
    def put(self, exploration_id):
        """Updates the editing rights for the given exploration."""
        exploration = exp_services.get_exploration_by_id(exploration_id)
        version = self.payload.get('version')
        _require_valid_version(version, exploration.version)

        is_public = self.payload.get('is_public')
        is_publicized = self.payload.get('is_publicized')
        is_community_owned = self.payload.get('is_community_owned')
        new_member_email = self.payload.get('new_member_email')
        new_member_role = self.payload.get('new_member_role')

        if new_member_email:
            if not rights_manager.Actor(self.user_id).can_modify_roles(
                    exploration_id):
                raise self.UnauthorizedUserException(
                    'Only an owner of this exploration can add or change '
                    'roles.')

            new_member_id = user_services.get_user_id_from_email(
                new_member_email)

            if new_member_id is None:
                raise Exception(
                    'Sorry, we could not find a user with this email address.')

            user_services.get_or_create_user(new_member_id, new_member_email)

            rights_manager.assign_role(
                self.user_id, exploration_id, new_member_id, new_member_role)

        elif is_public is not None:
            exploration = exp_services.get_exploration_by_id(exploration_id)
            if is_public:
                try:
                    exploration.validate(strict=True)
                except utils.ValidationError as e:
                    raise self.InvalidInputException(e)

                rights_manager.publish_exploration(
                    self.user_id, exploration_id)
            else:
                rights_manager.unpublish_exploration(
                    self.user_id, exploration_id)

        elif is_publicized is not None:
            exploration = exp_services.get_exploration_by_id(exploration_id)
            if is_publicized:
                try:
                    exploration.validate(strict=True)
                except utils.ValidationError as e:
                    raise self.InvalidInputException(e)

                rights_manager.publicize_exploration(
                    self.user_id, exploration_id)
            else:
                rights_manager.unpublicize_exploration(
                    self.user_id, exploration_id)

        elif is_community_owned:
            exploration = exp_services.get_exploration_by_id(exploration_id)
            try:
                exploration.validate(strict=True)
            except utils.ValidationError as e:
                raise self.InvalidInputException(e)

            rights_manager.release_ownership(self.user_id, exploration_id)

        else:
            raise self.InvalidInputException(
                'No change was made to this exploration.')

        self.render_json({
            'rights': rights_manager.get_exploration_rights(
                exploration_id).to_dict()
        })
Example #38
0
    def test_set_and_get_user_email_preferences_for_exploration(self):
        user_id = 'someUser'
        exploration_id = 'someExploration'
        username = '******'
        user_email = '*****@*****.**'

        user_services.get_or_create_user(user_id, user_email)
        user_services.set_username(user_id, username)

        # When ExplorationUserDataModel is yet to be created, the value
        # of mute_feedback_notifications and mute_suggestion_notifications
        # should match the default values.
        exploration_user_model = (
            user_services.user_models.ExplorationUserDataModel.get(
                user_id, exploration_id))
        self.assertIsNone(exploration_user_model)
        email_preferences = user_services.get_email_preferences_for_exploration(
            user_id, exploration_id)
        self.assertEquals(
            email_preferences.mute_feedback_notifications,
            feconf.DEFAULT_FEEDBACK_NOTIFICATIONS_MUTED_PREFERENCE)
        self.assertEquals(
            email_preferences.mute_suggestion_notifications,
            feconf.DEFAULT_SUGGESTION_NOTIFICATIONS_MUTED_PREFERENCE)

        # This initializes a ExplorationUserDataModel instance with
        # the default mute values.
        user_services.set_email_preferences_for_exploration(
            user_id, exploration_id,
            feconf.DEFAULT_FEEDBACK_NOTIFICATIONS_MUTED_PREFERENCE,
            feconf.DEFAULT_SUGGESTION_NOTIFICATIONS_MUTED_PREFERENCE)

        email_preferences = user_services.get_email_preferences_for_exploration(
            user_id, exploration_id)
        self.assertEquals(
            email_preferences.mute_feedback_notifications,
            feconf.DEFAULT_FEEDBACK_NOTIFICATIONS_MUTED_PREFERENCE)
        self.assertEquals(
            email_preferences.mute_suggestion_notifications,
            feconf.DEFAULT_SUGGESTION_NOTIFICATIONS_MUTED_PREFERENCE)

        # This sets only mute_suggestion_notifications property to True.
        # mute_feedback_notifications should remain same as before.
        user_services.set_email_preferences_for_exploration(
            user_id, exploration_id, mute_suggestion_notifications=True)

        email_preferences = user_services.get_email_preferences_for_exploration(
            user_id, exploration_id)
        self.assertEquals(
            email_preferences.mute_feedback_notifications,
            feconf.DEFAULT_FEEDBACK_NOTIFICATIONS_MUTED_PREFERENCE)
        self.assertTrue(email_preferences.mute_suggestion_notifications)

        # This sets only mute_feedback_notifications property to True.
        # mute_suggestion_notifications should remain same as before.
        user_services.set_email_preferences_for_exploration(
            user_id, exploration_id, mute_feedback_notifications=True)

        email_preferences = user_services.get_email_preferences_for_exploration(
            user_id, exploration_id)
        self.assertTrue(email_preferences.mute_feedback_notifications)
        self.assertTrue(email_preferences.mute_suggestion_notifications)
Example #39
0
 def test_is_username_taken_true(self):
     user_id = 'someUser'
     username = '******'
     user_services.get_or_create_user(user_id, '*****@*****.**')
     user_services.set_username(user_id, username)
     self.assertTrue(user_services.is_username_taken(username))
Example #40
0
 def test_get_username_none(self):
     user_services.get_or_create_user('fakeUser', '*****@*****.**')
     self.assertEquals(None, user_services.get_username('fakeUser'))
Example #41
0
 def test_invalid_emails(self):
     bad_email_addresses = ['@', '@@', 'abc', '', None, ['a', '@', 'b.com']]
     for email in bad_email_addresses:
         with self.assertRaises(utils.ValidationError):
             user_services.get_or_create_user('user_id', email)
Example #42
0
 def setUp(self):
     super(FeedbackMessageDomainUnitTests, self).setUp()
     self.owner_id = self.get_user_id_from_email(self.OWNER_EMAIL)
     user_services.get_or_create_user(self.owner_id, self.OWNER_EMAIL)
     self.signup(self.OWNER_EMAIL, self.OWNER_USERNAME)
Example #43
0
    def setUp(self):
        super(FeedbackThreadUnitTests, self).setUp()

        self.viewer_id = self.get_user_id_from_email(self.VIEWER_EMAIL)
        user_services.get_or_create_user(self.viewer_id, self.VIEWER_EMAIL)
        self.signup(self.VIEWER_EMAIL, self.VIEWER_USERNAME)
Example #44
0
 def setUp(self):
     super(FeedbackMessageDomainUnitTests, self).setUp()
     self.owner_id = self.get_user_id_from_email(self.OWNER_EMAIL)
     user_services.get_or_create_user(self.owner_id, self.OWNER_EMAIL)
     self.signup(self.OWNER_EMAIL, self.OWNER_USERNAME)
Example #45
0
 def test_is_username_taken_different_case(self):
     user_id = 'someUser'
     username = '******'
     user_services.get_or_create_user(user_id, '*****@*****.**')
     user_services.set_username(user_id, username)
     self.assertTrue(user_services.is_username_taken('CaMeLcAsE'))