public async Task Build_InvalidRequest_ErrorResult() { // Arrange var tokenExchangeContext = new ExtensionGrantValidationContext(); this.requestValidatorMock.Setup(x => x.ValidateAsync(tokenExchangeContext.Request)) .ReturnsAsync(this.errorResult); var target = new TokenExchangeGrant(this.requestValidatorMock.Object, this.resultBuilder); // Act await target.ValidateAsync(tokenExchangeContext).ConfigureAwait(false); // Assert Assert.IsTrue(tokenExchangeContext.Result.IsError); Assert.AreEqual("invalid_request", tokenExchangeContext.Result.Error); Assert.AreEqual(this.errorResult.ErrorDescription, tokenExchangeContext.Result.ErrorDescription); this.requestValidatorMock.Verify(v => v.ValidateAsync(It.IsAny <ValidatedTokenRequest>()), Times.Once()); }
public async Task Build_ValidRequest_SuccessResult() { // Arrange var expectedSub = this.successResult.SubjectTokenValidationResult.Claims.Sub(); var expectedClientId = this.successResult.SubjectTokenValidationResult.Client.ClientId; var expectedClientClaim = "customValueFromSubject"; var tokenExchangeContext = new ExtensionGrantValidationContext() { Request = new ValidatedTokenRequest { Client = new Client { ClientId = "dummyClientFromRequest", }, ClientClaims = new List <Claim> { new Claim("client_custom_type", "customValueFromRequest") } } }; this.requestValidatorMock.Setup(x => x.ValidateAsync(tokenExchangeContext.Request)) .ReturnsAsync(this.successResult); var target = new TokenExchangeGrant(this.requestValidatorMock.Object, this.resultBuilder); // Act await target.ValidateAsync(tokenExchangeContext).ConfigureAwait(false); // Assert Assert.IsFalse(tokenExchangeContext.Result.IsError); Assert.AreEqual(expectedSub, tokenExchangeContext.Result.Subject.Claims.Sub()); Assert.AreEqual(expectedClientId, tokenExchangeContext.Request.Client.ClientId); Assert.AreEqual(expectedClientClaim, tokenExchangeContext.Request.ClientClaims.FirstOrDefault(c => c.Type == "client_custom_type").Value); this.requestValidatorMock.Verify(v => v.ValidateAsync(It.IsAny <ValidatedTokenRequest>()), Times.Once()); }