package org.openstack.atlas.api.validation.validators; import org.junit.Before; import org.junit.Ignore; import org.junit.Test; import org.junit.experimental.runners.Enclosed; import org.junit.runner.RunWith; import org.openstack.atlas.api.validation.results.ValidatorResult; import org.openstack.atlas.docs.loadbalancers.api.v1.SslTermination; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; import static org.openstack.atlas.api.validation.context.HttpRequestType.PUT; @RunWith(Enclosed.class) public class SslTerminationValidatorTest { public static class WhenValidatingPut { private SslTermination sslTermination; private SslTerminationValidator validator; @Before public void standUp() { validator = new SslTerminationValidator(); sslTermination = new SslTermination(); } @Test public void shouldFailForInvalidObject() { assertFalse(validator.validate(new SslTermination(), PUT).passedValidation()); } @Test public void shouldFailIfOnlyICert() { sslTermination.setIntermediateCertificate("BLIGGITYBLAH"); assertFalse(validator.validate(sslTermination, PUT).passedValidation()); } @Test public void shouldFailIfOnlyCert() { sslTermination.setCertificate("BLIGGITYBLAH"); sslTermination.setPrivatekey(null); assertFalse(validator.validate(sslTermination, PUT).passedValidation()); } @Test public void shouldFailIfOnlyKey() { sslTermination.setPrivatekey("BLIGGITYBLAH"); assertFalse(validator.validate(sslTermination, PUT).passedValidation()); } @Test public void shouldFailIfOnlyKeyAndCert() { sslTermination.setPrivatekey("BLIGGITYBLAH"); sslTermination.setCertificate("BLIGGITYBLAH"); assertFalse(validator.validate(sslTermination, PUT).passedValidation()); } @Test public void shouldAcceptValidSslTermination() { sslTermination.setPrivatekey("BLIGGITYBLAH"); sslTermination.setCertificate("BLIGGITYBLAH"); sslTermination.setSecurePort(443); assertTrue(validator.validate(sslTermination, PUT).passedValidation()); } @Test public void shouldAcceptFullValidSslTermination() { sslTermination.setPrivatekey("BLIGGITYBLAH"); sslTermination.setCertificate("BLIGGITYBLAH"); sslTermination.setIntermediateCertificate("BLIGGITYBLAH"); sslTermination.setSecurePort(443); sslTermination.setEnabled(true); sslTermination.setSecureTrafficOnly(true); assertTrue(validator.validate(sslTermination, PUT).passedValidation()); } @Test public void shouldAcceptNonRequiredOnly() { sslTermination.setSecurePort(443); sslTermination.setEnabled(true); sslTermination.setSecureTrafficOnly(true); assertTrue(validator.validate(sslTermination, PUT).passedValidation()); } @Test public void shouldFailIfCertOrKeyIsNull() { sslTermination.setSecurePort(443); sslTermination.setEnabled(true); sslTermination.setSecureTrafficOnly(true); assertTrue(validator.validate(sslTermination, PUT).passedValidation()); } @Test public void shouldFailIfCertOrKeyIsNullAndICertIsNot() { sslTermination.setSecurePort(443); sslTermination.setEnabled(true); sslTermination.setSecureTrafficOnly(true); sslTermination.setIntermediateCertificate("blahICert"); assertFalse(validator.validate(sslTermination, PUT).passedValidation()); } @Test public void shouldAcceptSecurePortOnly() { sslTermination.setSecurePort(443); assertTrue(validator.validate(sslTermination, PUT).passedValidation()); } @Test public void shouldAcceptEnabledOnly() { sslTermination.setEnabled(true); assertTrue(validator.validate(sslTermination, PUT).passedValidation()); } @Test public void shouldAcceptEnabledisSecureTrafficOnly() { sslTermination.setEnabled(true); sslTermination.setSecureTrafficOnly(true); assertTrue(validator.validate(sslTermination, PUT).passedValidation()); } @Test public void shouldAcceptisSecureTrafficOnly() { sslTermination.setSecureTrafficOnly(true); assertTrue(validator.validate(sslTermination, PUT).passedValidation()); } } }