diff --git a/VideoWeb/VideoWeb.UnitTests/Controllers/SelfTestController/CheckUserCompletedATestTodayTests.cs b/VideoWeb/VideoWeb.UnitTests/Controllers/SelfTestController/CheckUserCompletedATestTodayTests.cs index 517700b8d0..f343064b96 100644 --- a/VideoWeb/VideoWeb.UnitTests/Controllers/SelfTestController/CheckUserCompletedATestTodayTests.cs +++ b/VideoWeb/VideoWeb.UnitTests/Controllers/SelfTestController/CheckUserCompletedATestTodayTests.cs @@ -46,18 +46,18 @@ public void Setup() } [Test] - public async Task should_return_ok_when_user_has_completed_a_test_call_today() + public async Task should_return_ok_true_when_user_has_completed_a_test_call_today() { await _testCallCache.AddTestCompletedForTodayAsync(_username); var result = await _controller.CheckUserCompletedATestTodayAsync(); - result.Should().BeOfType(); + result.Should().BeOfType().Which.Value.Should().Be(true); } [Test] - public async Task should_return_not_found_when_user_has_not_completed_a_test_call_today() + public async Task should_return_ok_false_when_user_has_not_completed_a_test_call_today() { var result = await _controller.CheckUserCompletedATestTodayAsync(); - result.Should().BeOfType(); + result.Should().BeOfType().Which.Value.Should().Be(false); } } diff --git a/VideoWeb/VideoWeb/ClientApp/src/app/services/api/video-web.service.ts b/VideoWeb/VideoWeb/ClientApp/src/app/services/api/video-web.service.ts index 64e4e4807f..c7e03090a9 100644 --- a/VideoWeb/VideoWeb/ClientApp/src/app/services/api/video-web.service.ts +++ b/VideoWeb/VideoWeb/ClientApp/src/app/services/api/video-web.service.ts @@ -28,7 +28,6 @@ import { import { ConferenceLite } from '../models/conference-lite'; import { SessionStorage } from '../session-storage'; import { IVideoWebApiService } from './video-web-service.interface'; -import { catchError, map } from 'rxjs/operators'; import { Store } from '@ngrx/store'; import { ConferenceState } from 'src/app/waiting-space/store/reducers/conference.reducer'; @@ -95,10 +94,7 @@ export class VideoWebService implements IVideoWebApiService { } checkUserHasCompletedSelfTest(): Observable { - return this.apiClient.checkUserCompletedATestToday().pipe( - map(() => true), - catchError(() => [false]) - ); + return this.apiClient.checkUserCompletedATestToday(); } getSelfTestToken(participantId: string): Promise { diff --git a/VideoWeb/VideoWeb/ClientApp/src/app/services/clients/api-client.ts b/VideoWeb/VideoWeb/ClientApp/src/app/services/clients/api-client.ts index 37af27160c..cd3337db3d 100644 --- a/VideoWeb/VideoWeb/ClientApp/src/app/services/clients/api-client.ts +++ b/VideoWeb/VideoWeb/ClientApp/src/app/services/clients/api-client.ts @@ -6276,14 +6276,16 @@ export class ApiClient extends ApiClientBase { * Check if a user has completed a test call at least once today * @return OK */ - checkUserCompletedATestToday(): Observable { + checkUserCompletedATestToday(): Observable { let url_ = this.baseUrl + '/selftest/today'; url_ = url_.replace(/[?&]$/, ''); let options_: any = { observe: 'response', responseType: 'blob', - headers: new HttpHeaders({}) + headers: new HttpHeaders({ + Accept: 'application/json' + }) }; return _observableFrom(this.transformOptions(options_)) @@ -6303,14 +6305,14 @@ export class ApiClient extends ApiClientBase { try { return this.processCheckUserCompletedATestToday(response_ as any); } catch (e) { - return _observableThrow(e) as any as Observable; + return _observableThrow(e) as any as Observable; } - } else return _observableThrow(response_) as any as Observable; + } else return _observableThrow(response_) as any as Observable; }) ); } - protected processCheckUserCompletedATestToday(response: HttpResponseBase): Observable { + protected processCheckUserCompletedATestToday(response: HttpResponseBase): Observable { const status = response.status; const responseBlob = response instanceof HttpResponse @@ -6338,16 +6340,11 @@ export class ApiClient extends ApiClientBase { } else if (status === 200) { return blobToText(responseBlob).pipe( _observableMergeMap(_responseText => { - return _observableOf(null as any); - }) - ); - } else if (status === 404) { - return blobToText(responseBlob).pipe( - _observableMergeMap(_responseText => { - let result404: any = null; - let resultData404 = _responseText === '' ? null : JSON.parse(_responseText, this.jsonParseReviver); - result404 = ProblemDetails.fromJS(resultData404); - return throwException('Not Found', status, _responseText, _headers, result404); + let result200: any = null; + let resultData200 = _responseText === '' ? null : JSON.parse(_responseText, this.jsonParseReviver); + result200 = resultData200 !== undefined ? resultData200 : null; + + return _observableOf(result200); }) ); } else if (status === 401) { @@ -6363,7 +6360,7 @@ export class ApiClient extends ApiClientBase { }) ); } - return _observableOf(null as any); + return _observableOf(null as any); } /** diff --git a/VideoWeb/VideoWeb/Controllers/SelfTestController.cs b/VideoWeb/VideoWeb/Controllers/SelfTestController.cs index fae63d75f3..3328a1acf2 100644 --- a/VideoWeb/VideoWeb/Controllers/SelfTestController.cs +++ b/VideoWeb/VideoWeb/Controllers/SelfTestController.cs @@ -52,13 +52,10 @@ public async Task> GetPexipConfig() /// OK if a test has been completed at least once, else not found [HttpGet("today")] [SwaggerOperation(OperationId = "CheckUserCompletedATestToday")] - [ProducesResponseType((int)HttpStatusCode.OK)] - [ProducesResponseType((int)HttpStatusCode.NotFound)] - public async Task CheckUserCompletedATestTodayAsync() - { - var hasUserCompletedATestToday = await testCallCache.HasUserCompletedATestToday(User.Identity.Name); - return hasUserCompletedATestToday ? Ok() : NotFound(); - } + [ProducesResponseType(typeof(bool), (int)HttpStatusCode.OK)] + public async Task CheckUserCompletedATestTodayAsync() + => Ok(await testCallCache.HasUserCompletedATestToday(User.Identity?.Name)); + [ServiceFilter(typeof(CheckParticipantCanAccessConferenceAttribute))] [HttpGet]