/** * Copyright (C) 2012 - present by OpenGamma Inc. and the OpenGamma group of companies * * Please see distribution for license. */ package com.opengamma.engine.function.blacklist; import static org.testng.Assert.assertEquals; import static org.testng.Assert.assertNotNull; import static org.testng.Assert.assertNull; import static org.testng.Assert.assertTrue; import java.net.URI; import java.util.Collections; import javax.ws.rs.WebApplicationException; import org.fudgemsg.FudgeMsg; import org.mockito.Mockito; import org.mockito.invocation.InvocationOnMock; import org.mockito.stubbing.Answer; import org.testng.annotations.Test; import com.opengamma.id.UniqueId; import com.opengamma.util.fudgemsg.OpenGammaFudgeContext; import com.opengamma.util.rest.UniformInterfaceException404NotFound; import com.opengamma.util.test.TestGroup; import com.sun.jersey.api.client.ClientResponse; import com.sun.jersey.api.client.UniformInterface; /** * Tests the {@link RemoteFunctionBlacklistPolicySource} and {@link DataFunctionBlacklistPolicySourceResource} classes. */ @Test(groups = TestGroup.INTEGRATION) public class RemoteFunctionBlacklistPolicySourceTest { public void testGetPolicyByUniqueId() { final InMemoryFunctionBlacklistPolicySource underlying = new InMemoryFunctionBlacklistPolicySource(); underlying.addPolicy(new DefaultFunctionBlacklistPolicy(UniqueId.of("Test", "Foo"), 10, Collections.singleton(FunctionBlacklistPolicy.Entry.PARAMETERIZED_FUNCTION))); final DataFunctionBlacklistPolicySourceResource server = new DataFunctionBlacklistPolicySourceResource(underlying, OpenGammaFudgeContext.getInstance()); final FunctionBlacklistPolicySource client = new RemoteFunctionBlacklistPolicySource(URI.create("http://localhost/")) { @Override protected UniformInterface accessRemote(final URI uri) { assertTrue(uri.getPath().startsWith("/uid/")); final UniformInterface builder = Mockito.mock(UniformInterface.class); Mockito.when(builder.get(FudgeMsg.class)).thenAnswer(new Answer<FudgeMsg>() { @Override public FudgeMsg answer(final InvocationOnMock invocation) throws Throwable { try { return (FudgeMsg) server.getByUniqueId(uri.getPath().substring(5)).getEntity(); } catch (WebApplicationException e) { assertEquals(e.getResponse().getStatus(), 404); throw new UniformInterfaceException404NotFound(new ClientResponse(404, null, null, null), false); } } }); return builder; } }; FunctionBlacklistPolicy policy = client.getPolicy(UniqueId.of("Test", "Foo")); assertNotNull(policy); assertEquals(policy.getName(), "Foo"); assertEquals(policy.getUniqueId(), UniqueId.of("Test", "Foo")); policy = client.getPolicy(UniqueId.of("Test", "Bar")); assertNull(policy); } public void testGetPolicyByName() { final InMemoryFunctionBlacklistPolicySource underlying = new InMemoryFunctionBlacklistPolicySource(); underlying.addPolicy(new DefaultFunctionBlacklistPolicy(UniqueId.of("Test", "Foo"), 10, Collections.singleton(FunctionBlacklistPolicy.Entry.PARAMETERIZED_FUNCTION))); final DataFunctionBlacklistPolicySourceResource server = new DataFunctionBlacklistPolicySourceResource(underlying, OpenGammaFudgeContext.getInstance()); final FunctionBlacklistPolicySource client = new RemoteFunctionBlacklistPolicySource(URI.create("http://localhost/")) { @Override protected UniformInterface accessRemote(final URI uri) { assertTrue(uri.getPath().startsWith("/name/")); final UniformInterface builder = Mockito.mock(UniformInterface.class); Mockito.when(builder.get(FudgeMsg.class)).thenAnswer(new Answer<FudgeMsg>() { @Override public FudgeMsg answer(final InvocationOnMock invocation) throws Throwable { try { return (FudgeMsg) server.getByName(uri.getPath().substring(6)).getEntity(); } catch (WebApplicationException e) { assertEquals(e.getResponse().getStatus(), 404); throw new UniformInterfaceException404NotFound(new ClientResponse(404, null, null, null), false); } } }); return builder; } }; FunctionBlacklistPolicy policy = client.getPolicy("Foo"); assertNotNull(policy); assertEquals(policy.getName(), "Foo"); assertEquals(policy.getUniqueId(), UniqueId.of("Test", "Foo")); policy = client.getPolicy("Bar"); assertNull(policy); } }