Example #1
0
        public async Task GivenTheFollowingApiResourcesExist(Table table)
        {
            foreach (TableRow tableRow in table.Rows)
            {
                String resourceName = SpecflowTableHelper.GetStringRowValue(tableRow, "ResourceName");
                String displayName  = SpecflowTableHelper.GetStringRowValue(tableRow, "DisplayName");
                String secret       = SpecflowTableHelper.GetStringRowValue(tableRow, "Secret");
                String scopes       = SpecflowTableHelper.GetStringRowValue(tableRow, "Scopes");
                String userClaims   = SpecflowTableHelper.GetStringRowValue(tableRow, "UserClaims");

                List <String> splitScopes     = scopes.Split(',').ToList();
                List <String> splitUserClaims = userClaims.Split(',').ToList();

                CreateApiResourceRequest createApiResourceRequest = new CreateApiResourceRequest
                {
                    Description = String.Empty,
                    DisplayName = displayName,
                    Name        = resourceName,
                    Scopes      = new List <String>(),
                    Secret      = secret,
                    UserClaims  = new List <String>()
                };
                splitScopes.ForEach(a => { createApiResourceRequest.Scopes.Add(a.Trim()); });
                splitUserClaims.ForEach(a => { createApiResourceRequest.UserClaims.Add(a.Trim()); });

                CreateApiResourceResponse createApiResourceResponse = await this
                                                                      .TestingContext.DockerHelper.SecurityServiceClient
                                                                      .CreateApiResource(createApiResourceRequest, CancellationToken.None).ConfigureAwait(false);

                createApiResourceResponse.ApiResourceName.ShouldBe(resourceName);
            }
        }
        /// <summary>
        /// Creates the API resource.
        /// </summary>
        /// <param name="createApiResourceRequest">The create API resource request.</param>
        /// <param name="cancellationToken">The cancellation token.</param>
        /// <returns></returns>
        public async Task <CreateApiResourceResponse> CreateApiResource(CreateApiResourceRequest createApiResourceRequest,
                                                                        CancellationToken cancellationToken)
        {
            CreateApiResourceResponse response = null;
            String requestUri = this.BuildRequestUrl("/api/apiresources");

            try
            {
                String requestSerialised = JsonConvert.SerializeObject(createApiResourceRequest);

                StringContent httpContent = new StringContent(requestSerialised, Encoding.UTF8, "application/json");

                // Add the access token to the client headers
                //this.HttpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", accessToken);

                // Make the Http Call here
                HttpResponseMessage httpResponse = await this.HttpClient.PostAsync(requestUri, httpContent, cancellationToken);

                // Process the response
                String content = await this.HandleResponse(httpResponse, cancellationToken);

                // call was successful so now deserialise the body to the response object
                response = JsonConvert.DeserializeObject <CreateApiResourceResponse>(content);
            }
            catch (Exception ex)
            {
                // An exception has occurred, add some additional information to the message
                Exception exception = new Exception($"Error creating api resource {createApiResourceRequest.Name}.", ex);

                throw exception;
            }

            return(response);
        }
Example #3
0
        private async Task <CreateApiResourceResponse> CreateApiResource(CreateApiResourceRequest createApiResourceRequest,
                                                                         CancellationToken cancellationToken)
        {
            CreateApiResourceResponse createApiResourceResponse = await this.TestingContext.DockerHelper.SecurityServiceClient.CreateApiResource(createApiResourceRequest, cancellationToken).ConfigureAwait(false);

            return(createApiResourceResponse);
        }
Example #4
0
        public async Task GivenICreateTheFollowingApiResources(Table table)
        {
            foreach (TableRow tableRow in table.Rows)
            {
                // Get the scopes
                String scopes     = SpecflowTableHelper.GetStringRowValue(tableRow, "Scopes");
                String userClaims = SpecflowTableHelper.GetStringRowValue(tableRow, "UserClaims");
                scopes = scopes.Replace("[id]", this.TestingContext.DockerHelper.TestId.ToString("N"));

                CreateApiResourceRequest createApiResourceRequest = new CreateApiResourceRequest
                {
                    Secret      = SpecflowTableHelper.GetStringRowValue(tableRow, "Secret"),
                    Name        = SpecflowTableHelper.GetStringRowValue(tableRow, "Name").Replace("[id]", this.TestingContext.DockerHelper.TestId.ToString("N")),
                    Scopes      = string.IsNullOrEmpty(scopes) ? null : scopes.Split(",").ToList(),
                    UserClaims  = string.IsNullOrEmpty(userClaims) ? null : userClaims.Split(",").ToList(),
                    Description = SpecflowTableHelper.GetStringRowValue(tableRow, "Description"),
                    DisplayName = SpecflowTableHelper.GetStringRowValue(tableRow, "DisplayName")
                };
                CreateApiResourceResponse createApiResourceResponse =
                    await this.CreateApiResource(createApiResourceRequest, CancellationToken.None).ConfigureAwait(false);

                createApiResourceResponse.ShouldNotBeNull();
                createApiResourceResponse.ApiResourceName.ShouldNotBeNullOrEmpty();

                this.TestingContext.ApiResources.Add(createApiResourceResponse.ApiResourceName);
            }
        }
        public async Task <IActionResult> CreateApiResource([FromBody] CreateApiResourceRequest createApiResourceRequest,
                                                            CancellationToken cancellationToken)
        {
            String apiResourceName = await this.Manager.CreateApiResource(createApiResourceRequest.Name,
                                                                          createApiResourceRequest.DisplayName,
                                                                          createApiResourceRequest.Description,
                                                                          createApiResourceRequest.Secret,
                                                                          createApiResourceRequest.Scopes,
                                                                          createApiResourceRequest.UserClaims,
                                                                          cancellationToken);

            // return the result
            return(this.Created($"{ApiResourceController.ControllerRoute}/{apiResourceName}", new CreateApiResourceResponse
            {
                ApiResourceName = apiResourceName
            }));
        }