package fr.gouv.vitam.access.external.client;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNotSame;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
import org.junit.Before;
import org.junit.Test;
import fr.gouv.vitam.common.client.VitamClientFactoryInterface.VitamClientType;
import fr.gouv.vitam.common.client.configuration.ClientConfigurationImpl;
public class AccessExternalClientFactoryTest {
@Before
public void initFileConfiguration() {
AccessExternalClientFactory
.changeMode(AccessExternalClientFactory.changeConfigurationFile("access-external-client-test.conf"));
}
@Test
public void getClientInstanceTest() {
try {
AccessExternalClientFactory.changeMode(new ClientConfigurationImpl(null, 10));;
fail("Should raized an exception");
} catch (final IllegalArgumentException e) {
}
try {
AccessExternalClientFactory.changeMode(new ClientConfigurationImpl("localhost", -10));
fail("Should raized an exception");
} catch (final IllegalArgumentException e) {
}
try {
AccessExternalClientFactory.changeMode(new ClientConfigurationImpl());
fail("Should raized an exception");
} catch (final IllegalArgumentException e) {
}
AccessExternalClientFactory.changeMode(null);
final AccessExternalClient client =
AccessExternalClientFactory.getInstance().getClient();
assertNotNull(client);
final AccessExternalClient client2 =
AccessExternalClientFactory.getInstance().getClient();
assertNotNull(client2);
assertNotSame(client, client2);
AccessExternalClientFactory.changeMode(new ClientConfigurationImpl("server", 1025));
final AccessExternalClient client3 =
AccessExternalClientFactory.getInstance().getClient();
assertTrue(client3 instanceof AccessExternalClientRest);
}
@Test
public void changeDefaultClientTypeTest() {
final AccessExternalClient client =
AccessExternalClientFactory.getInstance().getClient();
assertTrue(client instanceof AccessExternalClientRest);
assertEquals(VitamClientType.PRODUCTION, AccessExternalClientFactory.getInstance().getVitamClientType());
AccessExternalClientFactory.changeMode(null);
final AccessExternalClient client2 =
AccessExternalClientFactory.getInstance().getClient();
assertTrue(client2 instanceof AccessExternalClientMock);
assertEquals(VitamClientType.MOCK, AccessExternalClientFactory.getInstance().getVitamClientType());
AccessExternalClientFactory.changeMode(new ClientConfigurationImpl("server", 1025));
final AccessExternalClient client3 =
AccessExternalClientFactory.getInstance().getClient();
assertTrue(client3 instanceof AccessExternalClientRest);
assertEquals(VitamClientType.PRODUCTION, AccessExternalClientFactory.getInstance().getVitamClientType());
}
@Test(expected = IllegalArgumentException.class)
public void changeClientTypeAndGetExceptionTest() {
AccessExternalClientFactory.changeMode(new ClientConfigurationImpl("localhost", 100));
AccessExternalClientFactory.getInstance().setVitamClientType(VitamClientType.valueOf("BAD"));
AccessExternalClientFactory.getInstance().getClient();
}
@Test
public void testInitWithoutConfigurationFile() {
// assume that a fake file is like no file
AccessExternalClientFactory.changeMode(
AccessExternalClientFactory.changeConfigurationFile("tmp"));
final AccessExternalClient client = AccessExternalClientFactory.getInstance().getClient();
assertTrue(client instanceof AccessExternalClientMock);
assertEquals(VitamClientType.MOCK, AccessExternalClientFactory.getInstance().getVitamClientType());
}
@Test
public void testInitWithConfigurationFile() {
final AccessExternalClient client =
AccessExternalClientFactory.getInstance().getClient();
assertTrue(client instanceof AccessExternalClientRest);
assertEquals(VitamClientType.PRODUCTION, AccessExternalClientFactory.getInstance().getVitamClientType());
}
}