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')
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])
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_EMAIL])
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)
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)
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))
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()
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)
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
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
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)
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'))
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'))
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)
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('*****@*****.**')
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
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
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
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)
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)
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)
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))
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'))
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() })
def test_get_username_none(self): user_services.get_or_create_user('fakeUser', '*****@*****.**') self.assertEquals(None, user_services.get_username('fakeUser'))
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)
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)