From ace6be44275f80ea11ae2cd0e81856380e4fbcce Mon Sep 17 00:00:00 2001 From: Frederik Date: Mon, 20 Sep 2021 14:56:05 +0200 Subject: [PATCH] Support unpaginated requests for some endpoints --- .../Clients/ClientGrantsClient.cs | 27 ++--- .../Clients/ClientsClient.cs | 16 +-- .../Clients/ConnectionsClient.cs | 14 +-- .../Clients/DeviceCredentialsClient.cs | 15 +-- .../Clients/HooksClient.cs | 28 +++--- src/Auth0.ManagementApi/Clients/LogsClient.cs | 35 ++++--- .../Clients/ResourceServersClient.cs | 6 +- .../Clients/RulesClient.cs | 31 +++--- .../Clients/UsersClient.cs | 99 ++++++++++--------- .../ClientGrantTests.cs | 12 +++ .../ClientTests.cs | 11 +++ .../HooksTests.cs | 26 +++++ .../LogsTests.cs | 11 +++ .../ResourceServerTests.cs | 11 +++ .../RulesTests.cs | 25 +++++ .../UsersTests.cs | 12 +++ 16 files changed, 257 insertions(+), 122 deletions(-) diff --git a/src/Auth0.ManagementApi/Clients/ClientGrantsClient.cs b/src/Auth0.ManagementApi/Clients/ClientGrantsClient.cs index d2845d696..7c9473d82 100644 --- a/src/Auth0.ManagementApi/Clients/ClientGrantsClient.cs +++ b/src/Auth0.ManagementApi/Clients/ClientGrantsClient.cs @@ -56,22 +56,25 @@ public Task DeleteAsync(string id, CancellationToken cancellationToken = default /// Specifies to use in requesting paged results. /// The cancellation token to cancel operation. /// A containing the client grants requested. - public Task> GetAllAsync(GetClientGrantsRequest request, PaginationInfo pagination, CancellationToken cancellationToken = default) + public Task> GetAllAsync(GetClientGrantsRequest request, PaginationInfo pagination = null, CancellationToken cancellationToken = default) { if (request == null) throw new ArgumentNullException(nameof(request)); - if (pagination == null) - throw new ArgumentNullException(nameof(pagination)); - return Connection.GetAsync>(BuildUri("client-grants", - new Dictionary - { - {"audience", request.Audience}, - {"client_id", request.ClientId}, - {"page", pagination.PageNo.ToString()}, - {"per_page", pagination.PerPage.ToString()}, - {"include_totals", pagination.IncludeTotals.ToString().ToLower()} - }), DefaultHeaders, converters, cancellationToken); + var queryStrings = new Dictionary + { + {"audience", request.Audience}, + {"client_id", request.ClientId}, + }; + + if (pagination != null) + { + queryStrings["page"] = pagination.PageNo.ToString(); + queryStrings["per_page"] = pagination.PerPage.ToString(); + queryStrings["include_totals"] = pagination.IncludeTotals.ToString().ToLower(); + } + + return Connection.GetAsync>(BuildUri("client-grants", queryStrings), DefaultHeaders, converters, cancellationToken); } /// diff --git a/src/Auth0.ManagementApi/Clients/ClientsClient.cs b/src/Auth0.ManagementApi/Clients/ClientsClient.cs index 1728feae1..a37c54a76 100644 --- a/src/Auth0.ManagementApi/Clients/ClientsClient.cs +++ b/src/Auth0.ManagementApi/Clients/ClientsClient.cs @@ -57,24 +57,26 @@ public Task DeleteAsync(string id, CancellationToken cancellationToken = default /// Specifies pagination info to use when requesting paged results. /// The cancellation token to cancel operation. /// An containing the clients. - public Task> GetAllAsync(GetClientsRequest request, PaginationInfo pagination, CancellationToken cancellationToken = default) + public Task> GetAllAsync(GetClientsRequest request, PaginationInfo pagination = null, CancellationToken cancellationToken = default) { if (request == null) throw new ArgumentNullException(nameof(request)); - if (pagination == null) - throw new ArgumentNullException(nameof(pagination)); var queryStrings = new Dictionary { {"fields", request.Fields}, {"include_fields", request.IncludeFields?.ToString().ToLower()}, {"is_global", request.IsGlobal?.ToString().ToLower()}, - {"is_first_party", request.IsFirstParty?.ToString().ToLower()}, - {"page", pagination.PageNo.ToString()}, - {"per_page", pagination.PerPage.ToString()}, - {"include_totals", pagination.IncludeTotals.ToString().ToLower()}, + {"is_first_party", request.IsFirstParty?.ToString().ToLower()} }; + if (pagination != null) + { + queryStrings["page"] = pagination.PageNo.ToString(); + queryStrings["per_page"] = pagination.PerPage.ToString(); + queryStrings["include_totals"] = pagination.IncludeTotals.ToString().ToLower(); + } + if (request.AppType != null) queryStrings.Add("app_type", string.Join(",", request.AppType.Select(ExtensionMethods.ToEnumString))); diff --git a/src/Auth0.ManagementApi/Clients/ConnectionsClient.cs b/src/Auth0.ManagementApi/Clients/ConnectionsClient.cs index dc4542db5..17a682c16 100644 --- a/src/Auth0.ManagementApi/Clients/ConnectionsClient.cs +++ b/src/Auth0.ManagementApi/Clients/ConnectionsClient.cs @@ -90,23 +90,25 @@ public Task GetAsync(string id, string fields = null, bool includeFi /// Specifies pagination info to use when requesting paged results. /// The cancellation token to cancel operation. /// An containing the list of connections. - public Task> GetAllAsync(GetConnectionsRequest request, PaginationInfo pagination, CancellationToken cancellationToken = default) + public Task> GetAllAsync(GetConnectionsRequest request, PaginationInfo pagination = null, CancellationToken cancellationToken = default) { if (request == null) throw new ArgumentNullException(nameof(request)); - if (pagination == null) - throw new ArgumentNullException(nameof(pagination)); var queryStrings = new Dictionary { {"fields", request.Fields}, {"include_fields", request.IncludeFields?.ToString().ToLower()}, {"name", request.Name}, - {"page", pagination.PageNo.ToString()}, - {"per_page", pagination.PerPage.ToString()}, - {"include_totals", pagination.IncludeTotals.ToString().ToLower()} }; + if (pagination != null) + { + queryStrings["page"] = pagination.PageNo.ToString(); + queryStrings["per_page"] = pagination.PerPage.ToString(); + queryStrings["include_totals"] = pagination.IncludeTotals.ToString().ToLower(); + } + // Add each strategy as a separate querystring if (request.Strategy != null) { diff --git a/src/Auth0.ManagementApi/Clients/DeviceCredentialsClient.cs b/src/Auth0.ManagementApi/Clients/DeviceCredentialsClient.cs index 98e2e4ca4..61e76b456 100644 --- a/src/Auth0.ManagementApi/Clients/DeviceCredentialsClient.cs +++ b/src/Auth0.ManagementApi/Clients/DeviceCredentialsClient.cs @@ -58,14 +58,11 @@ public Task> GetAllAsync(string fields = null, bool incl /// Specifies to use in requesting paged results. /// The cancellation token to cancel operation. /// A list of which conforms to the criteria specified. - public Task> GetAllAsync(GetDeviceCredentialsRequest request, PaginationInfo pagination, CancellationToken cancellationToken = default) + public Task> GetAllAsync(GetDeviceCredentialsRequest request, PaginationInfo pagination = null, CancellationToken cancellationToken = default) { if (request == null) throw new ArgumentNullException(nameof(request)); - if (pagination == null) - throw new ArgumentNullException(nameof(pagination)); - var queryStrings = new Dictionary { {"fields", request.Fields}, @@ -73,11 +70,15 @@ public Task> GetAllAsync(GetDeviceCredentialsReques {"user_id", request.UserId}, {"client_id", request.ClientId}, {"type", request.Type}, - {"page", pagination.PageNo.ToString()}, - {"per_page", pagination.PerPage.ToString()}, - {"include_totals", pagination.IncludeTotals.ToString().ToLower()} }; + if (pagination != null) + { + queryStrings["page"] = pagination.PageNo.ToString(); + queryStrings["per_page"] = pagination.PerPage.ToString(); + queryStrings["include_totals"] = pagination.IncludeTotals.ToString().ToLower(); + } + return Connection.GetAsync>(BuildUri("device-credentials", queryStrings), DefaultHeaders, converters, cancellationToken); } diff --git a/src/Auth0.ManagementApi/Clients/HooksClient.cs b/src/Auth0.ManagementApi/Clients/HooksClient.cs index e1e7ba7d0..131c267e1 100644 --- a/src/Auth0.ManagementApi/Clients/HooksClient.cs +++ b/src/Auth0.ManagementApi/Clients/HooksClient.cs @@ -56,23 +56,27 @@ public Task DeleteAsync(string id, CancellationToken cancellationToken = default /// Specifies pagination info to use when requesting paged results. /// The cancellation token to cancel operation. /// An containing the hooks requested. - public Task> GetAllAsync(GetHooksRequest request, PaginationInfo pagination, CancellationToken cancellationToken = default) + public Task> GetAllAsync(GetHooksRequest request, PaginationInfo pagination = null, CancellationToken cancellationToken = default) { if (request == null) throw new ArgumentNullException(nameof(request)); - if (pagination == null) - throw new ArgumentNullException(nameof(pagination)); + + var queryStrings = new Dictionary + { + {"enabled", request.Enabled?.ToString().ToLower()}, + {"fields", request.Fields}, + {"triggerId", request.TriggerId}, + }; + + if (pagination != null) + { + queryStrings["page"] = pagination.PageNo.ToString(); + queryStrings["per_page"] = pagination.PerPage.ToString(); + queryStrings["include_totals"] = pagination.IncludeTotals.ToString().ToLower(); + } return Connection.GetAsync>(BuildUri("hooks", - new Dictionary - { - {"enabled", request.Enabled?.ToString().ToLower()}, - {"fields", request.Fields}, - {"triggerId", request.TriggerId }, - {"page", pagination.PageNo.ToString()}, - {"per_page", pagination.PerPage.ToString()}, - {"include_totals", pagination.IncludeTotals.ToString().ToLower()} - }), DefaultHeaders, hooksConverters, cancellationToken); + queryStrings), DefaultHeaders, hooksConverters, cancellationToken); } /// diff --git a/src/Auth0.ManagementApi/Clients/LogsClient.cs b/src/Auth0.ManagementApi/Clients/LogsClient.cs index 052792545..bc6e4eb7d 100644 --- a/src/Auth0.ManagementApi/Clients/LogsClient.cs +++ b/src/Auth0.ManagementApi/Clients/LogsClient.cs @@ -33,26 +33,29 @@ public LogsClient(IManagementConnection connection, Uri baseUri, IDictionarySpecifies pagination info to use when requesting paged results. /// The cancellation token to cancel operation. /// An containing the list of log entries. - public Task> GetAllAsync(GetLogsRequest request, PaginationInfo pagination, CancellationToken cancellationToken = default) + public Task> GetAllAsync(GetLogsRequest request, PaginationInfo pagination = null, CancellationToken cancellationToken = default) { if (request == null) throw new ArgumentNullException(nameof(request)); - if (pagination == null) - throw new ArgumentNullException(nameof(pagination)); - return Connection.GetAsync>(BuildUri("logs", - new Dictionary - { - {"sort", request.Sort}, - {"fields", request.Fields}, - {"include_fields", request.IncludeFields?.ToString().ToLower()}, - {"from", request.From}, - {"take", request.Take?.ToString().ToLower()}, - {"q", request.Query}, - {"page", pagination.PageNo.ToString()}, - {"per_page", pagination.PerPage.ToString()}, - {"include_totals", pagination.IncludeTotals.ToString().ToLower()} - }), DefaultHeaders, converters, cancellationToken); + var queryStrings = new Dictionary + { + {"sort", request.Sort}, + {"fields", request.Fields}, + {"include_fields", request.IncludeFields?.ToString().ToLower()}, + {"from", request.From}, + {"take", request.Take?.ToString().ToLower()}, + {"q", request.Query}, + }; + + if (pagination != null) + { + queryStrings["page"] = pagination.PageNo.ToString(); + queryStrings["per_page"] = pagination.PerPage.ToString(); + queryStrings["include_totals"] = pagination.IncludeTotals.ToString().ToLower(); + } + + return Connection.GetAsync>(BuildUri("logs", queryStrings), DefaultHeaders, converters, cancellationToken); } /// diff --git a/src/Auth0.ManagementApi/Clients/ResourceServersClient.cs b/src/Auth0.ManagementApi/Clients/ResourceServersClient.cs index a445d8d93..e15a0038e 100644 --- a/src/Auth0.ManagementApi/Clients/ResourceServersClient.cs +++ b/src/Auth0.ManagementApi/Clients/ResourceServersClient.cs @@ -66,15 +66,15 @@ public Task GetAsync(string id, CancellationToken cancellationTo /// Specifies pagination info to use when requesting paged results. /// The cancellation token to cancel operation. /// A containing the list of resource servers. - public Task> GetAllAsync(PaginationInfo pagination, CancellationToken cancellationToken = default) + public Task> GetAllAsync(PaginationInfo pagination = null, CancellationToken cancellationToken = default) { return Connection.GetAsync>(BuildUri("resource-servers", - new Dictionary + pagination != null ? new Dictionary { {"page", pagination.PageNo.ToString()}, {"per_page", pagination.PerPage.ToString()}, {"include_totals", pagination.IncludeTotals.ToString().ToLower()} - }), DefaultHeaders, converters, cancellationToken); + } : null), DefaultHeaders, converters, cancellationToken); } /// diff --git a/src/Auth0.ManagementApi/Clients/RulesClient.cs b/src/Auth0.ManagementApi/Clients/RulesClient.cs index bf4a75511..37e40b042 100644 --- a/src/Auth0.ManagementApi/Clients/RulesClient.cs +++ b/src/Auth0.ManagementApi/Clients/RulesClient.cs @@ -56,24 +56,27 @@ public Task DeleteAsync(string id, CancellationToken cancellationToken = default /// Specifies pagination info to use when requesting paged results. /// The cancellation token to cancel operation. /// An containing the rules requested. - public Task> GetAllAsync(GetRulesRequest request, PaginationInfo pagination, CancellationToken cancellationToken = default) + public Task> GetAllAsync(GetRulesRequest request, PaginationInfo pagination = null, CancellationToken cancellationToken = default) { if (request == null) throw new ArgumentNullException(nameof(request)); - if (pagination == null) - throw new ArgumentNullException(nameof(pagination)); - return Connection.GetAsync>(BuildUri("rules", - new Dictionary - { - {"enabled", request.Enabled?.ToString().ToLower()}, - {"fields", request.Fields}, - {"include_fields", request.IncludeFields?.ToString().ToLower()}, - {"stage", request.Stage}, - {"page", pagination.PageNo.ToString()}, - {"per_page", pagination.PerPage.ToString()}, - {"include_totals", pagination.IncludeTotals.ToString().ToLower()} - }), DefaultHeaders, rulesConverters, cancellationToken); + var queryStrings = new Dictionary + { + {"enabled", request.Enabled?.ToString().ToLower()}, + {"fields", request.Fields}, + {"include_fields", request.IncludeFields?.ToString().ToLower()}, + {"stage", request.Stage} + }; + + if (pagination != null) + { + queryStrings["page"] = pagination.PageNo.ToString(); + queryStrings["per_page"] = pagination.PerPage.ToString(); + queryStrings["include_totals"] = pagination.IncludeTotals.ToString().ToLower(); + } + + return Connection.GetAsync>(BuildUri("rules", queryStrings), DefaultHeaders, rulesConverters, cancellationToken); } /// diff --git a/src/Auth0.ManagementApi/Clients/UsersClient.cs b/src/Auth0.ManagementApi/Clients/UsersClient.cs index f141edc8e..5176dd414 100644 --- a/src/Auth0.ManagementApi/Clients/UsersClient.cs +++ b/src/Auth0.ManagementApi/Clients/UsersClient.cs @@ -86,26 +86,29 @@ public Task DeleteMultifactorProviderAsync(string id, string provider, Cancellat /// Specifies pagination info to use when requesting paged results. /// The cancellation token to cancel operation. /// An containing the list of users. - public Task> GetAllAsync(GetUsersRequest request, PaginationInfo pagination, CancellationToken cancellationToken = default) + public Task> GetAllAsync(GetUsersRequest request, PaginationInfo pagination = null, CancellationToken cancellationToken = default) { if (request == null) throw new ArgumentNullException(nameof(request)); - if (pagination == null) - throw new ArgumentNullException(nameof(pagination)); - return Connection.GetAsync>(BuildUri($"users", - new Dictionary - { - {"sort", request.Sort}, - {"connection", request.Connection}, - {"fields", request.Fields}, - {"include_fields", request.IncludeFields?.ToString().ToLower()}, - {"q", request.Query}, - {"search_engine", request.SearchEngine}, - {"page", pagination.PageNo.ToString()}, - {"per_page", pagination.PerPage.ToString()}, - {"include_totals", pagination.IncludeTotals.ToString().ToLower()}, - }), DefaultHeaders, usersConverters, cancellationToken); + var queryStrings = new Dictionary + { + {"sort", request.Sort}, + {"connection", request.Connection}, + {"fields", request.Fields}, + {"include_fields", request.IncludeFields?.ToString().ToLower()}, + {"q", request.Query}, + {"search_engine", request.SearchEngine}, + }; + + if (pagination != null) + { + queryStrings["page"] = pagination.PageNo.ToString(); + queryStrings["per_page"] = pagination.PerPage.ToString(); + queryStrings["include_totals"] = pagination.IncludeTotals.ToString().ToLower(); + } + + return Connection.GetAsync>(BuildUri($"users", queryStrings), DefaultHeaders, usersConverters, cancellationToken); } /// @@ -139,21 +142,24 @@ public Task GetAsync(string id, string fields = null, bool includeFields = /// Specifies pagination info to use when requesting paged results. /// The cancellation token to cancel operation. /// An containing the log entries for the user. - public Task> GetLogsAsync(GetUserLogsRequest request, PaginationInfo pagination, CancellationToken cancellationToken = default) + public Task> GetLogsAsync(GetUserLogsRequest request, PaginationInfo pagination = null, CancellationToken cancellationToken = default) { if (request == null) throw new ArgumentNullException(nameof(request)); - if (pagination == null) - throw new ArgumentNullException(nameof(pagination)); - return Connection.GetAsync>(BuildUri($"users/{EncodePath(request.UserId)}/logs", - new Dictionary - { - {"sort", request.Sort}, - {"page", pagination.PageNo.ToString()}, - {"per_page", pagination.PerPage.ToString()}, - {"include_totals", pagination.IncludeTotals.ToString().ToLower()} - }), DefaultHeaders, logsConverters, cancellationToken); + var queryStrings = new Dictionary + { + {"sort", request.Sort} + }; + + if (pagination != null) + { + queryStrings["page"] = pagination.PageNo.ToString(); + queryStrings["per_page"] = pagination.PerPage.ToString(); + queryStrings["include_totals"] = pagination.IncludeTotals.ToString().ToLower(); + } + + return Connection.GetAsync>(BuildUri($"users/{EncodePath(request.UserId)}/logs", queryStrings), DefaultHeaders, logsConverters, cancellationToken); } /// @@ -163,18 +169,18 @@ public Task> GetLogsAsync(GetUserLogsRequest request, Pagin /// Specifies pagination info to use when requesting paged results. /// The cancellation token to cancel operation. /// An containing the roles for the user. - public Task> GetRolesAsync(string userId, PaginationInfo pagination, CancellationToken cancellationToken = default) + public Task> GetRolesAsync(string userId, PaginationInfo pagination = null, CancellationToken cancellationToken = default) { - if (pagination == null) - throw new ArgumentNullException(nameof(pagination)); + var queryStrings = new Dictionary(); - return Connection.GetAsync>(BuildUri($"users/{EncodePath(userId)}/roles", - new Dictionary - { - {"page", pagination.PageNo.ToString()}, - {"per_page", pagination.PerPage.ToString()}, - {"include_totals", pagination.IncludeTotals.ToString().ToLower()} - }), DefaultHeaders, rolesConverters, cancellationToken); + if (pagination != null) + { + queryStrings["page"] = pagination.PageNo.ToString(); + queryStrings["per_page"] = pagination.PerPage.ToString(); + queryStrings["include_totals"] = pagination.IncludeTotals.ToString().ToLower(); + } + + return Connection.GetAsync>(BuildUri($"users/{EncodePath(userId)}/roles", queryStrings), DefaultHeaders, rolesConverters, cancellationToken); } /// @@ -309,15 +315,18 @@ public Task UpdateAsync(string id, UserUpdateRequest request, Cancellation /// Specifies to use in requesting paged results. /// The cancellation token to cancel operation. /// An containing the assigned permissions for this user. - public Task> GetPermissionsAsync(string id, PaginationInfo pagination, CancellationToken cancellationToken = default) + public Task> GetPermissionsAsync(string id, PaginationInfo pagination = null, CancellationToken cancellationToken = default) { - return Connection.GetAsync>(BuildUri($"users/{EncodePath(id)}/permissions", - new Dictionary - { - {"page", pagination.PageNo.ToString()}, - {"per_page", pagination.PerPage.ToString()}, - {"include_totals", pagination.IncludeTotals.ToString().ToLower()} - }), DefaultHeaders, permissionsConverters, cancellationToken); + var queryStrings = new Dictionary(); + + if (pagination != null) + { + queryStrings["page"] = pagination.PageNo.ToString(); + queryStrings["per_page"] = pagination.PerPage.ToString(); + queryStrings["include_totals"] = pagination.IncludeTotals.ToString().ToLower(); + } + + return Connection.GetAsync>(BuildUri($"users/{EncodePath(id)}/permissions", queryStrings), DefaultHeaders, permissionsConverters, cancellationToken); } /// diff --git a/tests/Auth0.ManagementApi.IntegrationTests/ClientGrantTests.cs b/tests/Auth0.ManagementApi.IntegrationTests/ClientGrantTests.cs index 6a09dcabb..7b969e637 100644 --- a/tests/Auth0.ManagementApi.IntegrationTests/ClientGrantTests.cs +++ b/tests/Auth0.ManagementApi.IntegrationTests/ClientGrantTests.cs @@ -140,5 +140,17 @@ public async Task Test_paging_includes_totals() // Assert Assert.NotNull(grants.Paging); } + + [Fact] + public async Task Test_without_paging() + { + // Act + var grants = await _apiClient.ClientGrants.GetAllAsync(new GetClientGrantsRequest()); + + // Assert + Assert.True(grants.Count > 0); + Assert.Null(grants.Paging); + } + } } \ No newline at end of file diff --git a/tests/Auth0.ManagementApi.IntegrationTests/ClientTests.cs b/tests/Auth0.ManagementApi.IntegrationTests/ClientTests.cs index 2f5905b7c..1e819a225 100644 --- a/tests/Auth0.ManagementApi.IntegrationTests/ClientTests.cs +++ b/tests/Auth0.ManagementApi.IntegrationTests/ClientTests.cs @@ -169,6 +169,17 @@ public async Task Test_paging_includes_totals() Assert.NotNull(clients.Paging); } + [Fact] + public async Task Test_without_paging() + { + // Act + var clients = await _apiClient.Clients.GetAllAsync(new GetClientsRequest()); + + // Assert + Assert.Null(clients.Paging); + Assert.True(clients.Count > 0); + } + [Fact] public async Task Test_app_type_works_correctly() { diff --git a/tests/Auth0.ManagementApi.IntegrationTests/HooksTests.cs b/tests/Auth0.ManagementApi.IntegrationTests/HooksTests.cs index e4b49df8c..e55741a10 100644 --- a/tests/Auth0.ManagementApi.IntegrationTests/HooksTests.cs +++ b/tests/Auth0.ManagementApi.IntegrationTests/HooksTests.cs @@ -105,5 +105,31 @@ public async Task Test_paging_includes_totals() // Assert Assert.NotNull(hooks.Paging); } + + [Fact] + public async Task Test_without_paging() + { + // Add a new hook + var newHook = await _apiClient.Hooks.CreateAsync(new HookCreateRequest() + { + Name = $"integration-test-hook-{Guid.NewGuid():N}", + Script = @"module.exports = function(client, scope, audience, context, callback) { { + // TODO: implement your hook + callback(null, context); + }", + Dependencies = JObject.Parse("{ \"auth0\": \"2.32.0\"}"), + TriggerId = "credentials-exchange" + }); + + newHook.Should().NotBeNull(); + + // Act + var hooks = await _apiClient.Hooks.GetAllAsync(new GetHooksRequest()); + + hooks.Paging.Should().BeNull(); + hooks.Count.Should().BeGreaterThan(0); + + await _apiClient.Hooks.DeleteAsync(newHook.Id); + } } } \ No newline at end of file diff --git a/tests/Auth0.ManagementApi.IntegrationTests/LogsTests.cs b/tests/Auth0.ManagementApi.IntegrationTests/LogsTests.cs index fb1be9db2..5388d38d5 100644 --- a/tests/Auth0.ManagementApi.IntegrationTests/LogsTests.cs +++ b/tests/Auth0.ManagementApi.IntegrationTests/LogsTests.cs @@ -69,5 +69,16 @@ public async Task Test_paging_includes_totals() // Assert Assert.NotNull(logs.Paging); } + + [Fact] + public async Task Test_without_paging() + { + // Act + var logs = await _apiClient.Logs.GetAllAsync(new GetLogsRequest()); + + // Assert + logs.Paging.Should().BeNull(); + logs.Count.Should().BeGreaterThan(0); + } } } \ No newline at end of file diff --git a/tests/Auth0.ManagementApi.IntegrationTests/ResourceServerTests.cs b/tests/Auth0.ManagementApi.IntegrationTests/ResourceServerTests.cs index 12bbc7188..ff5fb32c2 100644 --- a/tests/Auth0.ManagementApi.IntegrationTests/ResourceServerTests.cs +++ b/tests/Auth0.ManagementApi.IntegrationTests/ResourceServerTests.cs @@ -124,5 +124,16 @@ public async Task Test_paging_includes_totals() // Assert Assert.NotNull(resourceServers.Paging); } + + [Fact] + public async Task Test_without_paging() + { + // Act + var resourceServers = await _apiClient.ResourceServers.GetAllAsync(); + + // Assert + resourceServers.Paging.Should().BeNull(); + resourceServers.Count.Should().BeGreaterThan(0); + } } } \ No newline at end of file diff --git a/tests/Auth0.ManagementApi.IntegrationTests/RulesTests.cs b/tests/Auth0.ManagementApi.IntegrationTests/RulesTests.cs index 824130a7d..a4e3f2f80 100644 --- a/tests/Auth0.ManagementApi.IntegrationTests/RulesTests.cs +++ b/tests/Auth0.ManagementApi.IntegrationTests/RulesTests.cs @@ -97,5 +97,30 @@ public async Task Test_paging_includes_totals() // Assert Assert.NotNull(rules.Paging); } + + [Fact] + public async Task Test_without_paging() + { + // Add a new rule + var newRule = await _apiClient.Rules.CreateAsync(new RuleCreateRequest + { + Name = $"integration-test-rule-{Guid.NewGuid():N}", + Script = @"function (user, context, callback) { + // TODO: implement your rule + callback(null, user, context); + }" + }); + + newRule.Should().NotBeNull(); + + // Act + var rules = await _apiClient.Rules.GetAllAsync(new GetRulesRequest()); + + // Assert + rules.Paging.Should().BeNull(); + rules.Count.Should().BeGreaterThan(0); + + await _apiClient.Rules.DeleteAsync(newRule.Id); + } } } \ No newline at end of file diff --git a/tests/Auth0.ManagementApi.IntegrationTests/UsersTests.cs b/tests/Auth0.ManagementApi.IntegrationTests/UsersTests.cs index f65797141..d5eb0b500 100644 --- a/tests/Auth0.ManagementApi.IntegrationTests/UsersTests.cs +++ b/tests/Auth0.ManagementApi.IntegrationTests/UsersTests.cs @@ -200,6 +200,18 @@ public async Task Test_paging_includes_totals() Assert.NotNull(users.Paging); } + [Fact] + public async Task Test_without_paging() + { + // Act + var users = await _apiClient.Users.GetAllAsync(new GetUsersRequest()); + + // Assert + users.Paging.Should().BeNull(); + users.Count.Should().BeGreaterThan(0); + } + + [Fact] public async Task Can_update_user_metadata() {