public void testInitRobot() throws Exception { AbstractRobot robot = new MockRobot(); AbstractRobot spyRobot = spy(robot); spyRobot.initRobot(); verify(spyRobot).computeCapabilityMap(); verify(spyRobot).computeHash(); }
/** * Processes the incoming HTTP request that contains the event bundle. * * @param req the HTTP request. * @param resp the HTTP response. */ private void processRpc(HttpServletRequest req, HttpServletResponse resp) { // Deserialize and process the incoming events. EventMessageBundle events = null; try { events = deserializeEvents(req); } catch (IOException e) { resp.setStatus(HttpURLConnection.HTTP_INTERNAL_ERROR); return; } // Append robot.notifyCapabilitiesHash operation before processing the // events. OperationQueue operationQueue = events.getWavelet().getOperationQueue(); operationQueue.notifyRobotInformation(WaveService.PROTOCOL_VERSION, version); // Call the robot event handlers. processEvents(events); // Serialize the operations. serializeOperations(operationQueue.getPendingOperations(), resp); operationQueue.clear(); }
/** * Processes the incoming HTTP request to obtain robot's profile. * * @param req the HTTP request. * @param resp the HTTP response. */ private void processProfile(HttpServletRequest req, HttpServletResponse resp) { ParticipantProfile profile = null; // Try to get custom profile. String proxiedName = req.getParameter(NAME_QUERY_PARAMETER_KEY); if (proxiedName != null) { profile = getCustomProfile(proxiedName); } // Set the default profile. if (profile == null) { profile = new ParticipantProfile(getRobotName(), getRobotAvatarUrl(), getRobotProfilePageUrl()); } // Write the result into the output stream. resp.setContentType(JSON_MIME_TYPE); resp.setCharacterEncoding(UTF_8); try { resp.getWriter().write(SERIALIZER.toJson(profile)); } catch (IOException e) { resp.setStatus(HttpURLConnection.HTTP_INTERNAL_ERROR); return; } resp.setStatus(HttpURLConnection.HTTP_OK); }
/** * Initializes the robot. Call it if required to re-compute robot's * capabilities. Re-invoke {@link #setupOAuth} if needed. */ protected void initRobot() { capabilityMap = computeCapabilityMap(); version = computeHash(); waveService = new WaveService(version); }
public void testServiceVerificationTokenRequest() throws Exception { AbstractRobot robot = new MockRobot(); robot.setupVerificationToken("vertoken", "sectoken"); MockWriter writer = new MockWriter(); robot.doGet(makeMockRequest(VERIFY_TOKEN_PATH, "st", "sectoken"), makeMockResponse(writer)); assertEquals("vertoken", writer.getString()); HttpServletResponse response = makeMockResponse(new MockWriter()); robot.doGet(makeMockRequest(VERIFY_TOKEN_PATH), response); verify(response).setStatus(HttpURLConnection.HTTP_UNAUTHORIZED); }
/** * Constructor. */ protected AbstractRobot() { initRobot(); }
public void testProxiedBlindWavelet() throws Exception { AbstractRobot robot = new MockRobot(); Wavelet blindWavelet = robot.blindWavelet(WAVE_1, WAVELET_1, "proxyid"); assertEquals(0, blindWavelet.getOperationQueue().getPendingOperations().size()); blindWavelet.reply("\n"); List<OperationRequest> ops = blindWavelet.getOperationQueue().getPendingOperations(); assertEquals(1, ops.size()); assertEquals(OperationType.WAVELET_APPEND_BLIP.method(), ops.get(0).getMethod()); assertEquals("proxyid", ops.get(0).getParameter(ParamsProperty.PROXYING_FOR)); // Assert that proxy id should be valid. try { robot.blindWavelet(WAVE_1, WAVELET_1, "foo@bar.com"); fail("Should have failed since proxy id is not valid."); } catch (IllegalArgumentException e) { // Expected. } }
public void testServiceCapabilitiesRequest() throws Exception { AbstractRobot robot = new MockRobot() { @Override public void onBlipContributorsChanged(BlipContributorsChangedEvent e) { calledEvents.add(e.getType()); } }; MockWriter writer = new MockWriter(); robot.doGet(makeMockRequest(CAPABILITIES_XML_PATH), makeMockResponse(writer)); String capabilitiesXml = writer.getString(); String expectedCapabilityTag = "<w:capability name=\"BLIP_SUBMITTED\" context=\"PARENT,SELF,CHILDREN\" filter=\".*\"/>\n"; assertTrue(capabilitiesXml.contains(expectedCapabilityTag)); expectedCapabilityTag = "<w:capability name=\"DOCUMENT_CHANGED\"/>\n"; assertTrue(capabilitiesXml.contains(expectedCapabilityTag)); expectedCapabilityTag = "<w:capability name=\"BLIP_CONTRIBUTORS_CHANGED\"/>\n"; assertTrue(capabilitiesXml.contains(expectedCapabilityTag)); expectedCapabilityTag = "<w:capability name=\"WAVELET_SELF_ADDED\"/>\n"; assertFalse(capabilitiesXml.contains(expectedCapabilityTag)); expectedCapabilityTag = "<w:capability name=\"WAVELET_SELF_ADDED\" context=\"ROOT,PARENT,CHILDREN\"/>\n"; assertFalse(capabilitiesXml.contains(expectedCapabilityTag)); }
robot.doPost( makeMockRequest(JSONRPC_PATH, new BufferedReader(new StringReader(json))), makeMockResponse(mockWriter));
public void testServiceVerificationTokenRequest() throws Exception { AbstractRobot robot = new MockRobot(); robot.setupVerificationToken("vertoken", "sectoken"); MockWriter writer = new MockWriter(); robot.doGet(makeMockRequest(VERIFY_TOKEN_PATH, "st", "sectoken"), makeMockResponse(writer)); assertEquals("vertoken", writer.getString()); HttpServletResponse response = makeMockResponse(new MockWriter()); robot.doGet(makeMockRequest(VERIFY_TOKEN_PATH), response); verify(response).setStatus(HttpURLConnection.HTTP_UNAUTHORIZED); }
public void testProxiedBlindWavelet() throws Exception { AbstractRobot robot = new MockRobot(); Wavelet blindWavelet = robot.blindWavelet(WAVE_1, WAVELET_1, "proxyid"); assertEquals(0, blindWavelet.getOperationQueue().getPendingOperations().size()); blindWavelet.reply("\n"); List<OperationRequest> ops = blindWavelet.getOperationQueue().getPendingOperations(); assertEquals(1, ops.size()); assertEquals(OperationType.WAVELET_APPEND_BLIP.method(), ops.get(0).getMethod()); assertEquals("proxyid", ops.get(0).getParameter(ParamsProperty.PROXYING_FOR)); // Assert that proxy id should be valid. try { robot.blindWavelet(WAVE_1, WAVELET_1, "foo@bar.com"); fail("Should have failed since proxy id is not valid."); } catch (IllegalArgumentException e) { // Expected. } }
public void testServiceCapabilitiesRequest() throws Exception { AbstractRobot robot = new MockRobot() { @Override public void onBlipContributorsChanged(BlipContributorsChangedEvent e) { calledEvents.add(e.getType()); } }; MockWriter writer = new MockWriter(); robot.doGet(makeMockRequest(CAPABILITIES_XML_PATH), makeMockResponse(writer)); String capabilitiesXml = writer.getString(); String expectedCapabilityTag = "<w:capability name=\"BLIP_SUBMITTED\" context=\"PARENT,SELF,CHILDREN\" filter=\".*\"/>\n"; assertTrue(capabilitiesXml.contains(expectedCapabilityTag)); expectedCapabilityTag = "<w:capability name=\"DOCUMENT_CHANGED\"/>\n"; assertTrue(capabilitiesXml.contains(expectedCapabilityTag)); expectedCapabilityTag = "<w:capability name=\"BLIP_CONTRIBUTORS_CHANGED\"/>\n"; assertTrue(capabilitiesXml.contains(expectedCapabilityTag)); expectedCapabilityTag = "<w:capability name=\"WAVELET_SELF_ADDED\"/>\n"; assertFalse(capabilitiesXml.contains(expectedCapabilityTag)); expectedCapabilityTag = "<w:capability name=\"WAVELET_SELF_ADDED\" context=\"ROOT,PARENT,CHILDREN\"/>\n"; assertFalse(capabilitiesXml.contains(expectedCapabilityTag)); }
robot.doPost( makeMockRequest(JSONRPC_PATH, new BufferedReader(new StringReader(json))), makeMockResponse(mockWriter));
public void testInitRobot() throws Exception { AbstractRobot robot = new MockRobot(); AbstractRobot spyRobot = spy(robot); spyRobot.initRobot(); verify(spyRobot).computeCapabilityMap(); verify(spyRobot).computeHash(); }
public void testBlindWavelet() throws Exception { AbstractRobot robot = new MockRobot(); Wavelet blindWavelet = robot.blindWavelet(WAVE_1, WAVELET_1); assertEquals(0, blindWavelet.getOperationQueue().getPendingOperations().size()); blindWavelet.getParticipants().add("foo@test.com"); blindWavelet.reply("\n"); assertEquals(2, blindWavelet.getOperationQueue().getPendingOperations().size()); assertEquals(OperationType.WAVELET_ADD_PARTICIPANT_NEWSYNTAX.method(), blindWavelet.getOperationQueue().getPendingOperations().get(0).getMethod()); assertEquals(OperationType.WAVELET_APPEND_BLIP.method(), blindWavelet.getOperationQueue().getPendingOperations().get(1).getMethod()); }
public void testServiceProfileRequest() throws Exception { AbstractRobot robot = new MockRobot(); MockWriter writer = new MockWriter(); robot.doGet(makeMockRequest(PROFILE_PATH), makeMockResponse(writer)); String profileJson = writer.getString(); String expectedProfileJson = "{\"address\":\"\",\"name\":\"Foo\",\"imageUrl\":\"http://foo.com/foo.png\"," + "\"profileUrl\":\"http://foo.com\"}"; assertEquals(expectedProfileJson, profileJson); }
public void testBlindWavelet() throws Exception { AbstractRobot robot = new MockRobot(); Wavelet blindWavelet = robot.blindWavelet(WAVE_1, WAVELET_1); assertEquals(0, blindWavelet.getOperationQueue().getPendingOperations().size()); blindWavelet.getParticipants().add("foo@test.com"); blindWavelet.reply("\n"); assertEquals(2, blindWavelet.getOperationQueue().getPendingOperations().size()); assertEquals(OperationType.WAVELET_ADD_PARTICIPANT_NEWSYNTAX.method(), blindWavelet.getOperationQueue().getPendingOperations().get(0).getMethod()); assertEquals(OperationType.WAVELET_APPEND_BLIP.method(), blindWavelet.getOperationQueue().getPendingOperations().get(1).getMethod()); }
public void testServiceProfileRequest() throws Exception { AbstractRobot robot = new MockRobot(); MockWriter writer = new MockWriter(); robot.doGet(makeMockRequest(PROFILE_PATH), makeMockResponse(writer)); String profileJson = writer.getString(); String expectedProfileJson = "{\"address\":\"\",\"name\":\"Foo\",\"imageUrl\":\"http://foo.com/foo.png\"," + "\"profileUrl\":\"http://foo.com\"}"; assertEquals(expectedProfileJson, profileJson); }