Skip to content

Instantly share code, notes, and snippets.

@mgenov
Created December 21, 2010 10:12
Show Gist options
  • Save mgenov/749745 to your computer and use it in GitHub Desktop.
Save mgenov/749745 to your computer and use it in GitHub Desktop.
ServiceProvisionManager Contract Test
import org.junit.Test;
import static org.junit.Assert.*;
/**
*
* ServiceProvisionContract is a contract test that is checking the correct behaviour of the {@link ServiceProvisionManager} implementations.
*
* @author Miroslav Genov (mgenov@gmail.com)
*/
public abstract class ServiceProvisionManagerContract {
@Test
public void serviceProvisioningUsingMacAddress() {
ServiceProvisionManager manager = provisionManagerContainsActiveContractWithMac("123456", "00:aa:bb:cc:dd:ff");
ProvisionResult result = manager.isServiceAvailable("00:aa:bb:cc:dd:ff",null);
assertTrue(result.isProvisioning());
assertEquals("contract code was not valid?","123456",result.getContractCode());
assertNull(result.getReason());
}
@Test
public void macNotFound() {
ServiceProvisionManager manager = provisionManagerWithNoInstalledServices();
ProvisionResult result = manager.isServiceAvailable("aa:bb:cc", null);
assertNull(result.getContractCode());
assertFalse("service is provisioned?",result.isProvisioning());
assertEquals("MAC_NOT_FOUND", result.getReason());
}
@Test
public void serviceProvisioningUsingUsername() {
ServiceProvisionManager manager = provisionManagerContainsActiveContractWithUsername("123456", "test");
ProvisionResult result = manager.isServiceAvailable(null,"test");
assertEquals("123456", result.getContractCode());
assertTrue("service was not provisioned where it should be?",result.isProvisioning());
assertNull(result.getReason());
}
@Test
public void usernameNotFound() {
ServiceProvisionManager manager = provisionManagerWithNoInstalledServices();
ProvisionResult result = manager.isServiceAvailable(null,"dd");
assertFalse("we are provisioning service which doesn't contains valid mac address",result.isProvisioning());
assertEquals("USER_NOT_FOUND", result.getReason());
}
@Test
public void macAddressAndUsernameAreNotBeingSet() {
ServiceProvisionManager manager = provisionManagerWithNoInstalledServices();
ProvisionResult result = manager.isServiceAvailable(null, null);
assertFalse(result.isProvisioning());
assertEquals("MAC_OR_USER_NOT_BEING_SPECIFIED",result.getReason());
}
@Test
public void serviceNotAvailable() {
ServiceProvisionManager manager = provisionManagerWithNotAvailableInfrastructure();
ProvisionResult result = manager.isServiceAvailable("aaa:bb:cc:dd", null);
assertFalse(result.isProvisioning());
assertEquals("SERVICE_NOT_AVAILABLE", result.getReason());
}
protected abstract ServiceProvisionManager provisionManagerWithNotAvailableInfrastructure();
protected abstract ServiceProvisionManager provisionManagerWithNoInstalledServices();
protected abstract ServiceProvisionManager provisionManagerContainsActiveContractWithMac(String contractCode, String mac);
protected abstract ServiceProvisionManager provisionManagerContainsActiveContractWithUsername(String contractCode, String username);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment