def METHOD_NAME(self):
    global_jsons = []
    def _write_json_side_effect(desc, path):
        nonlocal global_jsons
        global_jsons.append([desc, path])
    desc_file = (os.path.dirname(__file__) +
                 '/sample_data/expected_desc_write_session.dict')
    with ru.ru_open(desc_file) as session:
        data = session.readlines()
    expected_session = eval(''.join([x for x in data]))
    ru.write_json = mock.MagicMock(side_effect=_write_json_side_effect)
    amgr = mock.Mock()
    amgr.resource_desc = {'resource' : 'xsede.stampede',
                          'walltime' : 59,
                          'cpus'     : 128,
                          'gpus'     : 64,
                          'project'  : 'xyz',
                          'queue'    : 'high'}
    amgr._uid = 'amgr.0000'
    amgr.sid = 'test_amgr'
    amgr._wfp = mock.Mock()
    amgr._wfp._uid = 'wfp.0000'
    amgr._rmgr = mock.Mock()
    amgr._rmgr._uid = 'rmgr.0000'
    amgr._task_manager = mock.Mock()
    amgr._task_manager._uid = 'tmgr.0000'
    pipe = mock.Mock()
    pipe.uid = 'pipe.0000'
    pipe.name = 'pipe.0000'
    pipe.state_history = ['DESCRIBED']
    stage = mock.Mock()
    stage.uid = 'stage.0000'
    stage.name = 'stage.0000'
    stage.state_history = ['DESCRIBED']
    task = mock.Mock()
    task.uid = 'task.0000'
    task.name = 'task.0000'
    task.rts_uid = 'unit.000000'
    task.state_history = ['DESCRIBED']
    stage.tasks = [task]
    pipe.stages = [stage]
    amgr._workflows = [[pipe]]
    write_session_description(amgr)
    self.assertEqual(global_jsons[0][0], expected_session)
    self.assertEqual(global_jsons[0][1], 'test_amgr/radical.entk.test_amgr.json')