'Test create_volume with fake_volume.'

@mock.patch.object(qnap.QnapISCSIDriver, '_get_volume_metadata')
@mock.patch.object(qnap.QnapISCSIDriver, '_gen_random_name')
@mock.patch('cinder.volume.drivers.qnap.QnapAPIExecutor')
def test_create_volume_positive(self, mock_api_executor, mock_gen_random_name, mock_get_volume_metadata):

    fake_volume = VolumeClass('fakeDisplayName', 'fakeId', 100, 'fakeLunName')
    mock_api_executor.return_value.get_basic_info.return_value = ('ES1640dc    ', 'ES1640dc    ', '1.1.3')
    mock_api_executor.return_value.get_lun_info.side_effect = [None, self.get_lun_info_return_value()]
    mock_gen_random_name.return_value = 'fakeLun'
    mock_api_executor.return_value.create_lun.return_value = 'fakeIndex'
    mock_get_volume_metadata.return_value = {}
    self.driver = qnap.QnapISCSIDriver(configuration=create_configuration('admin', 'qnapadmin', 'http://1.2.3.4:8080', '1.2.3.4', 'Pool1', True))
    self.driver.do_setup('context')
    self.driver.create_volume(fake_volume)
    mock_api_executor.return_value.create_lun.assert_called_once_with(fake_volume, self.driver.configuration.qnap_poolname, 'fakeLun', True)
    expected_call_list = [mock.call(LUNName='fakeLun'), mock.call(LUNIndex='fakeIndex')]
    self.assertEqual(expected_call_list, mock_api_executor.return_value.get_lun_info.call_args_list)
