package com.workshare.msnos.core.protocols.ip;
import static org.junit.Assert.assertEquals;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
import static com.workshare.msnos.core.CoreHelper.*;
import java.util.Arrays;
import java.util.HashSet;
import java.util.UUID;
import org.junit.Test;
import com.workshare.msnos.core.Iden;
import com.workshare.msnos.core.RemoteAgent;
import com.workshare.msnos.core.protocols.ip.Endpoint.Type;
import com.workshare.msnos.usvc.RemoteMicroservice;
import com.workshare.msnos.usvc.api.RestApi;
public class HttpEndpointTest {
@Test
public void shouldAddNetworkFromRemoteService() {
RemoteMicroservice remote = createRemoteMicroservice("25.25.25.25");
RestApi api = new RestApi("path/to/api", 8888, "25.25.25.25");
HttpEndpoint endpoint = new HttpEndpoint(remote, api);
assertEquals(8888, endpoint.getPort());
assertEquals(api.getUrl(), endpoint.getUrl());
assertEquals(remote.getAgent().getIden(), endpoint.getTarget());
assertEquals(asPublicNetwork("25.25.25.25"), endpoint.getNetwork());
}
@Test(expected = IllegalArgumentException.class)
public void shouldFailIfNetworkNotFound() {
RemoteMicroservice remote = createRemoteMicroservice("25.25.25.25");
RestApi api = new RestApi("path/to/api", 8888, "99.99.99.99");
new HttpEndpoint(remote, api);
}
@Test
public void shouldSupportEqualdAndHashcode() {
RemoteMicroservice remote = createRemoteMicroservice("25.25.25.25");
RestApi api = new RestApi("path/to/api", 8888, "25.25.25.25");
HttpEndpoint ep1 = new HttpEndpoint(remote, api);
HttpEndpoint ep2 = new HttpEndpoint(remote, api);
assertEquals(ep1, ep2);
assertEquals(ep1.hashCode(), ep2.hashCode());
}
protected RemoteMicroservice createRemoteMicroservice(final String host) {
BaseEndpoint ep1 = new BaseEndpoint(Type.UDP, asPublicNetwork(host));
BaseEndpoint ep2 = new BaseEndpoint(Type.UDP, asPublicNetwork("33.33.33.33"));
BaseEndpoint ep3 = new BaseEndpoint(Type.UDP, asPublicNetwork("11.11.11.11"));
RemoteAgent agent = mock(RemoteAgent.class);
when(agent.getIden()).thenReturn(new Iden(Iden.Type.AGT, UUID.randomUUID()));
when(agent.getEndpoints()).thenReturn(new HashSet<Endpoint>(Arrays.asList(ep1, ep2, ep3)));
RemoteMicroservice remote = mock(RemoteMicroservice.class);
when(remote.getAgent()).thenReturn(agent);
return remote;
}
}