package com.baasbox.service.sociallogin; import org.scribe.builder.api.Api; import org.scribe.model.OAuthRequest; import org.scribe.model.Response; import org.scribe.model.Token; import org.scribe.model.Verb; import com.baasbox.service.logging.BaasBoxLogger; import play.Play; import play.mvc.Http.Request; import play.mvc.Http.Session; public class SocialLoginServiceMock extends SocialLoginService { private static String port = (Play.isTest())?System.getProperty("testserver.port", "3333"):System.getProperty("http.port", "9000"); private static String mockUrl = "http://localhost"+port; public String PREFIX = ""; public String SOCIAL = ""; private String secret=""; private String token=""; public SocialLoginServiceMock(String socialNetworkName, String appcode) { super(socialNetworkName,appcode); this.SOCIAL=socialNetworkName; if(socialNetwork.equals("facebook")){ this.PREFIX=FacebookLoginService.PREFIX; }else if(socialNetwork.equals("github")){ this.PREFIX=GithubLoginService.PREFIX; }else if(socialNetwork.equals("google")){ this.PREFIX=GooglePlusLoginService.PREFIX; } this.PREFIX=this.PREFIX + "_mock_"; } @Override public Class<? extends Api> provider() { return MockApi.class; } @Override public Boolean needToken() { return false; } @Override public String userInfoUrl() { return mockUrl; } @Override public String getVerifierFromRequest(Request r) { return "mock_verifier"; } @Override public Token getAccessTokenFromRequest(Request r, Session s) { return null; } @Override protected OAuthRequest buildOauthRequestForUserInfo(Token accessToken) { return new OAuthRequest(Verb.GET, userInfoUrl()); } @Override public UserInfo extractUserInfo(Response r) throws BaasBoxSocialException { if (BaasBoxLogger.isDebugEnabled()) BaasBoxLogger.debug("FacebookLoginServiceMock.extractUserInfo: " + r.getCode() + ": " + r.getBody()); UserInfo ui = new UserInfo(); ui.setId("mockid_" + this.token); ui.setUsername("mockusername_" + this.token); ui.addData("email",ui.getUsername() + "@example.com"); ui.addData("gender","male"); ui.addData("personalUrl","http://www.example.com/" + ui.getUsername()); ui.addData("name","John Doe Mock " + System.currentTimeMillis()); ui.setFrom(SOCIAL + "_mock"); return ui; } @Override public String getPrefix() { return PREFIX + "_mock_"; } @Override protected String getValidationURL(String token) { return mockUrl; } @Override protected boolean validate(Object response) { return true; } @Override public boolean validationRequest(String token) throws BaasBoxSocialTokenValidationException{ return true; } @Override public UserInfo getUserInfo(Token accessToken) throws BaasBoxSocialException{ this.secret=accessToken.getSecret(); this.token=accessToken.getToken(); OAuthRequest request = buildOauthRequestForUserInfo(accessToken); this.service.signRequest(accessToken, request); Response response = null; try { response = request.send(); }catch(Exception e){ //swallow } return extractUserInfo(response); } }