0
我喜歡Spring MVC,因爲你可以單元測試你的控制器。你如何測試oauth的單元測試控制器?
但測試控制器,OAuth是另一回事。舉例來說,如果我想獲得授權的URL,因爲我想使用OAuth的GData,我將不得不部署web應用程序,因爲谷歌將只接受來自我的域名(我的web應用程序的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;
}
我的控制器其實很簡單,它只是在Google獲得授權Url(請參閱我的更新後的帖子)。 單位,測試控制器,我從模型得到authUrl,做一個assertNotNull(authUrl),因爲它沒有從我的域名來這當然會失敗。 但是,當我作爲web應用運行並在localhost:8080上手動測試時,jsp會打印一個url!當我把網址放在瀏覽器中時,它會引導我進入一個頁面,要求我授權我製作的網絡應用程序。 X( – Jeune 2009-09-23 19:37:31