def test_taskdetail_save(self):
        # Create a generic taskdetail to save
        td_id = uuidutils.generate_uuid()
        td_name = 'td-%s' % (td_id)
        tsk = self.tsks[0]
        td = taskdetail.TaskDetail(td_name, tsk, td_id)

        # Save the generic taskdetail to the backend and record uuid/name
        b_api.taskdetail_save(td)
        self.td_names.append(td_name)
        self.td_ids.append(td_id)

        # Get the created taskdetail and check for default attributes
        actual = b_api.taskdetail_get(td_id)

        self.assertIsNotNone(actual)
        self.assertIsNone(actual.state)
        self.assertIsNone(actual.results)
        self.assertIsNone(actual.exception)
        self.assertIsNone(actual.stacktrace)
        self.assertIsNone(actual.meta)

        # Change the generic taskdetail's attributes
        td.state = 'SUCCESS'
        td.exception = 'ERROR'
        td.stacktrace = 'STACKTRACE'
        td.meta = 'META'

        # Save the changed taskdetail
        b_api.taskdetail_save(td)

        # Get the updated taskdetail and check for updated attributes
        actual = b_api.taskdetail_get(td_id)

        self.assertEquals(actual.state, 'SUCCESS')
        self.assertIsNone(actual.results)
        self.assertEquals(actual.exception, 'ERROR')
        self.assertEquals(actual.stacktrace, 'STACKTRACE')
        self.assertEquals(actual.meta, 'META')