diff --git a/product/ERP5Type/tests/testERP5Type.py b/product/ERP5Type/tests/testERP5Type.py
index f4d66768569ba120d72d3b2c2eec74edc20be348..c8f07150d231a06a0e52c99d747ebe05fce3cbaf 100644
--- a/product/ERP5Type/tests/testERP5Type.py
+++ b/product/ERP5Type/tests/testERP5Type.py
@@ -821,6 +821,53 @@ class TestPropertySheet:
       self.failUnless(person.hasProperty('dummy_ps_prop'))
       self.assertEquals('a value', person.getDummyPsProp())
 
+    def test_17_WorkflowStateAccessor(self):
+      """Tests for workflow state. assumes that validation state is chained to
+      the Person portal type and that this workflow has 'validation_state' as
+      state_variable.
+      """
+      person = self.getPersonModule().newContent(id='1', portal_type='Person')
+      wf = self.getWorkflowTool().validation_workflow
+      # those are assumptions for this test.
+      self.failUnless(wf.getId() in
+                        self.getWorkflowTool().getChainFor('Person'))
+      self.assertEquals('validation_state', wf.variables.getStateVar())
+      initial_state = wf.states[wf.initial_state]
+      other_state = wf.states['validated']
+
+      self.failUnless(hasattr(person, 'getValidationState'))
+      self.failUnless(hasattr(person, 'getValidationStateTitle'))
+      self.failUnless(hasattr(person, 'getTranslatedValidationStateTitle'))
+
+      self.assertEquals(initial_state.getId(), person.getValidationState())
+      self.assertEquals(initial_state.title,
+                        person.getValidationStateTitle())
+      # XXX we do not have translation system set up at that point
+      self.assertEquals(initial_state.title,
+                        person.getTranslatedValidationStateTitle())
+      
+      self.assertEquals(initial_state.getId(),
+                        person.getProperty('validation_state'))
+      self.assertEquals(initial_state.title,
+                        person.getProperty('validation_state_title'))
+      # XXX we do not have translation system set up at that point
+      self.assertEquals(initial_state.title,
+                        person.getProperty('translated_validation_state_title'))
+      
+      # pass a transition and check accessors again.
+      person.validate()
+      self.assertEquals(other_state.getId(), person.getValidationState())
+      self.assertEquals(other_state.title,
+                        person.getValidationStateTitle())
+      self.assertEquals(other_state.title,
+                        person.getTranslatedValidationStateTitle())
+      self.assertEquals(other_state.getId(),
+                        person.getProperty('validation_state'))
+      self.assertEquals(other_state.title,
+                        person.getProperty('validation_state_title'))
+      self.assertEquals(other_state.title,
+                        person.getProperty('translated_validation_state_title'))
+
 if __name__ == '__main__':
     framework()
 else: