Versatile OpenID Connect stack for ASP.NET Core and Microsoft.Owin (compatible with ASP.NET 4.6.1)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

185 lines
6.6 KiB

/*
* Licensed under the Apache License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0)
* See https://github.com/openiddict/openiddict-core for more information concerning
* the license and the contributors participating to this project.
*/
using System.Collections.Immutable;
using System.Runtime.InteropServices;
using System.Text.Json.Nodes;
using Xunit;
namespace OpenIddict.Abstractions.Tests.Primitives;
public class OpenIddictResponseTests
{
public static IEnumerable<object[]> Properties
{
get
{
yield return new object[]
{
/* property: */ nameof(OpenIddictResponse.AccessToken),
/* name: */ Parameters.AccessToken,
/* value: */ new OpenIddictParameter("802A3E3E-DCCA-4EFC-89FA-7D82FE8C27E4")
};
yield return new object[]
{
/* property: */ nameof(OpenIddictResponse.Code),
/* name: */ Parameters.Code,
/* value: */ new OpenIddictParameter("802A3E3E-DCCA-4EFC-89FA-7D82FE8C27E4")
};
yield return new object[]
{
/* property: */ nameof(OpenIddictResponse.DeviceCode),
/* name: */ Parameters.DeviceCode,
/* value: */ new OpenIddictParameter("802A3E3E-DCCA-4EFC-89FA-7D82FE8C27E4")
};
yield return new object[]
{
/* property: */ nameof(OpenIddictResponse.Error),
/* name: */ Parameters.Error,
/* value: */ new OpenIddictParameter("802A3E3E-DCCA-4EFC-89FA-7D82FE8C27E4")
};
yield return new object[]
{
/* property: */ nameof(OpenIddictResponse.ErrorDescription),
/* name: */ Parameters.ErrorDescription,
/* value: */ new OpenIddictParameter("802A3E3E-DCCA-4EFC-89FA-7D82FE8C27E4")
};
yield return new object[]
{
/* property: */ nameof(OpenIddictResponse.ErrorUri),
/* name: */ Parameters.ErrorUri,
/* value: */ new OpenIddictParameter("802A3E3E-DCCA-4EFC-89FA-7D82FE8C27E4")
};
yield return new object[]
{
/* property: */ nameof(OpenIddictResponse.ExpiresIn),
/* name: */ Parameters.ExpiresIn,
/* value: */ new OpenIddictParameter((long?) 42)
};
yield return new object[]
{
/* property: */ nameof(OpenIddictResponse.IdToken),
/* name: */ Parameters.IdToken,
/* value: */ new OpenIddictParameter("802A3E3E-DCCA-4EFC-89FA-7D82FE8C27E4")
};
yield return new object[]
{
/* property: */ nameof(OpenIddictResponse.Iss),
/* name: */ Parameters.Iss,
/* value: */ new OpenIddictParameter("802A3E3E-DCCA-4EFC-89FA-7D82FE8C27E4")
};
yield return new object[]
{
/* property: */ nameof(OpenIddictResponse.RefreshToken),
/* name: */ Parameters.RefreshToken,
/* value: */ new OpenIddictParameter("802A3E3E-DCCA-4EFC-89FA-7D82FE8C27E4")
};
yield return new object[]
{
/* property: */ nameof(OpenIddictResponse.RequestUri),
/* name: */ Parameters.RequestUri,
/* value: */ new OpenIddictParameter("802A3E3E-DCCA-4EFC-89FA-7D82FE8C27E4")
};
yield return new object[]
{
/* property: */ nameof(OpenIddictResponse.Scope),
/* name: */ Parameters.Scope,
/* value: */ new OpenIddictParameter("802A3E3E-DCCA-4EFC-89FA-7D82FE8C27E4")
};
yield return new object[]
{
/* property: */ nameof(OpenIddictResponse.State),
/* name: */ Parameters.State,
/* value: */ new OpenIddictParameter("802A3E3E-DCCA-4EFC-89FA-7D82FE8C27E4")
};
yield return new object[]
{
/* property: */ nameof(OpenIddictResponse.TokenType),
/* name: */ Parameters.TokenType,
/* value: */ new OpenIddictParameter("802A3E3E-DCCA-4EFC-89FA-7D82FE8C27E4")
};
yield return new object[]
{
/* property: */ nameof(OpenIddictResponse.UserCode),
/* name: */ Parameters.UserCode,
/* value: */ new OpenIddictParameter("802A3E3E-DCCA-4EFC-89FA-7D82FE8C27E4")
};
yield return new object[]
{
/* property: */ nameof(OpenIddictResponse.VerificationUri),
/* name: */ Parameters.VerificationUri,
/* value: */ new OpenIddictParameter("802A3E3E-DCCA-4EFC-89FA-7D82FE8C27E4")
};
yield return new object[]
{
/* property: */ nameof(OpenIddictResponse.VerificationUriComplete),
/* name: */ Parameters.VerificationUriComplete,
/* value: */ new OpenIddictParameter("802A3E3E-DCCA-4EFC-89FA-7D82FE8C27E4")
};
}
}
[Theory]
[MemberData(nameof(Properties))]
public void PropertyGetter_ReturnsExpectedParameter(string property, string name, OpenIddictParameter value)
{
// Arrange
var response = new OpenIddictResponse();
response.SetParameter(name, value);
// Act and assert
var info = typeof(OpenIddictResponse).GetProperty(property)!;
if (typeof(JsonNode).IsAssignableFrom(info.PropertyType))
{
Assert.True(JsonNode.DeepEquals((JsonNode?) value.GetRawValue(), (JsonNode?) info.GetValue(response)));
}
else
{
Assert.Equal(value.GetRawValue(), info.GetValue(response));
}
}
[Theory]
[MemberData(nameof(Properties))]
public void PropertySetter_AddsExpectedParameter(string property, string name, OpenIddictParameter value)
{
// Arrange
var response = new OpenIddictResponse();
// Act
var info = typeof(OpenIddictResponse).GetProperty(property)!;
if (typeof(ImmutableArray<string?>).IsAssignableFrom(info.PropertyType))
{
info.SetValue(response, ImmutableCollectionsMarshal.AsImmutableArray((string?[]?) value.GetRawValue()));
}
else
{
info.SetValue(response, value.GetRawValue());
}
// Assert
Assert.Equal(value, response.GetParameter(name));
}
}