diff -r eccd1885d42e -r 71c143c0ada3 server/test/unittest_hooks.py --- a/server/test/unittest_hooks.py Wed May 13 16:28:21 2009 +0200 +++ b/server/test/unittest_hooks.py Wed May 13 16:59:50 2009 +0200 @@ -20,9 +20,9 @@ Repository.get_versions = orig_get_versions - + class CoreHooksTC(RepositoryBasedTC): - + def test_delete_internal_entities(self): self.assertRaises(RepositoryError, self.execute, 'DELETE CWEType X WHERE X name "CWEType"') @@ -40,17 +40,17 @@ self.execute('DELETE X in_group Y WHERE X login "toto"') self.execute('SET X in_group Y WHERE X login "toto", Y name "guests"') self.commit() - + def test_delete_required_relations_object(self): self.skip('no sample in the schema ! YAGNI ? Kermaat ?') - + def test_static_vocabulary_check(self): self.assertRaises(ValidationError, self.execute, 'SET X composite "whatever" WHERE X from_entity FE, FE name "CWUser", X relation_type RT, RT name "in_group"') - + def test_missing_required_relations_subject_inline(self): - # missing in_group relation + # missing in_group relation self.execute('INSERT CWUser X: X login "toto", X upassword "hop"') self.assertRaises(ValidationError, self.commit) @@ -76,7 +76,7 @@ self.execute('SET X sender Y WHERE X is Email, Y is EmailAddress') rset = self.execute('Any S WHERE X sender S, X eid %s' % eeid) self.assertEquals(len(rset), 1) - + def test_composite_1(self): self.execute('INSERT EmailAddress X: X address "toto@logilab.fr", X alias "hop"') self.execute('INSERT EmailPart X: X content_format "text/plain", X ordernum 1, X content "this is a test"') @@ -90,7 +90,7 @@ self.commit() rset = self.execute('Any X WHERE X is EmailPart') self.assertEquals(len(rset), 0) - + def test_composite_2(self): self.execute('INSERT EmailAddress X: X address "toto@logilab.fr", X alias "hop"') self.execute('INSERT EmailPart X: X content_format "text/plain", X ordernum 1, X content "this is a test"') @@ -102,7 +102,7 @@ self.commit() rset = self.execute('Any X WHERE X is EmailPart') self.assertEquals(len(rset), 0) - + def test_composite_redirection(self): self.execute('INSERT EmailAddress X: X address "toto@logilab.fr", X alias "hop"') self.execute('INSERT EmailPart X: X content_format "text/plain", X ordernum 1, X content "this is a test"') @@ -148,11 +148,11 @@ self.execute('SET A descr "R&D

yo" WHERE A eid %s' % entity.eid) entity = self.execute('Any A WHERE A eid %s' % entity.eid).get_entity(0, 0) self.assertEquals(entity.descr, u'R&D

yo

