[docs]classEighthExceptionTest(IonTestCase):deftest_signup_exception(self):signup_exception=SignupException()# Test that response is plain with no errorsself.assertEqual(signup_exception.as_response()["Content-Type"],"text/plain")signup_exception.SignupForbidden=Trueself.assertEqual(len(signup_exception.errors),1)# Test that response is plain with 1 errorself.assertEqual(signup_exception.as_response()["Content-Type"],"text/plain")signup_exception.ScheduledActivityCancelled=Trueself.assertEqual(len(signup_exception.errors),2)# Test SignupException messagesexpected_messages_no_admin=[]expected_messages_admin=[]forerrorin["ScheduledActivityCancelled","SignupForbidden"]:expected_messages_no_admin.append(SignupException._messages[error][0])# pylint: disable=protected-accessexpected_messages_admin.append(SignupException._messages[error][1])# pylint: disable=protected-accessself.assertEqual(signup_exception.messages(),expected_messages_no_admin)self.assertEqual(signup_exception.messages(admin=True),expected_messages_admin)response_plain=signup_exception.as_response(html=False)self.assertEqual(response_plain.content.decode(),"\n".join(expected_messages_no_admin))self.assertEqual(response_plain["Content-Type"],"text/plain")# Test string representationsself.assertEqual(str(signup_exception),"ScheduledActivityCancelled, SignupForbidden")self.assertEqual(repr(signup_exception),f"SignupException({signup_exception})")