我喜欢 Spring MVC,因为您可以对控制器进行单元测试。
但是测试 oauth 的控制器是另一回事。例如,如果我想获取授权 url,因为我想 Oauth 到 GData,我将不得不部署网络应用程序,因为谷歌只会接受来自我的域(我的网络应用程序的 url)的授权请求,而不是我的开发环境其域是 localhost:8080。
所以现在我测试我的代码是否有效的唯一方法是部署代码并打印出我需要打印的数据。
我的控制器,它是一个多动作控制器
public ModelAndView authorize(HttpServletRequest request,
HttpServletResponse response) {
Provider provider = getProvider(request.getAttribute("provider"));
String authUrl = provider.getAuthUrl();
page.put("authUrl", authUrl);
return new ModelAndView("setup","model",page);
}
提供程序代码,我的所有依赖项都被注入
public String getAuthUrl()
{
oAuthParameters.setScope("http://docs.google.com/feeds/");
try {
oAuthHelper.getUnauthorizedRequestToken(oAuthParameters);
} catch (OAuthException e) {
page.put("authUrl", CANNOT_CONNECT_TO_GOOGLE);
}
String oAuth_Callback="[callback url]";
try {
oAuth_Callback.concat("?oauth_token_secret=").concat(
java.net.URLEncoder.encode
(oAuthParameters.getOAuthTokenSecret(), "UTF-8"));
} catch (UnsupportedEncodingException e) {
page.put("authUrl",INTERNAL_ERROR);
}
oAuthParameters.setOAuthCallback(oAuth_Callback);
String authUrl = oAuthHelper.createUserAuthorizationUrl(oAuthParameters);
return authUrl;
}