public void ValidateSkipTokenQueryValidator_ThrowsOnNullOption() { // Arrange & Act & Assert SkipTokenQueryValidator validator = new SkipTokenQueryValidator(); ExceptionAssert.Throws <ArgumentNullException>(() => validator.Validate(null, new ODataValidationSettings())); }
public void ApplyToOfTSkipTokenQueryOption_Calls_ApplyToOfTOnSkipTokenHandler() { // Arrange Mock <SkipTokenHandler> handler = new Mock <SkipTokenHandler>(); ODataQuerySettings settings = new ODataQuerySettings(); SkipTokenQueryValidator validator = new SkipTokenQueryValidator(); IServiceProvider sp = new ServiceCollection() .AddSingleton <SkipTokenHandler>(handler.Object) .AddSingleton <SkipTokenQueryValidator>(validator) .BuildServiceProvider(); ODataQueryContext context = new ODataQueryContext(EdmCoreModel.Instance, typeof(int)) { RequestContainer = sp }; SkipTokenQueryOption skipTokenQuery = new SkipTokenQueryOption("abc", context); IQueryable <SkipTokenCustomer> query = Array.Empty <SkipTokenCustomer>().AsQueryable(); handler.Setup(h => h.ApplyTo <SkipTokenCustomer>(query, skipTokenQuery, settings, null)).Returns(query).Verifiable(); // Act skipTokenQuery.ApplyTo <SkipTokenCustomer>(query, settings, null); // Assert handler.Verify(); }
public void ValidateSkipTokenQueryValidator_ThrowsOnNullSettings() { // Arrange & Act SkipTokenQueryValidator validator = new SkipTokenQueryValidator(); ODataQueryContext context = new ODataQueryContext(EdmCoreModel.Instance, typeof(int), null); SkipTokenQueryOption query = new SkipTokenQueryOption("abc", context); // Assert ExceptionAssert.Throws <ArgumentNullException>(() => validator.Validate(query, null)); }
public void ValidateSkipTokenQueryValidator_ThrowsNotAllowedQueryOption() { // Arrange ODataValidationSettings settings = new ODataValidationSettings(); ODataQueryContext context = new ODataQueryContext(EdmCoreModel.Instance, typeof(int), null); context.DefaultQuerySettings.EnableSkipToken = false; SkipTokenQueryOption query = new SkipTokenQueryOption("abc", context); SkipTokenQueryValidator validator = new SkipTokenQueryValidator(); // Act & Assert ExceptionAssert.Throws <ODataException>(() => validator.Validate(query, settings), "Query option 'SkipToken' is not allowed. To allow it, set the 'AllowedQueryOptions' property on EnableQueryAttribute or QueryValidationSettings."); }
/// <summary> /// Initialize a new instance of <see cref="SkipQueryOption"/> based on the raw $skiptoken value and /// an EdmModel from <see cref="ODataQueryContext"/>. /// </summary> /// <param name="rawValue">The raw value for $skiptoken query.</param> /// <param name="context">The <see cref="ODataQueryContext"/> which contains the <see cref="IEdmModel"/> and some type information.</param> public SkipTokenQueryOption(string rawValue, ODataQueryContext context) { if (string.IsNullOrEmpty(rawValue)) { throw Error.ArgumentNullOrEmpty(nameof(rawValue)); } if (context == null) { throw Error.ArgumentNull(nameof(context)); } RawValue = rawValue; Validator = SkipTokenQueryValidator.GetSkipTokenQueryValidator(context); Handler = context.GetSkipTokenHandler(); Context = context; }
public void CtorSkipTokenQueryOption_SetsProperties() { // Arrange Mock <SkipTokenHandler> handler = new Mock <SkipTokenHandler>(); SkipTokenQueryValidator validator = new SkipTokenQueryValidator(); IServiceProvider sp = new ServiceCollection() .AddSingleton <SkipTokenHandler>(handler.Object) .AddSingleton <SkipTokenQueryValidator>(validator) .BuildServiceProvider(); ODataQueryContext context = new ODataQueryContext(EdmCoreModel.Instance, typeof(int)) { RequestContainer = sp }; // Act SkipTokenQueryOption skipTokenQuery = new SkipTokenQueryOption("abc", context); // Assert Assert.Equal("abc", skipTokenQuery.RawValue); Assert.Same(context, skipTokenQuery.Context); Assert.Same(handler.Object, skipTokenQuery.Handler); Assert.Same(validator, skipTokenQuery.Validator); }