def change_voted_message_and_redirect(event, _): """ Change the user's voted message and redirect. """ # Parse the parameters params = parse_qs(event["body"]) # Check if the user is logged in correctly username = get_logged_in_user(event) if not username: return create_response(400, "POST", "User not logged in correctly") # Set the voted message and redirect voted_params = dict(user=username, voted_message=None, voted_redirect=None) if "voted_redirect" in params and params["voted_redirect"]: voted_params["voted_redirect"] = params["voted_redirect"][0] if "voted_message" in params and params["voted_message"]: voted_params["voted_message"] = params["voted_message"][0] user = User() try: user.set_voted_message_and_redirect(**voted_params) except ValueError as error: return create_response(400, "POST", str(error)) return create_response(200, "POST")
def set_voted_message_and_redirect(self): user = User() # Positive cases voted message user.set_voted_message_and_redirect("user_1", "New voted message", None) user_data = user.get_user_by_username("user_1") self.assertEqual(user_data["voted_message"], "New voted message") self.assertEqual(user_data["voted_redirect"], None) user.set_voted_message_and_redirect("user_2", "Other new voted message", None) user_data = user.get_user_by_username("user_2") self.assertEqual(user_data["voted_message"], "Other new voted message") self.assertEqual(user_data["voted_redirect"], None) # Positive cases voted redirect user.set_voted_message_and_redirect( "user_1", None, "https://iwanttoreadmore.com/voted") user_data = user.get_user_by_username("user_1") self.assertEqual(user_data["voted_redirect"], "https://iwanttoreadmore.com/voted") self.assertEqual(user_data["voted_message"], None) # Positive cases both user.set_voted_message_and_redirect( "user_1", "Some message", "https://iwanttoreadmore.com/voted") user_data = user.get_user_by_username("user_1") self.assertEqual(user_data["voted_message"], "Some message") self.assertEqual(user_data["voted_redirect"], "https://iwanttoreadmore.com/voted") # Negative case user self.assertRaises(ValueError, user.set_voted_message_and_redirect, "user_X", "Message", None) # Negative cases voted message self.assertRaises( ValueError, user.set_voted_message_and_redirect, "user_1", "<b>Tags</b>", None, ) self.assertRaises(ValueError, user.set_voted_message_and_redirect, "user_1", "M" * 501, None) # Negative cases voted redirect user.set_voted_message_and_redirect( "user_2", None, "https://iwanttoreadmore.com/voted2") user_data = user.get_user_by_username("user_2") self.assertEqual(user_data["voted_redirect"], "https://iwanttoreadmore.com/voted2") self.assertEqual(user_data["voted_message"], None) self.assertRaises( ValueError, user.set_voted_message_and_redirect, "user_1", None, "nonurltext", ) self.assertRaises(ValueError, user.set_voted_message_and_redirect, "user_1", None, "a" * 501)