/// <summary>
        /// Gets a list of all the device credentials.
        /// </summary>
        /// <param name="request">Specifies criteria to use when querying device credentials.</param>
        /// <param name="pagination">Specifies <see cref="PaginationInfo"/> to use in requesting paged results.</param>
        /// <returns>A list of <see cref="DeviceCredential"/> which conforms to the criteria specified.</returns>
        public Task <IPagedList <DeviceCredential> > GetAllAsync(GetDeviceCredentialsRequest request, PaginationInfo pagination)
        {
            if (request == null)
            {
                throw new ArgumentNullException(nameof(request));
            }

            if (pagination == null)
            {
                throw new ArgumentNullException(nameof(pagination));
            }

            var queryStrings = new Dictionary <string, string>
            {
                { "fields", request.Fields },
                { "include_fields", request.IncludeFields.ToString().ToLower() },
                { "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() }
            };

            return(Connection.GetAsync <IPagedList <DeviceCredential> >(BuildUri("device-credentials", queryStrings), DefaultHeaders, converters));
        }
Пример #2
0
        public async Task Can_request_device_credentials_using_pagination()
        {
            var mockHandler = new Mock <HttpMessageHandler>(MockBehavior.Strict);
            var response    = new PagedList <DeviceCredential> {
                new DeviceCredential {
                    DeviceName = "Test"
                }
            };
            var token  = "AUTH0_TOKEN_DEVICE_CREDENTIALS";
            var domain = GetVariable("AUTH0_MANAGEMENT_API_URL");

            var request = new GetDeviceCredentialsRequest
            {
                ClientId = GetVariable("AUTH0_CLIENT_ID"),
                Type     = "rotating_refresh_token",
                UserId   = "google-oauth2|109627300720782495235",
                Fields   = "name,email",
            };
            var paginationInfo = new PaginationInfo(0, 25, true);

            var expectedParams = new Dictionary <string, string>
            {
                { "fields", request.Fields },
                { "include_fields", request.IncludeFields.ToString().ToLower() },
                { "user_id", request.UserId },
                { "client_id", request.ClientId },
                { "type", request.Type },
                { "page", paginationInfo.PageNo.ToString() },
                { "per_page", paginationInfo.PerPage.ToString() },
                { "include_totals", paginationInfo.IncludeTotals.ToString().ToLower() }
            };

            mockHandler.Protected()
            .Setup <Task <HttpResponseMessage> >(
                "SendAsync",
                ItExpr.Is <HttpRequestMessage>(req => req.RequestUri.ToString().StartsWith($"https://{domain}/api/v2/device-credentials") && ValidateRequestContent(req, expectedParams)),
                ItExpr.IsAny <CancellationToken>()
                )
            .ReturnsAsync(new HttpResponseMessage()
            {
                StatusCode = HttpStatusCode.OK,
                Content    = new StringContent(JsonConvert.SerializeObject(response), Encoding.UTF8, "application/json"),
            });

            var httpClient          = new HttpClient(mockHandler.Object);
            var managementApiClient = new ManagementApiClient(token, new Uri($"https://{domain}/api/v2"), new HttpClientManagementConnection(httpClient));

            var deviceCredentials = await managementApiClient.DeviceCredentials.GetAllAsync(request, paginationInfo);

            response.Should().NotBeNull();
            response[0].DeviceName.Should().Equals("Test");
        }