public ApiUser( IHttpContextAccessor httpContextAccessor, TenantManagementApi <TenantDto> tenantManagementApi, IMemoryCache memoryCache ) { this.httpContext = httpContextAccessor.HttpContext; this.tenantManagementApi = tenantManagementApi; this.memoryCache = memoryCache; IsAuthenticated = httpContext.User.Identity.IsAuthenticated; if (IsAuthenticated) { var tenantId = GetTenantIdByHostname().Result; //parse claims list var claims = httpContext .User .Claims .Select(x => new { x.Type, x.Value }); UserId = Guid.Parse(claims.First(x => x.Type == "userId").Value); TenantId = tenantId; TenantRoles = claims .Where(x => x.Type == TenantClaimsSchema.TenantRolesData) .Select(x => x.Value.DeserializeToTenantRolesClaimData()); //Extract roles for current tenant Roles = TenantRoles.First(x => x.TenantId == tenantId).Roles.Select(x => x.NormalizedName); } ; }
public async Task Fetching_nonexisting_hostname_should_fail_gracefully() { var resultFetched = await TenantManagementApi.Search(new TenantSearch(hostname : "host-which-does-not-exist")); Assert.True(resultFetched.Success); Assert.False(resultFetched.Data.Any()); }
public async Task Deleting_tenant_should_work() { var(resultCreated, tenantCreated) = await TenantManagementApi.AddTenant(UniqueTestTenant).UnpackSingleOrDefault(); var resultDeleted = await TenantManagementApi.DeleteTenant(tenantCreated.TenantId); Assert.True(resultCreated.Success); Assert.True(resultDeleted.Success); }
public async Task Created_dto_should_match_original_dto() { var tenant = UniqueTestTenant; var(resultCreated, tenantCreated) = await TenantManagementApi.AddTenant(tenant).UnpackSingleOrDefault(); Assert.True(resultCreated.Success); Assert.Equal(tenant.Name, tenantCreated.Name); Assert.Equal(tenant.Hostnames, tenantCreated.Hostnames); }
public async Task Created_dto_should_match_fetched_dto() { var(resultCreated, tenantCreated) = await TenantManagementApi.AddTenant(UniqueTestTenant).UnpackSingleOrDefault(); var(resultFetched, tenantFetched) = await TenantManagementApi.GetTenant(tenantCreated.TenantId).UnpackSingleOrDefault(); Assert.True(resultCreated.Success); Assert.True(resultFetched.Success); Assert.Equal(tenantCreated, tenantFetched); }
public async Task Service_should_find_tenant_by_hostname() { var(resultCreated, tenantCreated) = await TenantManagementApi.AddTenant(UniqueTestTenant).UnpackSingleOrDefault(); var(resultFetched, tenantFetched) = await TenantManagementApi.Search(new TenantSearch(hostname : tenantCreated.Hostnames.First())).UnpackSingleOrDefault(); Assert.True(resultCreated.Success); Assert.True(resultFetched.Success); Assert.Equal(tenantCreated.TenantId, tenantFetched.TenantId); }
public async Task Updated_dto_should_match_original_dto() { var(resultCreated, tenantCreated) = await TenantManagementApi.AddTenant(UniqueTestTenant).UnpackSingleOrDefault(); tenantCreated.Name += " UPDATED"; tenantCreated.Hostnames.Add($"new-hostname-for-tenant-{Guid.NewGuid()}"); var(resultUpdated, tenantUpdated) = await TenantManagementApi.UpdateTenant(tenantCreated).UnpackSingleOrDefault(); Assert.True(resultCreated.Success); Assert.True(resultUpdated.Success); Assert.Equal(tenantCreated, tenantUpdated); }
public async Task Creating_tenant_with_already_assigned_host_should_fail_gracefully() { var tenantDto1 = UniqueTestTenant; var tenantDto2 = UniqueTestTenant; tenantDto2.Hostnames = tenantDto1.Hostnames; var resultCreated1 = await TenantManagementApi.AddTenant(tenantDto1); var resultCreated2 = await TenantManagementApi.AddTenant(tenantDto2); Assert.True(resultCreated1.Success); Assert.False(resultCreated2.Success); }
public async Task Service_should_return_all_created_tenants() { var(_, tenantCreated1) = await TenantManagementApi.AddTenant(UniqueTestTenant).UnpackSingleOrDefault(); var(_, tenantCreated2) = await TenantManagementApi.AddTenant(UniqueTestTenant).UnpackSingleOrDefault(); var tenants = await TenantManagementApi.GetTenants(); var count = tenants .Data .Where(x => x.TenantId == tenantCreated1.TenantId || x.TenantId == tenantCreated2.TenantId) .Count(); Assert.Equal(2, count); }
public async Task Adding_already_assigned_hostname_should_fail_gracefully() { var(createdResult1, tenant1) = await TenantManagementApi.AddTenant(UniqueTestTenant).UnpackSingleOrDefault(); var(createdResult2, tenant2) = await TenantManagementApi.AddTenant(UniqueTestTenant).UnpackSingleOrDefault(); foreach (var host in tenant2.Hostnames) { tenant1.Hostnames.Add(host); } var tenantUpdatedResult = await TenantManagementApi.UpdateTenant(tenant1); Assert.True(createdResult1.Success); Assert.True(createdResult2.Success); Assert.False(tenantUpdatedResult.Success); }
private async Task LoadTenantsAndRoles() { var rolesResult = await RoleManagementApi.GetRoles(); var tenantsResult = await TenantManagementApi.GetTenants(); var roles = rolesResult.Data; var tenants = tenantsResult.Data; if (!roles.Any(x => x.Name == Role1.Name)) { var result = await RoleManagementApi.AddRole(Role1); Role1 = result.Data.Single(); } if (!roles.Any(x => x.Name == Role2.Name)) { var result = await RoleManagementApi.AddRole(Role2); Role2 = result.Data.Single(); } if (!tenants.Any(x => x.Name == Tenant1.Name)) { var result = await TenantManagementApi.AddTenant(Tenant1); Tenant1 = result.Data.Single(); } if (!tenants.Any(x => x.Name == Tenant2.Name)) { var result = await TenantManagementApi.AddTenant(Tenant2); Tenant2 = result.Data.Single(); } }
public async Task Deleting_nonexisting_tenant_should_fail_gracefully() { var resultDeleted = await TenantManagementApi.DeleteTenant(Guid.NewGuid()); Assert.False(resultDeleted.Success); }
public async Task Creating_tenant_with_invalid_parameters_should_fail_gracefully() { var resultCreated = await TenantManagementApi.AddTenant(new TenantDto()); Assert.False(resultCreated.Success); }
public async Task Fetching_missing_ID_should_fail_gracefully() { var resultFetched = await TenantManagementApi.GetTenant(Guid.NewGuid()); Assert.False(resultFetched.Success); }