@@ -92,4 +92,88 @@ describe('Certification | Session | Acceptance | Controller | session-live-alert
92
92
} ) ;
93
93
} ) ;
94
94
} ) ;
95
+
96
+ describe ( 'PATCH /sessions/{id}/candidates/{candidateId}/validate-live-alert' , function ( ) {
97
+ describe ( 'when user has supervisor authorization' , function ( ) {
98
+ it ( 'should return 204 when the alert is ongoing' , async function ( ) {
99
+ // given
100
+ const certificationCenter = databaseBuilder . factory . buildCertificationCenter ( ) ;
101
+ const session = databaseBuilder . factory . buildSession ( { certificationCenterId : certificationCenter . id } ) ;
102
+ const certificationCourse = databaseBuilder . factory . buildCertificationCourse ( {
103
+ sessionId : session . id ,
104
+ } ) ;
105
+ const supervisorUserId = databaseBuilder . factory . buildUser ( ) . id ;
106
+ databaseBuilder . factory . buildSupervisorAccess ( { userId : supervisorUserId , sessionId : session . id } ) ;
107
+
108
+ const assessment = databaseBuilder . factory . buildAssessment ( {
109
+ certificationCourseId : certificationCourse . id ,
110
+ userId : certificationCourse . userId ,
111
+ } ) ;
112
+
113
+ databaseBuilder . factory . buildCertificationChallengeLiveAlert ( {
114
+ assessmentId : assessment . id ,
115
+ status : CertificationChallengeLiveAlertStatus . DISMISSED ,
116
+ } ) ;
117
+
118
+ const certificationChallengeLiveAlert = databaseBuilder . factory . buildCertificationChallengeLiveAlert ( {
119
+ assessmentId : assessment . id ,
120
+ status : CertificationChallengeLiveAlertStatus . ONGOING ,
121
+ } ) ;
122
+
123
+ await databaseBuilder . commit ( ) ;
124
+
125
+ const headers = {
126
+ authorization : generateValidRequestAuthorizationHeader ( supervisorUserId , 'pix-certif' ) ,
127
+ } ;
128
+ const options = {
129
+ headers,
130
+ method : 'PATCH' ,
131
+ url : `/api/sessions/${ certificationCourse . sessionId } /candidates/${ certificationCourse . userId } /validate-live-alert` ,
132
+ } ;
133
+
134
+ // when
135
+ const response = await server . inject ( options ) ;
136
+
137
+ const liveAlert = await knex ( 'certification-challenge-live-alerts' )
138
+ . where ( { id : certificationChallengeLiveAlert . id } )
139
+ . first ( ) ;
140
+
141
+ // then
142
+ expect ( response . statusCode ) . to . equal ( 204 ) ;
143
+ expect ( liveAlert . status ) . to . equal ( CertificationChallengeLiveAlertStatus . VALIDATED ) ;
144
+ } ) ;
145
+ } ) ;
146
+
147
+ describe ( 'when user does not have supervisor authorization' , function ( ) {
148
+ it ( 'should return 401 when the alert is ongoing' , async function ( ) {
149
+ // given
150
+ const certificationCenter = databaseBuilder . factory . buildCertificationCenter ( ) ;
151
+ const session = databaseBuilder . factory . buildSession ( { certificationCenterId : certificationCenter . id } ) ;
152
+ const certificationCourse = databaseBuilder . factory . buildCertificationCourse ( {
153
+ sessionId : session . id ,
154
+ } ) ;
155
+ const supervisorUserId = databaseBuilder . factory . buildUser ( ) . id ;
156
+ databaseBuilder . factory . buildSupervisorAccess ( { userId : supervisorUserId , sessionId : session . id } ) ;
157
+
158
+ const userNotLinkedToTheSessionId = databaseBuilder . factory . buildUser ( ) . id ;
159
+
160
+ await databaseBuilder . commit ( ) ;
161
+
162
+ const headers = {
163
+ authorization : generateValidRequestAuthorizationHeader ( userNotLinkedToTheSessionId , 'pix-certif' ) ,
164
+ } ;
165
+ const options = {
166
+ headers,
167
+ method : 'PATCH' ,
168
+ url : `/api/sessions/${ certificationCourse . sessionId } /candidates/${ certificationCourse . userId } /validate-live-alert` ,
169
+ } ;
170
+
171
+ // when
172
+ const response = await server . inject ( options ) ;
173
+
174
+ // then
175
+ expect ( response . statusCode ) . to . equal ( 401 ) ;
176
+ } ) ;
177
+ } ) ;
178
+ } ) ;
95
179
} ) ;
0 commit comments