use of org.apache.qpid.proton.amqp.transport.Target in project vertx-proton by vert-x3.
the class ProtonClientTest method processConnectionAnonymousSenderSpecifiesLinkTarget.
private void processConnectionAnonymousSenderSpecifiesLinkTarget(TestContext context, Async async, ProtonConnection serverConnection) {
serverConnection.sessionOpenHandler(session -> session.open());
serverConnection.receiverOpenHandler(receiver -> {
LOG.trace("Server receiver opened");
// TODO: set the local target on link before opening it
receiver.handler((delivery, msg) -> {
// We got the message that was sent, complete the test
LOG.trace("Server got msg: {0}", getMessageBody(context, msg));
serverConnection.disconnect();
async.complete();
});
// Verify that the remote link target (set by the client) matches
// up to the expected value to signal use of the anonymous relay
Target remoteTarget = receiver.getRemoteTarget();
context.assertNotNull(remoteTarget, "Client did not set a link target");
context.assertNull(remoteTarget.getAddress(), "Unexpected target address");
receiver.open();
});
serverConnection.openHandler(result -> {
serverConnection.open();
});
}
use of org.apache.qpid.proton.amqp.transport.Target in project hono by eclipse.
the class AmqpServiceBaseTest method getTarget.
private static Target getTarget(final ResourceIdentifier targetAddress) {
Target result = mock(Target.class);
when(result.getAddress()).thenReturn(targetAddress.toString());
return result;
}
use of org.apache.qpid.proton.amqp.transport.Target in project hono by eclipse.
the class AmqpServiceBaseTest method testHandleReceiverOpenRejectsUnauthorizedClient.
/**
* Verifies that the service rejects sender links on resources that
* the client is not authorized to write to.
*/
@Test
public void testHandleReceiverOpenRejectsUnauthorizedClient() {
// GIVEN a server with a endpoint
final ResourceIdentifier restrictedTargetAddress = ResourceIdentifier.from(ENDPOINT, "RESTRICTED_TENANT", null);
final AmqpEndpoint endpoint = mock(AmqpEndpoint.class);
when(endpoint.getName()).thenReturn(ENDPOINT);
final AuthorizationService authService = mock(AuthorizationService.class);
when(authService.isAuthorized(Constants.PRINCIPAL_ANONYMOUS, restrictedTargetAddress, Activity.WRITE)).thenReturn(Future.succeededFuture(Boolean.FALSE));
final AmqpServiceBase<ServiceConfigProperties> server = createServer(endpoint);
server.setAuthorizationService(authService);
// WHEN a client connects to the server using a address for a tenant it is not authorized to write to
final Target target = getTarget(restrictedTargetAddress);
final ProtonReceiver receiver = mock(ProtonReceiver.class);
when(receiver.getRemoteTarget()).thenReturn(target);
when(receiver.setCondition(any())).thenReturn(receiver);
server.handleReceiverOpen(newConnection(Constants.PRINCIPAL_ANONYMOUS), receiver);
// THEN the server closes the link with the client
verify(receiver).close();
}
use of org.apache.qpid.proton.amqp.transport.Target in project hono by eclipse.
the class AbstractRequestResponseClientTest method setUp.
/**
* Sets up the fixture.
*/
@SuppressWarnings("unchecked")
@Before
public void setUp() {
vertx = mock(Vertx.class);
context = HonoClientUnitTestHelper.mockContext(vertx);
receiver = HonoClientUnitTestHelper.mockProtonReceiver();
sender = HonoClientUnitTestHelper.mockProtonSender();
Target target = mock(Target.class);
when(target.getAddress()).thenReturn("peer/tenant");
when(sender.getCredit()).thenReturn(10);
when(sender.getRemoteTarget()).thenReturn(target);
cache = mock(ExpiringValueCache.class);
client = getClient("tenant", sender, receiver);
// do not time out requests by default
client.setRequestTimeout(0);
}
use of org.apache.qpid.proton.amqp.transport.Target in project hono by eclipse.
the class AmqpServiceBaseTest method testHandleReceiverOpenForwardsToEndpoint.
/**
* Verifies that the service notifies a registered endpoint about a client
* that has established a link.
*/
@Test
public void testHandleReceiverOpenForwardsToEndpoint() {
// GIVEN a server with an endpoint
final ResourceIdentifier targetAddress = ResourceIdentifier.from(ENDPOINT, Constants.DEFAULT_TENANT, null);
final AmqpEndpoint endpoint = mock(AmqpEndpoint.class);
when(endpoint.getName()).thenReturn(ENDPOINT);
final AuthorizationService authService = mock(AuthorizationService.class);
when(authService.isAuthorized(Constants.PRINCIPAL_ANONYMOUS, targetAddress, Activity.WRITE)).thenReturn(Future.succeededFuture(Boolean.TRUE));
final AmqpServiceBase<ServiceConfigProperties> server = createServer(endpoint);
server.setAuthorizationService(authService);
// WHEN a client connects to the server using this endpoint
final Target target = getTarget(targetAddress);
final ProtonReceiver receiver = mock(ProtonReceiver.class);
when(receiver.getRemoteTarget()).thenReturn(target);
when(receiver.attachments()).thenReturn(mock(Record.class));
server.handleReceiverOpen(newConnection(Constants.PRINCIPAL_ANONYMOUS), receiver);
// THEN the server delegates link establishment to the endpoint
verify(endpoint).onLinkAttach(any(ProtonConnection.class), eq(receiver), eq(targetAddress));
}
Aggregations