@Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException { response.setContentType("text/html"); response.setCharacterEncoding("UTF-8"); PrintWriter writer = response.getWriter(); writer.println("<!doctype html><html><head>"); writer.println("<meta http-equiv=\"content-type\" content=\"text/html; charset=UTF-8\">"); writer.println("<title>" + APP_NAME + "</title>"); writer.println("</head><body>"); final Credential v1credential = this.getCredential(); HttpRequestFactory requestFactory = Utils.HTTP_TRANSPORT.createRequestFactory( new HttpRequestInitializer() { public void initialize(HttpRequest request) throws IOException { v1credential.initialize(request); } }); GenericUrl v1url = new GenericUrl(secrets.getServerBaseUri()); // Add the OAuth API end-point v1url.getPathParts().add("rest-1.oauth.v1"); // Add a simple data query for the currently logged in member v1url.getPathParts().add("Data"); v1url.getPathParts().add("Member"); v1url.set("where", "IsSelf=\'true\'"); // Send request to VersionOne and print the results. HttpRequest v1request = requestFactory.buildGetRequest(v1url); HttpResponse v1response = v1request.execute(); printMemberDetails(writer, v1response); writer.println("</body></html>"); }
protected GoogleOauthFilter filterNotYetAuthorised() throws IOException, ServletException { GoogleOauthFilter googleOauthFilter = createFilter("http://yetanotherscopse.com/scope"); FilterChain chain = mock(FilterChain.class); HttpServletRequest request = request("http", "myserver.co.uk", "webapp", "index.html", "forename=brian", "surname=may"); HttpServletResponse response = mock(HttpServletResponse.class); class SendRedirectAnswer implements Answer<Object> { String url; @Override public Object answer(InvocationOnMock invocation) throws Throwable { url = (String) invocation.getArguments()[0]; return null; } } SendRedirectAnswer sendRedirectAnswer = new SendRedirectAnswer(); doAnswer(sendRedirectAnswer).when(response).sendRedirect(anyString()); googleOauthFilter.doFilter(request, response, chain); // Expect a redirect with no chain interaction. verifyZeroInteractions(chain); verify(response).sendRedirect(anyString()); GenericUrl actualRedirectUrl = new GenericUrl(sendRedirectAnswer.url); assertEquals( "The authorisation token url had the wrong scheme.", "https", actualRedirectUrl.getScheme()); assertEquals( "The authorisation token url had the wrong host.", "accounts.google.com", actualRedirectUrl.getHost()); assertEquals("The authorisation token url had the host.", -1, actualRedirectUrl.getPort()); assertThat( "The authorisation token url had the path.", actualRedirectUrl.getPathParts(), contains("", "o", "oauth2", "auth")); Function<Object, String> firstToStringFunction = new Function<Object, String>() { @SuppressWarnings("unchecked") public String apply(Object value) { return ((List<String>) value).get(0); } }; Map<String, String> parameters = Maps.transformValues(actualRedirectUrl.getUnknownKeys(), firstToStringFunction); assertThat( "The authorisation token url had the wrong parameters.", parameters.keySet(), containsInAnyOrder("client_id", "redirect_uri", "response_type", "scope", "state")); assertEquals("The wrong client ID was sent", "my_id", parameters.get("client_id")); assertEquals( "The wrong redirect URI was sent", "http://myserver.co.uk/webapp/oauth.html", parameters.get("redirect_uri")); assertEquals("The wrong response type was sent", "code", parameters.get("response_type")); assertThat( "The wrong scopes were sent.", Splitter.on(' ').split(parameters.get("scope")), containsInAnyOrder( "http://yetanotherscopse.com/scope", "https://www.googleapis.com/auth/userinfo.profile", "https://www.googleapis.com/auth/userinfo.email")); assertEquals( "The wrong state was sent", "http://myserver.co.uk/webapp/index.html?forename=brian&surname=may", parameters.get("state")); return googleOauthFilter; }