protected async Task <HttpResponseMessage> CreateAndAssertStatusAsync(RegionMembershipCreate create, HttpStatusCode httpStatusCode) { var response = await GetCreateHttpResponseMessageAsync(create); response.AssertStatusCode(httpStatusCode); return(response); }
public static async Task <HttpResponseMessage> CreateRegionMembershipAsync( this HttpClient client, RegionMembershipCreate create) { var content = new StringContent(JsonConvert.SerializeObject(create), Encoding.UTF8, "application/json"); return(await client.PostAsync("/regionmemberships", content)); }
protected async Task <RegionMembership> CreateAndAssertCreatedAsync(RegionMembershipCreate create) { var response = await CreateAndAssertStatusAsync(create, HttpStatusCode.Created); var json = await response.Content.ReadAsStringAsync(); return(JsonConvert.DeserializeObject <RegionMembership>(json)); }
public async Task <IActionResult> InvokeAsync(ActionContext context, RegionMembershipCreate create) { var region = await _regionCache.GetRegionAsync(create.RegionId); if (region == null) { context.ModelState.AddModelError(nameof(RegionMembershipCreate.RegionId), "Region not found"); return(new BadRequestObjectResult(context.ModelState)); } var canCreate = await _authorizationService.CanCreateMembershipAsync(region, create.RegionRoleId); if (!canCreate) { return(new UnauthorizedResult()); } var membershipExists = await _coreDbContext.RegionMemberships .Where(r => r.RegionId == region.Id) .Where(r => r.UserEmail == create.UserEmail) .AnyAsync(); if (membershipExists) { context.ModelState.AddModelError( $"{nameof(RegionMembershipCreate.RegionId)}+{nameof(RegionMembershipCreate.UserEmail)}", "User already has a membership for this region"); return(new BadRequestObjectResult(context.ModelState)); } var regionRoles = await _coreDbContext.RegionRoles.ToListAsync(); if (!regionRoles.Any(rr => rr.Id == create.RegionRoleId)) { context.ModelState.AddModelError( nameof(RegionMembershipCreate.RegionRoleId), "Region role does not exist"); return(new BadRequestObjectResult(context.ModelState)); } var result = await _coreDbContext.RegionMemberships.AddAsync(new RegionMembershipEntity() { UserEmail = create.UserEmail, RegionId = region.Id, RegionRoleId = create.RegionRoleId }); await _coreDbContext.SaveChangesAsync(); return(new CreatedResult( $"regionmemberships/{result.Entity.Id}", new RegionMembership() { Id = result.Entity.Id, UserEmail = result.Entity.UserEmail, RegionId = create.RegionId, RegionRoleId = create.RegionRoleId, Permissions = new RegionMembershipAuthorization() { CanDelete = _authorizationService.CanDeleteMembershipsAsync( region, create.RegionRoleId, result.Entity.UserEmail).Result } })); }
public Task <IActionResult> Create([FromBody] RegionMembershipCreate create) => _createRegionMembershipCommand.Value.InvokeAsync(ControllerContext, create);
protected async Task <Dictionary <string, IEnumerable <string> > > CreateAndAssertBadRequestAsync(RegionMembershipCreate create) { var response = await CreateAndAssertStatusAsync(create, HttpStatusCode.BadRequest); var json = await response.Content.ReadAsStringAsync(); return(JsonConvert.DeserializeObject <Dictionary <string, IEnumerable <string> > >(json)); }
protected Task <HttpResponseMessage> GetCreateHttpResponseMessageAsync(RegionMembershipCreate create) => Client.CreateRegionMembershipAsync(create);
protected Task CreateAndAssertUnauthorizedAsync(RegionMembershipCreate create) => CreateAndAssertStatusAsync(create, HttpStatusCode.Unauthorized);
public async Task AssertInvalidMembershipAsync(string expectedInvalidProperty, RegionMembershipCreate create) { var badRequestResult = await CreateAndAssertBadRequestAsync(create); Assert.Contains(badRequestResult, kvp => kvp.Key == expectedInvalidProperty); }