public void BuildBodyTest() { var message = new ErrorResponseBuilder() .SetErrorCode(ErrorCode.InvalidClient) .SetErrorDescription("Bad Client") .SetErrorUri("http://error.com") .SetLocation("http://mydomain.com") .SetState("mystate") .BuildBodyMessage(); var expected = string.Format("{0}={1}&{2}={3}&{4}={5}&{6}={7}", OAuthTokens.Error, ErrorCode.InvalidClient, OAuthTokens.ErrorDescription, HttpUtility.UrlEncode("Bad Client"), OAuthTokens.ErrorUri, HttpUtility.UrlEncode("http://error.com"), OAuthTokens.State, "mystate"); Assert.AreEqual(400, message.StatusCode); Assert.AreEqual(expected, message.Body); Assert.AreEqual(ContentType.FormEncoded, message.ContentType); var ex = new OAuthException(ErrorCode.InvalidClient, "Bad Client", "http://error.com", "mystate"); message = new ErrorResponseBuilder(ex).SetLocation("http://mydomain.com").BuildBodyMessage(); expected = string.Format("{0}={1}&{2}={3}&{4}={5}&{6}={7}", OAuthTokens.Error, ErrorCode.InvalidClient, OAuthTokens.ErrorDescription, HttpUtility.UrlEncode("Bad Client"), OAuthTokens.ErrorUri, HttpUtility.UrlEncode("http://error.com"), OAuthTokens.State, "mystate"); Assert.AreEqual(400, message.StatusCode); Assert.AreEqual(expected, message.Body); Assert.AreEqual(ContentType.FormEncoded, message.ContentType); }
public void BuildJsonTest() { var message = new ErrorResponseBuilder() .SetErrorCode(ErrorCode.InvalidClient) .SetErrorDescription("Bad Client") .SetErrorUri("http://error.com") .SetLocation("http://mydomain.com") .SetState("mystate") .BuildJsonMessage(); Assert.AreEqual(400, message.StatusCode); Assert.AreEqual("http://mydomain.com", message.LocationUri); Assert.IsTrue(message.Body.Contains("\"" + OAuthTokens.State + "\":\"mystate\"")); Assert.IsTrue(message.Body.Contains("\"" + OAuthTokens.Error + "\":\"" + ErrorCode.InvalidClient + "\"")); Assert.IsTrue(message.Body.Contains("\"" + OAuthTokens.ErrorUri + "\":\"http://error.com\"")); Assert.IsTrue(message.Body.Contains("\"" + OAuthTokens.ErrorDescription + "\":\"Bad Client\"")); Assert.AreEqual(ContentType.Json, message.ContentType); var ex = new OAuthException(ErrorCode.InvalidClient, "Bad Client", "http://error.com", "mystate"); message = new ErrorResponseBuilder(ex).SetLocation("http://mydomain.com").BuildJsonMessage(); Assert.AreEqual(400, message.StatusCode); Assert.AreEqual("http://mydomain.com", message.LocationUri); Assert.IsTrue(message.Body.Contains("\"" + OAuthTokens.State + "\":\"mystate\"")); Assert.IsTrue(message.Body.Contains("\"" + OAuthTokens.Error + "\":\"" + ErrorCode.InvalidClient + "\"")); Assert.IsTrue(message.Body.Contains("\"" + OAuthTokens.ErrorUri + "\":\"http://error.com\"")); Assert.IsTrue(message.Body.Contains("\"" + OAuthTokens.ErrorDescription + "\":\"Bad Client\"")); Assert.AreEqual(ContentType.Json, message.ContentType); }
// // GET: /OAuth/ public ActionResult Token() { try { var oauthRequest = new TokenRequest(new HttpRequestBaseRequest(Request), MvcApplication.ServiceLocator); var token = oauthRequest.Authorize(); if (token.RedirectsUri.HasValue()) { var redirectUri = OAuthResponse .TokenResponse(token.AccessToken, token.ExpiresIn, token.RefreshToken) .SetLocation(token.RedirectsUri) .BuildQueryMessage().LocationUri; return Redirect(redirectUri); } var response = OAuthResponse .TokenResponse(token.AccessToken, token.ExpiresIn, token.RefreshToken) .BuildJsonMessage(); return this.OAuth(response); } catch (OAuthException ex) { var response = new ErrorResponseBuilder(ex).BuildJsonMessage(); return this.OAuth(response); } }