Mercurial > hg > release > thermostat-1.0
changeset 1379:b9dc33ef549a
Fix String error response on auth-fail for ping.
Reviewed-by: omajid
Review-thread: http://icedtea.classpath.org/pipermail/thermostat/2013-December/008992.html
PR1619
author | Severin Gehwolf <sgehwolf@redhat.com> |
---|---|
date | Mon, 02 Dec 2013 18:28:36 +0100 |
parents | 9ecfae760078 |
children | b4c7ee6fb5c5 |
files | client/command/src/main/java/com/redhat/thermostat/client/command/cli/PingCommand.java client/command/src/test/java/com/redhat/thermostat/client/command/cli/PingCommandTest.java |
diffstat | 2 files changed, 41 insertions(+), 8 deletions(-) [+] |
line wrap: on
line diff
--- a/client/command/src/main/java/com/redhat/thermostat/client/command/cli/PingCommand.java Mon Dec 02 14:04:06 2013 +0100 +++ b/client/command/src/main/java/com/redhat/thermostat/client/command/cli/PingCommand.java Mon Dec 02 18:28:36 2013 +0100 @@ -67,35 +67,37 @@ private static final Translate<LocaleResources> translator = LocaleResources.createLocalizer(); - private class PongListener implements RequestResponseListener { + static class PongListener implements RequestResponseListener { private PrintStream out; private final Semaphore responseBarrier; + private final Translate<LocaleResources> t; - public PongListener(PrintStream out, Semaphore responseBarrier) { + PongListener(PrintStream out, Semaphore responseBarrier, Translate<LocaleResources> t) { this.out = out; this.responseBarrier = responseBarrier; + this.t = t; } @Override public void fireComplete(Request request, Response response) { switch (response.getType()) { case ERROR: - out.println(translator.localize(LocaleResources.COMMAND_PING_RESPONSE_ERROR, request.getTarget().toString()).getContents()); + out.println(t.localize(LocaleResources.COMMAND_PING_RESPONSE_ERROR, request.getTarget().toString()).getContents()); break; case AUTH_FAILED: - out.println(translator.localize(LocaleResources.COMMAND_PING_RESPONSE_AUTH_FAILED, request.getTarget().toString())); + out.println(t.localize(LocaleResources.COMMAND_PING_RESPONSE_AUTH_FAILED, request.getTarget().toString()).getContents()); break; case OK: // fallthrough case NOOP: - out.println(translator.localize(LocaleResources.COMMAND_PING_RESPONSE_OK, request.getTarget().toString()).getContents()); + out.println(t.localize(LocaleResources.COMMAND_PING_RESPONSE_OK, request.getTarget().toString()).getContents()); break; case NOK: - out.println(translator.localize(LocaleResources.COMMAND_PING_RESPONSE_REFUSED).getContents()); + out.println(t.localize(LocaleResources.COMMAND_PING_RESPONSE_REFUSED).getContents()); break; default: - out.println(translator.localize(LocaleResources.COMMAND_PING_RESPONSE_UNKNOWN).getContents()); + out.println(t.localize(LocaleResources.COMMAND_PING_RESPONSE_UNKNOWN).getContents()); break; } responseBarrier.release(); @@ -148,7 +150,7 @@ ping.setParameter(Request.ACTION, PING_ACTION_NAME); ping.setReceiver("com.redhat.thermostat.agent.command.internal.PingReceiver"); final Semaphore responseBarrier = new Semaphore(0); - ping.addListener(new PongListener(out, responseBarrier)); + ping.addListener(new PongListener(out, responseBarrier, translator)); ServiceReference queueRef = context.getServiceReference(RequestQueue.class.getName()); if (queueRef == null) {
--- a/client/command/src/test/java/com/redhat/thermostat/client/command/cli/PingCommandTest.java Mon Dec 02 14:04:06 2013 +0100 +++ b/client/command/src/test/java/com/redhat/thermostat/client/command/cli/PingCommandTest.java Mon Dec 02 18:28:36 2013 +0100 @@ -42,12 +42,23 @@ import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; +import java.net.InetSocketAddress; import java.util.Arrays; +import java.util.concurrent.Semaphore; import org.junit.Test; +import com.redhat.thermostat.client.command.cli.PingCommand.PongListener; +import com.redhat.thermostat.client.command.internal.LocaleResources; import com.redhat.thermostat.common.cli.CommandException; import com.redhat.thermostat.common.cli.SimpleArguments; +import com.redhat.thermostat.common.command.Request; +import com.redhat.thermostat.common.command.Response; +import com.redhat.thermostat.common.command.Response.ResponseType; +import com.redhat.thermostat.shared.locale.LocalizedString; +import com.redhat.thermostat.shared.locale.Translate; import com.redhat.thermostat.storage.core.HostRef; import com.redhat.thermostat.storage.dao.AgentInfoDAO; import com.redhat.thermostat.storage.dao.HostInfoDAO; @@ -151,6 +162,26 @@ assertEquals("Unable to access command request queue: service not available", e.getMessage()); } } + + /* + * Tests whether getContents() gets called on auth fail responses. + */ + @Test + public void testAuthFailStringMessage() { + ByteArrayOutputStream bout = new ByteArrayOutputStream(); + PrintStream out = new PrintStream(bout); + Semaphore responseBarrier = new Semaphore(1); + InetSocketAddress addr = InetSocketAddress.createUnresolved("foo", 1234); + @SuppressWarnings("unchecked") + Translate<LocaleResources> t = mock(Translate.class); + when(t.localize(LocaleResources.COMMAND_PING_RESPONSE_AUTH_FAILED, addr.toString())).thenReturn(new LocalizedString("auth_fail")); + PongListener listener = new PongListener(out, responseBarrier, t); + responseBarrier.release(); + Request request = mock(Request.class); + when(request.getTarget()).thenReturn(addr); + listener.fireComplete(request, new Response(ResponseType.AUTH_FAILED)); + assertEquals("auth_fail\n", bout.toString()); + } // TODO add more tests that check the actual behaviour under valid input }