Skip to content

Commit

Permalink
refactor(api): move DELETE organization invitations admin route
Browse files Browse the repository at this point in the history
Co-authored-by: Eric Lim <eric.lim@pix.fr>
  • Loading branch information
bpetetot and er-lim committed Jul 3, 2024
1 parent e3240f8 commit 9ae3ba9
Show file tree
Hide file tree
Showing 4 changed files with 42 additions and 33 deletions.
30 changes: 0 additions & 30 deletions api/lib/application/organizations/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@ const Joi = BaseJoi.extend(JoiDate);

import { securityPreHandlers } from '../../../src/shared/application/security-pre-handlers.js';
import { identifiersType } from '../../../src/shared/domain/types/identifiers-type.js';
import { organizationInvitationController } from '../../../src/team/application/organization-invitations/organization-invitation.controller.js';
import { BadRequestError, PayloadTooLargeError, sendJsonApiError } from '../http-errors.js';
import { organizationController } from './organization-controller.js';

Expand Down Expand Up @@ -166,35 +165,6 @@ const register = async function (server) {
],
},
},
{
method: 'DELETE',
path: '/api/admin/organizations/{id}/invitations/{organizationInvitationId}',
config: {
pre: [
{
method: (request, h) =>
securityPreHandlers.hasAtLeastOneAccessOf([
securityPreHandlers.checkAdminMemberHasRoleSuperAdmin,
securityPreHandlers.checkAdminMemberHasRoleSupport,
securityPreHandlers.checkAdminMemberHasRoleMetier,
])(request, h),
assign: 'hasAuthorizationToAccessAdminScope',
},
],
validate: {
params: Joi.object({
id: identifiersType.organizationId,
organizationInvitationId: identifiersType.organizationInvitationId,
}),
},
handler: organizationInvitationController.cancelOrganizationInvitation,
tags: ['api', 'admin', 'invitations', 'cancel'],
notes: [
"- **Cette route est restreinte aux utilisateurs authentifiés ayant les droits d'accès**\n" +
"- Elle permet d'annuler une invitation envoyée mais non acceptée encore.",
],
},
},
{
method: 'POST',
path: '/api/admin/organizations/{id}/invitations',
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
import Joi from 'joi';

import { securityPreHandlers } from '../../../shared/application/security-pre-handlers.js';
import { identifiersType } from '../../../shared/domain/types/identifiers-type.js';
import { organizationInvitationController } from './organization-invitation.controller.js';

export const organizationInvitationAdminRoutes = [
{
method: 'DELETE',
path: '/api/admin/organizations/{id}/invitations/{organizationInvitationId}',
config: {
pre: [
{
method: (request, h) =>
securityPreHandlers.hasAtLeastOneAccessOf([
securityPreHandlers.checkAdminMemberHasRoleSuperAdmin,
securityPreHandlers.checkAdminMemberHasRoleSupport,
securityPreHandlers.checkAdminMemberHasRoleMetier,
])(request, h),
assign: 'hasAuthorizationToAccessAdminScope',
},
],
validate: {
params: Joi.object({
id: identifiersType.organizationId,
organizationInvitationId: identifiersType.organizationInvitationId,
}),
},
handler: organizationInvitationController.cancelOrganizationInvitation,
tags: ['team', 'api', 'admin', 'invitations', 'cancel'],
notes: [
"- **Cette route est restreinte aux utilisateurs authentifiés ayant les droits d'accès**\n" +
"- Elle permet d'annuler une invitation envoyée mais non acceptée encore.",
],
},
},
];
2 changes: 2 additions & 0 deletions api/src/team/application/routes.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import { certificationCenterInvitationAdminRoutes } from './certification-center-invitation/certification-center-invitation.admin.route.js';
import { certificationCenterInvitationRoutes } from './certification-center-invitation/certification-center-invitation.route.js';
import { organizationInvitationAdminRoutes } from './organization-invitations/organization-invitation.admin.route.js';
import { organizationInvitationRoutes } from './organization-invitations/organization-invitation.route.js';
import { prescriberInformationsRoute } from './prescriber-informations.route.js';

Expand All @@ -9,6 +10,7 @@ const register = async function (server) {
...certificationCenterInvitationAdminRoutes,
...prescriberInformationsRoute,
...organizationInvitationRoutes,
...organizationInvitationAdminRoutes,
]);
};

Expand Down
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
import { OrganizationInvitation } from '../../../../src/team/domain/models/OrganizationInvitation.js';
import { OrganizationInvitation } from '../../../../../src/team/domain/models/OrganizationInvitation.js';
import {
createServer,
databaseBuilder,
expect,
generateValidRequestAuthorizationHeader,
insertOrganizationUserWithRoleAdmin,
insertUserWithRoleSuperAdmin,
} from '../../../test-helper.js';
} from '../../../../../tests/test-helper.js';

describe('Acceptance | Route | Organizations', function () {
describe('Acceptance | Team | Route | Admin | organization-invitation', function () {
describe('DELETE /api/admin/organizations/{organizationId}/invitations/{invitationId}', function () {
it('should return 204 HTTP status code', async function () {
// given
Expand Down

0 comments on commit 9ae3ba9

Please sign in to comment.