package com.sequenceiq.cloudbreak.cloud.init; import static com.sequenceiq.cloudbreak.cloud.model.Platform.platform; import static com.sequenceiq.cloudbreak.cloud.model.Variant.variant; import static org.junit.Assert.assertEquals; import java.util.Collections; import java.util.List; import org.junit.Before; import org.junit.Test; import org.springframework.test.util.ReflectionTestUtils; import com.google.common.collect.Lists; import com.sequenceiq.cloudbreak.cloud.Authenticator; import com.sequenceiq.cloudbreak.cloud.CloudConnector; import com.sequenceiq.cloudbreak.cloud.CredentialConnector; import com.sequenceiq.cloudbreak.cloud.InstanceConnector; import com.sequenceiq.cloudbreak.cloud.MetadataCollector; import com.sequenceiq.cloudbreak.cloud.PlatformParameters; import com.sequenceiq.cloudbreak.cloud.ResourceConnector; import com.sequenceiq.cloudbreak.cloud.Setup; import com.sequenceiq.cloudbreak.cloud.Validator; import com.sequenceiq.cloudbreak.cloud.model.Platform; import com.sequenceiq.cloudbreak.cloud.model.Variant; public class CloudPlatformConnectorsTest { private CloudPlatformConnectors c = new CloudPlatformConnectors(); @Before public void setUp() { List<CloudConnector> connectorList = Lists.newArrayList(); connectorList.add(getConnector("MULTIWITHDEFAULT", "ONE")); connectorList.add(getConnector("MULTIWITHDEFAULT", "TWO")); connectorList.add(getConnector("SINGLE", "SINGLE")); ReflectionTestUtils.setField(c, "cloudConnectors", connectorList); ReflectionTestUtils.setField(c, "platformDefaultVariants", "MULTIWITHDEFAULT:ONE"); c.cloudPlatformConnectors(); } @Test public void getDefaultForOpenstack() { CloudConnector conn = c.getDefault(platform("MULTIWITHDEFAULT")); assertEquals("ONE", conn.variant().value()); } @Test public void getDefaultForGcp() { CloudConnector conn = c.getDefault(platform("SINGLE")); assertEquals("SINGLE", conn.variant().value()); } @Test public void getOpenstackNative() { CloudConnector conn = c.get(platform("MULTIWITHDEFAULT"), variant("TWO")); assertEquals("TWO", conn.variant().value()); } @Test public void getWithNullVariant() { CloudConnector conn = c.get(platform("MULTIWITHDEFAULT"), variant(null)); //should fall back to default assertEquals("ONE", conn.variant().value()); } @Test public void getWithEmptyVariant() { CloudConnector conn = c.get(platform("MULTIWITHDEFAULT"), variant("")); //should fall back to default assertEquals("ONE", conn.variant().value()); } @Test(expected = IllegalStateException.class) public void getConnectorDefaultWithNoDefault() { List<CloudConnector> connectorList = Lists.newArrayList(); connectorList.add(getConnector("NODEFAULT", "ONE")); connectorList.add(getConnector("NODEFAULT", "TWO")); ReflectionTestUtils.setField(c, "cloudConnectors", connectorList); c.cloudPlatformConnectors(); } private CloudConnector getConnector(final String platform, final String variant) { return new CloudConnector() { @Override public Authenticator authentication() { return null; } @Override public Setup setup() { return null; } @Override public List<Validator> validators() { return Collections.emptyList(); } @Override public CredentialConnector credentials() { return null; } @Override public ResourceConnector resources() { return null; } @Override public InstanceConnector instances() { return null; } @Override public MetadataCollector metadata() { return null; } @Override public PlatformParameters parameters() { return null; } @Override public Variant variant() { return Variant.variant(variant); } @Override public Platform platform() { return Platform.platform(platform); } }; } }