public async Task ResourceDiscoveryV1_GetAllPerResourceTypeWithoutFilters_ReturnsExpectedAmountThroughPagingInHeaders()
        {
            // Arrange
            const string resourceDiscoveryGroupName = "logic-apps-unfiltered";
            const int    pageSize = 1000;
            const int    expectedTotalResourceCount = 1018;
            var          resourceDiscoveryClient    = new ResourceDiscoveryClient(Configuration, Logger);

            // Act & Assert
            var  currentPage = 1;
            bool hasMore;

            do
            {
                Logger.LogInformation("Discovering resources with page size for page {CurrentPage}", currentPage);

                var response = await resourceDiscoveryClient.GetDiscoveredResourcesV1WithResponseAsync(resourceDiscoveryGroupName, currentPage : currentPage);

                Assert.Equal(HttpStatusCode.OK, response.StatusCode);
                var rawResponseBody = await response.Content.ReadAsStringAsync();

                Assert.NotEmpty(rawResponseBody);
                var resources = DeserializeRawV1Response(rawResponseBody);
                Assert.NotNull(resources);

                var delta = expectedTotalResourceCount - ((currentPage - 1) * pageSize);
                var amountOfExpectedResults = delta > pageSize ? pageSize : delta;
                Assert.Equal(amountOfExpectedResults, resources.Count);
                var totalRecordsInResponse = AssertAndGetHeaderValue("X-Paging-Total", response);
                Assert.Equal(expectedTotalResourceCount, totalRecordsInResponse);

                hasMore = resources.Count == pageSize;
                currentPage++;
            }while (hasMore);
        }
        public async Task ResourceDiscoveryV1_GetWithFilterOnTwoRegions_ReturnsExpectedAmount()
        {
            // Arrange
            const string resourceDiscoveryGroupName = "two-region-scenario";
            const int    expectedResourceCount      = 415;
            var          resourceDiscoveryClient    = new ResourceDiscoveryClient(Configuration, Logger);

            // Act
            var response = await resourceDiscoveryClient.GetDiscoveredResourcesV1WithResponseAsync(resourceDiscoveryGroupName);

            // Assert
            await AssertV1PagedResult(response, expectedResourceCount);
        }
        public async Task ResourceDiscoveryV1_GetWithFilterOnMultipleValueInstanceTag_ReturnsExpectedAmount()
        {
            // Arrange
            const string resourceDiscoveryGroupName = "one-instance-tag-with-multi-value-scenario";
            const int    expectedResourceCount      = 409;
            var          resourceDiscoveryClient    = new ResourceDiscoveryClient(Configuration, Logger);

            // Act
            var response = await resourceDiscoveryClient.GetDiscoveredResourcesV1WithResponseAsync(resourceDiscoveryGroupName);

            // Assert
            await AssertV1PagedResult(response, expectedResourceCount);
        }
        public async Task ResourceDiscoveryV1_GetWithFilterOnOneSubscription_ReturnsExpectedAmount()
        {
            // Arrange
            const string resourceDiscoveryGroupName = "one-subscriptions-scenario";
            const int    expectedResourceCount      = 1000; // This should be more but is a known bug, see https://github.com/tomkerkhove/promitor/issues/1828
            var          resourceDiscoveryClient    = new ResourceDiscoveryClient(Configuration, Logger);

            // Act
            var response = await resourceDiscoveryClient.GetDiscoveredResourcesV1WithResponseAsync(resourceDiscoveryGroupName);

            // Assert
            await AssertV1PagedResult(response, expectedResourceCount);
        }
        public async Task ResourceDiscoveryV1_GetWithFilterOnOneResourceGroupWithDifferentCasing_ReturnsExpectedAmount()
        {
            // Arrange
            const string resourceDiscoveryGroupName = "one-resource-group-scenario-with-other-casing";
            const int    expectedResourceCount      = 6;
            var          resourceDiscoveryClient    = new ResourceDiscoveryClient(Configuration, Logger);

            // Act
            var response = await resourceDiscoveryClient.GetDiscoveredResourcesV1WithResponseAsync(resourceDiscoveryGroupName);

            // Assert
            await AssertV1PagedResult(response, expectedResourceCount);
        }
        public async Task ResourceDiscoveryV1_GetAllPerResourceTypeWithoutFiltersAndSpecificPageSize_ReturnsExpectedAmount()
        {
            // Arrange
            const string resourceDiscoveryGroupName = "logic-apps-unfiltered";
            const int    expectedTotalAmount        = 1018;
            const int    pageSize = 500;
            var          expectedResourceCount   = pageSize;
            var          resourceDiscoveryClient = new ResourceDiscoveryClient(Configuration, Logger);

            // Act
            var response = await resourceDiscoveryClient.GetDiscoveredResourcesV1WithResponseAsync(resourceDiscoveryGroupName, pageSize : pageSize);

            // Assert
            await AssertV1PagedResult(response, expectedResourceCount, pageSize, expectedTotalAmount);
        }