84 lines
3.0 KiB
C#
84 lines
3.0 KiB
C#
using System.Net;
|
|
using System.Text.Json;
|
|
using Tiku.Application.Security;
|
|
using Tiku.Domain.Common;
|
|
using Tiku.Domain.Identity;
|
|
using Tiku.Domain.Operations;
|
|
using Tiku.Domain.Tenancy;
|
|
|
|
namespace Tiku.IntegrationTests.Api;
|
|
|
|
public sealed class DatabasePermissionServiceAuthorizationTests
|
|
{
|
|
[Fact]
|
|
public async Task BusinessMembershipRoleDoesNotOverrideCommissionAndCrmPermissions()
|
|
{
|
|
await using var factory = new ApiTestFactory();
|
|
var tenantId = Guid.NewGuid();
|
|
var userId = Guid.NewGuid();
|
|
var roleId = Guid.NewGuid();
|
|
var phone = "13720000000";
|
|
await factory.SeedAsync(
|
|
new Tenant
|
|
{
|
|
Id = tenantId,
|
|
Slug = tenantId.ToString("N"),
|
|
Name = "Permission Tenant",
|
|
Status = TenantStatus.Active,
|
|
Metadata = JsonDefaults.Object()
|
|
},
|
|
new User { Id = userId, Phone = phone, Name = "Permission Operator" }.WithTestPassword(),
|
|
new TenantMembership
|
|
{
|
|
TenantId = tenantId,
|
|
UserId = userId,
|
|
Role = TenantRole.Student,
|
|
Status = MembershipStatus.Active
|
|
},
|
|
new BackendPermission
|
|
{
|
|
Code = BackendPermissions.TenantCommissionManage,
|
|
Name = "Commission",
|
|
Area = BackendPermissionArea.Tenant,
|
|
PermissionModuleCode = "tenant_commission"
|
|
},
|
|
new BackendPermission
|
|
{
|
|
Code = BackendPermissions.TenantCrmManage,
|
|
Name = "CRM",
|
|
Area = BackendPermissionArea.Tenant,
|
|
PermissionModuleCode = "tenant_crm"
|
|
},
|
|
new TenantBackendRole
|
|
{
|
|
Id = roleId,
|
|
TenantId = tenantId,
|
|
Code = "growth_operator",
|
|
Name = "Growth Operator",
|
|
Status = BackendRoleStatus.Active,
|
|
DataScope = JsonSerializer.SerializeToElement(new { mode = "all" })
|
|
},
|
|
new TenantBackendRolePermission
|
|
{
|
|
TenantId = tenantId,
|
|
RoleId = roleId,
|
|
PermissionCode = BackendPermissions.TenantCommissionManage
|
|
},
|
|
new TenantBackendRolePermission
|
|
{
|
|
TenantId = tenantId,
|
|
RoleId = roleId,
|
|
PermissionCode = BackendPermissions.TenantCrmManage
|
|
},
|
|
new TenantBackendUserRole { TenantId = tenantId, UserId = userId, RoleId = roleId });
|
|
|
|
using var client = factory.CreateClient();
|
|
client.UseAccessToken(await client.LoginAsTenantAsync(tenantId, phone));
|
|
|
|
using var commission = await client.GetAsync("/api/tenant/commission/settings");
|
|
using var referral = await client.GetAsync("/api/tenant/referral/stats");
|
|
|
|
Assert.Equal(HttpStatusCode.OK, commission.StatusCode);
|
|
Assert.Equal(HttpStatusCode.OK, referral.StatusCode);
|
|
}
|
|
} |