HttpResponse googleResponse = PowerMock.createMock(HttpResponse.class);
expect(fetcher.fetch(isA(HttpRequest.class))).andReturn(googleResponse);
expect(googleResponse.getResponse()).andReturn(new ByteArrayInputStream("{\"id_token\":\"mocktoken123\"}".getBytes("UTF-8")));
PowerMock.mockStatic(GoogleIdToken.class);
GoogleIdToken mockIdToken = createMock(GoogleIdToken.class);
expect(GoogleIdToken.parse(isA(JacksonFactory.class), eq("mocktoken123"))).andReturn(mockIdToken);
GoogleIdToken.Payload mockPayload = PowerMock.createMock(GoogleIdToken.Payload.class);
expect(mockIdToken.getPayload()).andReturn(mockPayload);
expect(mockPayload.getSubject()).andReturn("userId123");
expect(mockPayload.getIssuer()).andReturn("accounts.google.com");
expect(mockPayload.getAudience()).andReturn("clientId");
expect(codec.encodeToken(isA(LoginSecurityToken.class))).andThrow(new SecurityTokenException("Bad Security Token"));