class ValidateTest(SeecrTestCase): def setUp(self): SeecrTestCase.setUp(self) self.validate = Validate(xsd) self.interceptor = CallTrace('interceptor', returnValues={ 'all_unknown': (x for x in ['done']), 'any_unknown': (x for x in ['done']), 'do_unknown': None, 'call_unknown': 'done', 'logException': None}, onlySpecifiedMethods=True) self.validate.addObserver(self.interceptor) self.observable = Observable() self.observable.addObserver(self.validate) def testValid(self): validXml = '<lom xmlns="http://ltsc.ieee.org/xsd/LOM"/>' self.assertEquals(['done'], list(compose(self.observable.all.someMethod(parse(StringIO(validXml)))))) self.assertEquals(['done'], list(compose(self.observable.any.someMethod(parse(StringIO(validXml)))))) self.interceptor.calledMethods.reset() self.observable.do.someMethod(parse(StringIO(validXml))) self.assertEquals(['do_unknown'], [m.name for m in self.interceptor.calledMethods]) self.interceptor.calledMethods.reset() self.assertEquals('done', self.observable.call.someMethod(parse(StringIO(validXml)))) def testInvalid(self): invalidXml = '<lom xmlns="http://ltsc.ieee.org/xsd/LOM_this_should_not_work"/>' try: list(compose(self.observable.any.someMethod(parse(StringIO(invalidXml))))) self.fail('must raise exception') except ValidateException: pass self.assertEquals(['logException'], [m.name for m in self.interceptor.calledMethods]) exception = self.interceptor.calledMethods[0].args[0] self.assertTrue("ERROR:SCHEMASV:SCHEMAV_CVC_ELT_1: Element '{http://ltsc.ieee.org/xsd/LOM_this_should_not_work}lom': No matching global declaration available for the validation root." in str(exception), str(exception)) self.assertTrue("1 %s" % invalidXml in str(exception), str(exception)) self.assertRaises(ValidateException, lambda: list(compose(self.observable.all.someMethod(parse(StringIO(invalidXml)))))) self.assertRaises(ValidateException, lambda: list(compose(self.observable.do.someMethod(parse(StringIO(invalidXml)))))) self.assertRaises(ValidateException, lambda: list(compose(self.observable.call.someMethod(parse(StringIO(invalidXml)))))) def testAssertInvalidString(self): invalid = '<OAI-PMH/>' try: list(compose(self.observable.any.message(parse(StringIO(invalid))))) self.fail('must raise exception') except ValidateException, e: pass self.assertEquals(['logException'], [m.name for m in self.interceptor.calledMethods]) exception = self.interceptor.calledMethods[0].args[0] self.assertTrue("ERROR:SCHEMASV:SCHEMAV_CVC_ELT_1: Element 'OAI-PMH': No matching global declaration available for the validation root." in str(exception), str(exception)) self.assertTrue("1 <OAI-PMH/>" in str(exception), str(exception))
def setUp(self): SeecrTestCase.setUp(self) self.validate = Validate(xsd) self.interceptor = CallTrace('interceptor', returnValues={ 'all_unknown': (x for x in ['done']), 'any_unknown': (x for x in ['done']), 'do_unknown': None, 'call_unknown': 'done', 'logException': None }, onlySpecifiedMethods=True) self.validate.addObserver(self.interceptor) self.observable = Observable() self.observable.addObserver(self.validate)
def testTransparencyInCaseOfNoAnyAndCallResponders(self): observer = CallTrace('observer', returnValues={ 'f': (i for i in [42]), 'g': 42 }) root = be((Observable(), (Validate(xsd), ), (observer, ))) self.assertEqual([42], list(compose(root.any.f()))) self.assertEqual(42, root.call.g())
def setUp(self): SeecrTestCase.setUp(self) self.validate = Validate(xsd) self.interceptor = CallTrace('interceptor', returnValues={ 'all_unknown': (x for x in ['done']), 'any_unknown': (x for x in ['done']), 'do_unknown': None, 'call_unknown': 'done', 'logException': None}, onlySpecifiedMethods=True) self.validate.addObserver(self.interceptor) self.observable = Observable() self.observable.addObserver(self.validate)
class ValidateTest(SeecrTestCase): def setUp(self): SeecrTestCase.setUp(self) self.validate = Validate(xsd) self.interceptor = CallTrace('interceptor', returnValues={ 'all_unknown': (x for x in ['done']), 'any_unknown': (x for x in ['done']), 'do_unknown': None, 'call_unknown': 'done', 'logException': None }, onlySpecifiedMethods=True) self.validate.addObserver(self.interceptor) self.observable = Observable() self.observable.addObserver(self.validate) def testValid(self): validXml = '<lom xmlns="http://ltsc.ieee.org/xsd/LOM"/>' self.assertEqual(['done'], list( compose( self.observable.all.someMethod( parse(StringIO(validXml)))))) self.assertEqual(['done'], list( compose( self.observable.any.someMethod( parse(StringIO(validXml)))))) self.interceptor.calledMethods.reset() self.observable.do.someMethod(parse(StringIO(validXml))) self.assertEqual(['do_unknown'], [m.name for m in self.interceptor.calledMethods]) self.interceptor.calledMethods.reset() self.assertEqual( 'done', self.observable.call.someMethod(parse(StringIO(validXml)))) def testInvalid(self): invalidXml = '<lom xmlns="http://ltsc.ieee.org/xsd/LOM_this_should_not_work"/>' try: list( compose( self.observable.any.someMethod(parse( StringIO(invalidXml))))) self.fail('must raise exception') except ValidateException: pass self.assertEqual(['logException'], [m.name for m in self.interceptor.calledMethods]) exception = self.interceptor.calledMethods[0].args[0] self.assertTrue( "ERROR:SCHEMASV:SCHEMAV_CVC_ELT_1: Element '{http://ltsc.ieee.org/xsd/LOM_this_should_not_work}lom': No matching global declaration available for the validation root." in str(exception), str(exception)) self.assertTrue("1 %s" % invalidXml in str(exception), str(exception)) self.assertRaises( ValidateException, lambda: list( compose( self.observable.all.someMethod(parse(StringIO(invalidXml))) ))) self.assertRaises( ValidateException, lambda: list( compose( self.observable.do.someMethod(parse(StringIO(invalidXml)))) )) self.assertRaises( ValidateException, lambda: list( compose( self.observable.call.someMethod(parse(StringIO(invalidXml)) )))) def testAssertInvalidString(self): invalid = '<OAI-PMH/>' try: list(compose(self.observable.any.message(parse( StringIO(invalid))))) self.fail('must raise exception') except ValidateException as e: pass self.assertEqual(['logException'], [m.name for m in self.interceptor.calledMethods]) exception = self.interceptor.calledMethods[0].args[0] self.assertTrue( "ERROR:SCHEMASV:SCHEMAV_CVC_ELT_1: Element 'OAI-PMH': No matching global declaration available for the validation root." in str(exception), str(exception)) self.assertTrue("1 <OAI-PMH/>" in str(exception), str(exception)) def testTransparencyInCaseOfNoAnyAndCallResponders(self): observer = CallTrace('observer', returnValues={ 'f': (i for i in [42]), 'g': 42 }) root = be((Observable(), (Validate(xsd), ), (observer, ))) self.assertEqual([42], list(compose(root.any.f()))) self.assertEqual(42, root.call.g())