def test_score_outside_range(self): """ Test score outside the range raises exception """ data = copy(REQUEST_TEMPLATE_DEFAULTS) with self.assertRaises(LtiError): data['score'] = 10 __, __, __, __ = parse_grade_xml_body(REQUEST_BODY_TEMPLATE_VALID.format(**data)) with self.assertRaises(LtiError): data['score'] = -10 __, __, __, __ = parse_grade_xml_body(REQUEST_BODY_TEMPLATE_VALID.format(**data))
def test_score_outside_range(self): """ Test score outside the range raises exception """ data = copy(REQUEST_TEMPLATE_DEFAULTS) with self.assertRaises(LtiError): data['score'] = 10 _, _, _, _ = parse_grade_xml_body(REQUEST_BODY_TEMPLATE_VALID.format(**data)) with self.assertRaises(LtiError): data['score'] = -10 _, _, _, _ = parse_grade_xml_body(REQUEST_BODY_TEMPLATE_VALID.format(**data))
def test_missing_sourced_id(self): """ Test missing <sourcedId> raises LtiError """ with self.assertRaises(LtiError): __, __, __, __ = parse_grade_xml_body( REQUEST_BODY_TEMPLATE_MISSING_SOURCED_ID.format( **REQUEST_TEMPLATE_DEFAULTS))
def test_missing_body(self): """ Test missing <imsx_POXBody> raises LtiError """ with self.assertRaises(LtiError): __, __, __, __ = parse_grade_xml_body( REQUEST_BODY_TEMPLATE_MISSING_BODY.format( **REQUEST_TEMPLATE_DEFAULTS))
def test_missing_action(self): """ Test missing <replaceResultRequest> raises LtiError """ with self.assertRaises(LtiError): __, __, __, __ = parse_grade_xml_body( REQUEST_BODY_TEMPLATE_MISSING_ACTION.format( **REQUEST_TEMPLATE_DEFAULTS))
def test_missing_score(self): """ Test missing score <textString> raises LtiError """ with self.assertRaises(LtiError): __, __, __, __ = parse_grade_xml_body( REQUEST_BODY_TEMPLATE_MISSING_SCORE.format( **REQUEST_TEMPLATE_DEFAULTS))
def test_missing_score(self): """ Test missing score <textString> raises LtiError """ with self.assertRaises(LtiError): __, __, __, __ = parse_grade_xml_body( REQUEST_BODY_TEMPLATE_MISSING_SCORE.format(**REQUEST_TEMPLATE_DEFAULTS) )
def test_missing_action(self): """ Test missing <replaceResultRequest> raises LtiError """ with self.assertRaises(LtiError): __, __, __, __ = parse_grade_xml_body( REQUEST_BODY_TEMPLATE_MISSING_ACTION.format(**REQUEST_TEMPLATE_DEFAULTS) )
def test_missing_body(self): """ Test missing <imsx_POXBody> raises LtiError """ with self.assertRaises(LtiError): __, __, __, __ = parse_grade_xml_body( REQUEST_BODY_TEMPLATE_MISSING_BODY.format(**REQUEST_TEMPLATE_DEFAULTS) )
def test_missing_sourced_id(self): """ Test missing <sourcedId> raises LtiError """ with self.assertRaises(LtiError): __, __, __, __ = parse_grade_xml_body( REQUEST_BODY_TEMPLATE_MISSING_SOURCED_ID.format(**REQUEST_TEMPLATE_DEFAULTS) )
def test_missing_msg_id(self): """ Test missing <imsx_messageIdentifier> raises LtiError """ with self.assertRaises(LtiError): __, __, __, __ = parse_grade_xml_body( REQUEST_BODY_TEMPLATE_MISSING_MSG_ID.format(**REQUEST_TEMPLATE_DEFAULTS) )
def test_missing_msg_id(self): """ Test missing <imsx_messageIdentifier> raises LtiError """ with self.assertRaises(LtiError): __, __, __, __ = parse_grade_xml_body( REQUEST_BODY_TEMPLATE_MISSING_MSG_ID.format( **REQUEST_TEMPLATE_DEFAULTS))
def test_invalid_score(self): """ Test non-float score raises exception """ data = copy(REQUEST_TEMPLATE_DEFAULTS) data['score'] = '1,0' with self.assertRaises(Exception): _, _, _, _ = parse_grade_xml_body(REQUEST_BODY_TEMPLATE_VALID.format(**data))
def test_invalid_score(self): """ Test non-float score raises exception """ data = copy(REQUEST_TEMPLATE_DEFAULTS) data['score'] = '1,0' with self.assertRaises(Exception): __, __, __, __ = parse_grade_xml_body(REQUEST_BODY_TEMPLATE_VALID.format(**data))
def test_valid_request_body(self): """ Test correct values returned on valid request body """ msg_id, sourced_id, score, action = parse_grade_xml_body( REQUEST_BODY_TEMPLATE_VALID.format(**REQUEST_TEMPLATE_DEFAULTS)) self.assertEqual(msg_id, REQUEST_TEMPLATE_DEFAULTS['msg_id']) self.assertEqual(sourced_id, REQUEST_TEMPLATE_DEFAULTS['sourced_id']) self.assertEqual(score, REQUEST_TEMPLATE_DEFAULTS['score']) self.assertEqual(action, REQUEST_TEMPLATE_DEFAULTS['action'])
def test_valid_request_body(self): """ Test correct values returned on valid request body """ msg_id, sourced_id, score, action = parse_grade_xml_body( REQUEST_BODY_TEMPLATE_VALID.format(**REQUEST_TEMPLATE_DEFAULTS) ) self.assertEqual(msg_id, REQUEST_TEMPLATE_DEFAULTS['msg_id']) self.assertEqual(sourced_id, REQUEST_TEMPLATE_DEFAULTS['sourced_id']) self.assertEqual(score, REQUEST_TEMPLATE_DEFAULTS['score']) self.assertEqual(action, REQUEST_TEMPLATE_DEFAULTS['action'])
def test_upper_score_boundary(self): """ Test correct values returned on valid request body with a score that matches the upper boundary of allowed scores """ data = copy(REQUEST_TEMPLATE_DEFAULTS) data['score'] = 1.0 msg_id, sourced_id, score, action = parse_grade_xml_body( REQUEST_BODY_TEMPLATE_VALID.format(**data)) self.assertEqual(msg_id, data['msg_id']) self.assertEqual(sourced_id, data['sourced_id']) self.assertEqual(score, data['score']) self.assertEqual(action, data['action'])
def test_upper_score_boundary(self): """ Test correct values returned on valid request body with a score that matches the upper boundary of allowed scores """ data = copy(REQUEST_TEMPLATE_DEFAULTS) data['score'] = 1.0 msg_id, sourced_id, score, action = parse_grade_xml_body( REQUEST_BODY_TEMPLATE_VALID.format(**data) ) self.assertEqual(msg_id, data['msg_id']) self.assertEqual(sourced_id, data['sourced_id']) self.assertEqual(score, data['score']) self.assertEqual(action, data['action'])
def test_string_with_unicode_chars(self): """ Test that system is tolerant to data which has unicode chars in strings which are not specified as unicode. """ request_body_template = textwrap.dedent(""" <?xml version="1.0" encoding="UTF-8"?> <imsx_POXEnvelopeRequest xmlns="http://www.imsglobal.org/services/ltiv1p1/xsd/imsoms_v1p0"> <imsx_POXHeader> <imsx_POXRequestHeaderInfo> <imsx_version>V1.0</imsx_version> <imsx_messageIdentifier>ţéšţ_message_id</imsx_messageIdentifier> </imsx_POXRequestHeaderInfo> </imsx_POXHeader> <imsx_POXBody> <ţéšţ_action> <resultRecord> <sourcedGUID> <sourcedId>ţéšţ_sourced_id</sourcedId> </sourcedGUID> <result> <resultScore> <language>en-us</language> <textString>1.0</textString> </resultScore> </result> </resultRecord> </ţéšţ_action> </imsx_POXBody> </imsx_POXEnvelopeRequest> """) msg_id, sourced_id, score, action = parse_grade_xml_body( request_body_template) self.assertEqual(msg_id, u'ţéšţ_message_id') self.assertEqual(sourced_id, u'ţéšţ_sourced_id') self.assertEqual(score, 1.0) self.assertEqual(action, u'ţéšţ_action')
def test_invalid_xml(self): """ Test invalid xml raises exception """ with self.assertRaises(LtiError): __, __, __, __ = parse_grade_xml_body('<xml>')
def test_empty_xml(self): """ Test empty xml raises exception """ with self.assertRaises(LtiError): __, __, __, __ = parse_grade_xml_body('')