feat: resolving bugs in checklist testing

This commit is contained in:
=
2025-10-10 00:09:46 +05:30
parent c2490380f0
commit 44b50c93c3
19 changed files with 140 additions and 111 deletions
@@ -216,11 +216,9 @@ export const identityServiceFactory = ({
if (role) {
await membershipRoleDAL.delete({ membershipId: identityOrgMembership.id }, tx);
await membershipRoleDAL.update(
{
membershipId: identityOrgMembership.id
},
await membershipRoleDAL.create(
{
membershipId: identityOrgMembership.id,
role: customRole ? OrgMembershipRole.Custom : role,
customRoleId: customRole?.id || null
},
@@ -54,8 +54,8 @@ export const membershipGroupServiceFactory = ({
const { scopeData, data } = dto;
const factory = scopeFactory[scopeData.scope];
const hasOnePermanentRole = data.roles.some((el) => el.isTemporary);
if (hasOnePermanentRole) {
const hasNoPermanentRole = data.roles.every((el) => el.isTemporary);
if (hasNoPermanentRole) {
throw new BadRequestError({
message: "Group must have atleast one permanent role"
});
@@ -148,8 +148,8 @@ export const membershipGroupServiceFactory = ({
const customInputRoles = data.roles.filter((el) => factory.isCustomRole(el.role));
const hasCustomRole = customInputRoles.length > 0;
const hasOnePermanentRole = data.roles.some((el) => el.isTemporary);
if (hasOnePermanentRole) {
const hasNoPermanentRole = data.roles.every((el) => el.isTemporary);
if (hasNoPermanentRole) {
throw new BadRequestError({
message: "Group must have atleast one permanent role"
});
@@ -172,7 +172,7 @@ export const membershipGroupServiceFactory = ({
const existingMembership = await membershipGroupDAL.findOne({
scope: scopeData.scope,
...scopeDatabaseFields,
actorIdentityId: dto.selector.groupId
actorGroupId: dto.selector.groupId
});
if (!existingMembership)
throw new BadRequestError({
@@ -193,13 +193,16 @@ export const membershipGroupServiceFactory = ({
const customRolesGroupBySlug = groupBy(customRoles, ({ slug }) => slug);
const membershipDoc = await membershipGroupDAL.transaction(async (tx) => {
const doc = await membershipGroupDAL.updateById(
existingMembership.id,
{
isActive: data.isActive
},
tx
);
const doc =
typeof data?.isActive === "undefined"
? existingMembership
: await membershipGroupDAL.updateById(
existingMembership.id,
{
isActive: data.isActive
},
tx
);
const roleDocs: TMembershipRolesInsert[] = [];
data.roles.forEach((membershipRole) => {
@@ -253,14 +256,14 @@ export const membershipGroupServiceFactory = ({
const existingMembership = await membershipGroupDAL.findOne({
scope: scopeData.scope,
...scopeDatabaseFields,
actorIdentityId: dto.selector.groupId
actorGroupId: dto.selector.groupId
});
if (!existingMembership)
throw new BadRequestError({
message: "Group doesn't have membership"
});
if (existingMembership.actorIdentityId === dto.permission.id)
if (existingMembership.actorGroupId === dto.permission.id)
throw new BadRequestError({
message: "You can't delete you own membership"
});
@@ -57,8 +57,8 @@ export const membershipIdentityServiceFactory = ({
const { scopeData, data } = dto;
const factory = scopeFactory[scopeData.scope];
const hasOnePermanentRole = data.roles.some((el) => el.isTemporary);
if (hasOnePermanentRole) {
const hasNoPermanentRole = data.roles.every((el) => el.isTemporary);
if (hasNoPermanentRole) {
throw new BadRequestError({
message: "Identity must have atleast one permanent role"
});
@@ -151,8 +151,8 @@ export const membershipIdentityServiceFactory = ({
const customInputRoles = data.roles.filter((el) => factory.isCustomRole(el.role));
const hasCustomRole = customInputRoles.length > 0;
const hasOnePermanentRole = data.roles.some((el) => el.isTemporary);
if (hasOnePermanentRole) {
const hasNoPermanentRole = data.roles.every((el) => el.isTemporary);
if (hasNoPermanentRole) {
throw new BadRequestError({
message: "Identity must have atleast one permanent role"
});
@@ -196,13 +196,16 @@ export const membershipIdentityServiceFactory = ({
const customRolesGroupBySlug = groupBy(customRoles, ({ slug }) => slug);
const membershipDoc = await membershipIdentityDAL.transaction(async (tx) => {
const doc = await membershipIdentityDAL.updateById(
existingMembership.id,
{
isActive: data.isActive
},
tx
);
const doc =
typeof data.isActive === "undefined"
? existingMembership
: await membershipIdentityDAL.updateById(
existingMembership.id,
{
isActive: data.isActive
},
tx
);
const roleDocs: TMembershipRolesInsert[] = [];
data.roles.forEach((membershipRole) => {
@@ -1,4 +1,10 @@
import { AccessScope, ProjectMembershipRole, TemporaryPermissionMode, TMembershipRolesInsert } from "@app/db/schemas";
import {
AccessScope,
OrgMembershipStatus,
ProjectMembershipRole,
TemporaryPermissionMode,
TMembershipRolesInsert
} from "@app/db/schemas";
import { TUserGroupMembershipDALFactory } from "@app/ee/services/group/user-group-membership-dal";
import { TLicenseServiceFactory } from "@app/ee/services/license/license-service";
import { TPermissionServiceFactory } from "@app/ee/services/permission/permission-service-types";
@@ -147,8 +153,8 @@ export const membershipUserServiceFactory = ({
const { scopeData, data } = dto;
const factory = scopeFactory[scopeData.scope];
const hasOnePermanentRole = data.roles.some((el) => el.isTemporary);
if (hasOnePermanentRole) {
const hasNoPermanentRole = data.roles.every((el) => el.isTemporary);
if (hasNoPermanentRole) {
throw new BadRequestError({
message: "User must have atleast one permanent role"
});
@@ -184,7 +190,9 @@ export const membershipUserServiceFactory = ({
const newMemberships = newMembershipUsers.map((user) => ({
scope: scopeData.scope,
...scopeDatabaseFields,
actorUserId: user.id
actorUserId: user.id,
status: scopeData.scope === AccessScope.Organization ? OrgMembershipStatus.Invited : undefined,
inviteEmail: scopeData.scope === AccessScope.Organization ? user.email : undefined
}));
const customInputRoles = data.roles.filter((el) => factory.isCustomRole(el.role));
@@ -270,8 +278,8 @@ export const membershipUserServiceFactory = ({
});
}
const hasOnePermanentRole = data.roles.some((el) => el.isTemporary);
if (hasOnePermanentRole) {
const hasNoPermanentRole = data.roles.every((el) => el.isTemporary);
if (hasNoPermanentRole) {
throw new BadRequestError({
message: "User must have atleast one permanent role"
});
@@ -315,13 +323,16 @@ export const membershipUserServiceFactory = ({
const customRolesGroupBySlug = groupBy(customRoles, ({ slug }) => slug);
const membershipDoc = await membershipUserDAL.transaction(async (tx) => {
const doc = await membershipUserDAL.updateById(
existingMembership.id,
{
isActive: data.isActive
},
tx
);
const doc =
typeof data?.isActive === "undefined"
? existingMembership
: await membershipUserDAL.updateById(
existingMembership.id,
{
isActive: data.isActive
},
tx
);
const roleDocs: TMembershipRolesInsert[] = [];
data.roles.forEach((membershipRole) => {
@@ -105,10 +105,12 @@ export const newOrgMembershipUserFactory = ({
});
if (el.email) {
signUpTokens.push({
email: el.email,
link: `${appCfg.SITE_URL}/signupinvite?token=${token}&to=${el.email}&organization_id=${dto.permission.orgId}`
});
if (!appCfg.isSmtpConfigured) {
signUpTokens.push({
email: el.email,
link: `${appCfg.SITE_URL}/signupinvite?token=${token}&to=${el.email}&organization_id=${dto.permission.orgId}`
});
}
await smtpService.sendMail({
template: SmtpTemplates.OrgInvite,
+11 -7
View File
@@ -779,16 +779,20 @@ export const orgServiceFactory = ({
userRoleId = customRole.id;
}
const membership = await orgDAL.transaction(async (tx) => {
const [updatedOrgMembership] = await orgDAL.updateMembership(
{ id: membershipId, scopeOrgId: orgId },
{ isActive },
tx
);
// this is because if isActive is undefined then this would fail due to knexjs error
const [updatedOrgMembership] =
typeof isActive === "undefined"
? [foundMembership]
: await orgDAL.updateMembership(
{ id: membershipId, scopeOrgId: orgId, scope: AccessScope.Organization },
{ isActive },
tx
);
if (userRole) {
await membershipRoleDAL.delete({ membershipId: updatedOrgMembership.id }, tx);
await membershipRoleDAL.delete({ membershipId }, tx);
await membershipRoleDAL.create(
{
membershipId: updatedOrgMembership.id,
membershipId,
role: userRole,
customRoleId: userRoleId
},