') - + + - class UserGroupHooksTC(RepositoryBasedTC): - + def test_user_synchronization(self): self.create_user('toto', password='hop', commit=False) self.assertRaises(AuthenticationError, @@ -193,9 +193,9 @@ self.execute('DELETE EmailAddress X WHERE X eid %s' % eid) self.commit() self.failIf(self.execute('Any X WHERE X created_by Y, X eid >= %(x)s', {'x': eid})) - + class CWPropertyHooksTC(RepositoryBasedTC): - + def test_unexistant_eproperty(self): ex = self.assertRaises(ValidationError, self.execute, 'INSERT CWProperty X: X pkey "bla.bla", X value "hop", X for_user U') @@ -203,12 +203,12 @@ ex = self.assertRaises(ValidationError, self.execute, 'INSERT CWProperty X: X pkey "bla.bla", X value "hop"') self.assertEquals(ex.errors, {'pkey': 'unknown property key'}) - + def test_site_wide_eproperty(self): ex = self.assertRaises(ValidationError, self.execute, 'INSERT CWProperty X: X pkey "ui.site-title", X value "hop", X for_user U') self.assertEquals(ex.errors, {'for_user': "site-wide property can't be set for user"}) - + def test_bad_type_eproperty(self): ex = self.assertRaises(ValidationError, self.execute, 'INSERT CWProperty X: X pkey "ui.language", X value "hop", X for_user U') @@ -216,10 +216,10 @@ ex = self.assertRaises(ValidationError, self.execute, 'INSERT CWProperty X: X pkey "ui.language", X value "hop"') self.assertEquals(ex.errors, {'value': u'unauthorized value'}) - - + + class SchemaHooksTC(RepositoryBasedTC): - + def test_duplicate_etype_error(self): # check we can't add a CWEType or CWRType entity if it already exists one # with the same name @@ -229,7 +229,7 @@ self.execute, 'INSERT CWEType X: X name "Societe"') self.assertRaises((ValidationError, RepositoryError), self.execute, 'INSERT CWRType X: X name "in_group"') - + def test_validation_unique_constraint(self): self.assertRaises(ValidationError, self.execute, 'INSERT CWUser X: X login "admin"') @@ -253,13 +253,13 @@ RepositoryBasedTC.setUp(self) def index_exists(self, etype, attr, unique=False): - dbhelper = self.session.pool.source('system').dbhelper + dbhelper = self.session.pool.source('system').dbhelper sqlcursor = self.session.pool['system'] return dbhelper.index_exists(sqlcursor, SQL_PREFIX + etype, SQL_PREFIX + attr, unique=unique) - + def test_base(self): schema = self.repo.schema - dbhelper = self.session.pool.source('system').dbhelper + dbhelper = self.session.pool.source('system').dbhelper sqlcursor = self.session.pool['system'] self.failIf(schema.has_entity('Societe2')) self.failIf(schema.has_entity('concerne2')) @@ -332,8 +332,8 @@ self.failUnless('subdiv' in snames) snames = [name for name, in self.execute('Any N WHERE S is_instance_of Division, S nom N')] self.failUnless('subdiv' in snames) - - + + def test_perms_synchronization_1(self): schema = self.repo.schema self.assertEquals(schema['CWUser'].get_groups('read'), set(('managers', 'users'))) @@ -374,9 +374,9 @@ self.execute('Any X WHERE X is CWEType, X name "CWEType"') # schema modification hooks tests ######################################### - + def test_uninline_relation(self): - dbhelper = self.session.pool.source('system').dbhelper + dbhelper = self.session.pool.source('system').dbhelper sqlcursor = self.session.pool['system'] # Personne inline2 Affaire inline # insert a person without inline2 relation (not mandatory) @@ -410,7 +410,7 @@ self.assertEquals(rset.rows[0], [peid, aeid]) def test_indexed_change(self): - dbhelper = self.session.pool.source('system').dbhelper + dbhelper = self.session.pool.source('system').dbhelper sqlcursor = self.session.pool['system'] try: self.execute('SET X indexed TRUE WHERE X relation_type R, R name "sujet"') @@ -428,7 +428,7 @@ self.failIf(self.index_exists('Affaire', 'sujet')) def test_unique_change(self): - dbhelper = self.session.pool.source('system').dbhelper + dbhelper = self.session.pool.source('system').dbhelper sqlcursor = self.session.pool['system'] try: try: @@ -453,7 +453,7 @@ self.commit() self.failIf(self.schema['Affaire'].has_unique_values('sujet')) self.failIf(self.index_exists('Affaire', 'sujet', unique=True)) - + class WorkflowHooksTC(RepositoryBasedTC): @@ -468,7 +468,7 @@ # enforcement self.execute('SET X require_group G WHERE G name "users", X transition_of ET, ET name "CWUser"') self.commit() - + def tearDown(self): self.execute('DELETE X require_group G WHERE G name "users", X transition_of ET, ET name "CWUser"') self.commit() @@ -483,7 +483,7 @@ initialstate = self.execute('Any N WHERE S name N, X in_state S, X eid %(x)s', {'x' : ueid})[0][0] self.assertEquals(initialstate, u'activated') - + def test_initial_state(self): cnx = self.login('stduser') cu = cnx.cursor() @@ -495,7 +495,7 @@ self.execute('INSERT CWUser X: X login "badaboum", X upassword %(pwd)s, ' 'X in_state S, X in_group G WHERE S name "deactivated", G name "users"', {'pwd': 'oops'}) self.commit() - + # test that the workflow is correctly enforced def test_transition_checking1(self): cnx = self.login('stduser') @@ -505,7 +505,7 @@ cu.execute, 'SET X in_state S WHERE X eid %(x)s, S eid %(s)s', {'x': ueid, 's': self.s_activated}, 'x') cnx.close() - + def test_transition_checking2(self): cnx = self.login('stduser') cu = cnx.cursor() @@ -514,7 +514,7 @@ cu.execute, 'SET X in_state S WHERE X eid %(x)s, S eid %(s)s', {'x': ueid, 's': self.s_dummy}, 'x') cnx.close() - + def test_transition_checking3(self): cnx = self.login('stduser') cu = cnx.cursor() @@ -530,7 +530,7 @@ {'x': ueid, 's': self.s_activated}, 'x') cnx.commit() cnx.close() - + def test_transition_checking4(self): cnx = self.login('stduser') cu = cnx.cursor() @@ -559,7 +559,7 @@ self.assertEquals(tr.comment, None) self.assertEquals(tr.from_state[0].eid, self.s_activated) self.assertEquals(tr.to_state[0].eid, self.s_deactivated) - + self.session.set_shared_data('trcomment', u'il est pas sage celui-la') self.session.set_shared_data('trcommentformat', u'text/plain') self.execute('SET X in_state S WHERE X eid %(x)s, S eid %(s)s', @@ -591,6 +591,6 @@ cu = cnx.cursor() self.failUnless(cu.execute("INSERT Note X: X type 'a', X in_state S WHERE S name 'todo'")) cnx.commit() - + if __name__ == '__main__': unittest_main()