Skip to content

Commit f56b685

Browse files
[CST-15074][DSpace#3355] PR review
1 parent 77b027a commit f56b685

13 files changed

Lines changed: 145 additions & 122 deletions

File tree

src/app/core/auth/auth-request.service.ts

Lines changed: 1 addition & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -8,28 +8,21 @@ import {
88
tap,
99
} from 'rxjs/operators';
1010

11-
import {
12-
isNotEmpty,
13-
isNotEmptyOperator,
14-
} from '../../shared/empty.util';
11+
import { isNotEmpty } from '../../shared/empty.util';
1512
import { FollowLinkConfig } from '../../shared/utils/follow-link-config.model';
1613
import { RemoteDataBuildService } from '../cache/builders/remote-data-build.service';
1714
import { RemoteData } from '../data/remote-data';
1815
import {
19-
DeleteRequest,
2016
GetRequest,
2117
PostRequest,
2218
} from '../data/request.models';
2319
import { RequestService } from '../data/request.service';
2420
import { RestRequest } from '../data/rest-request.model';
2521
import { HttpOptions } from '../dspace-rest/dspace-rest.service';
2622
import { HALEndpointService } from '../shared/hal-endpoint.service';
27-
import { NoContent } from '../shared/NoContent.model';
2823
import { getFirstCompletedRemoteData } from '../shared/operators';
29-
import { sendRequest } from '../shared/request.operators';
3024
import { URLCombiner } from '../url-combiner/url-combiner';
3125
import { AuthStatus } from './models/auth-status.model';
32-
import { MachineToken } from './models/machine-token.model';
3326
import { ShortLivedToken } from './models/short-lived-token.model';
3427

3528
/**
@@ -38,7 +31,6 @@ import { ShortLivedToken } from './models/short-lived-token.model';
3831
export abstract class AuthRequestService {
3932
protected linkName = 'authn';
4033
protected shortlivedtokensEndpoint = 'shortlivedtokens';
41-
protected machinetokenEndpoint = 'machinetokens';
4234

4335
constructor(protected halService: HALEndpointService,
4436
protected requestService: RequestService,
@@ -148,31 +140,4 @@ export abstract class AuthRequestService {
148140
);
149141
}
150142

151-
/**
152-
* Send a post request to create a machine token
153-
*/
154-
public postToMachineTokenEndpoint(): Observable<RemoteData<MachineToken>> {
155-
return this.halService.getEndpoint(this.linkName).pipe(
156-
isNotEmptyOperator(),
157-
distinctUntilChanged(),
158-
map((href: string) => new URLCombiner(href, this.machinetokenEndpoint).toString()),
159-
map((endpointURL: string) => new PostRequest(this.requestService.generateRequestId(), endpointURL)),
160-
tap((request: RestRequest) => this.requestService.send(request)),
161-
switchMap((request: RestRequest) => this.rdbService.buildFromRequestUUID<MachineToken>(request.uuid)),
162-
);
163-
}
164-
165-
/**
166-
* Send a delete request to destroy a machine token
167-
*/
168-
public deleteToMachineTokenEndpoint(): Observable<RemoteData<NoContent>> {
169-
return this.halService.getEndpoint(this.linkName).pipe(
170-
isNotEmptyOperator(),
171-
distinctUntilChanged(),
172-
map((href: string) => new URLCombiner(href, this.machinetokenEndpoint).toString()),
173-
map((endpointURL: string) => new DeleteRequest(this.requestService.generateRequestId(), endpointURL)),
174-
sendRequest(this.requestService),
175-
switchMap((request: RestRequest) => this.rdbService.buildFromRequestUUID<MachineToken>(request.uuid)),
176-
);
177-
}
178143
}

src/app/core/auth/auth.service.ts

Lines changed: 0 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,6 @@ import {
5757
NativeWindowRef,
5858
NativeWindowService,
5959
} from '../services/window.service';
60-
import { NoContent } from '../shared/NoContent.model';
6160
import {
6261
getAllSucceededRemoteDataPayload,
6362
getFirstCompletedRemoteData,
@@ -80,7 +79,6 @@ import {
8079
AuthTokenInfo,
8180
TOKENITEM,
8281
} from './models/auth-token-info.model';
83-
import { MachineToken } from './models/machine-token.model';
8482
import {
8583
getAuthenticatedUserId,
8684
getAuthenticationToken,
@@ -692,18 +690,4 @@ export class AuthService {
692690
}
693691
}
694692

695-
/**
696-
* Create a new machine token for the current user
697-
*/
698-
public createMachineToken(): Observable<RemoteData<MachineToken>> {
699-
return this.authRequestService.postToMachineTokenEndpoint();
700-
}
701-
702-
/**
703-
* Delete the machine token for the current user
704-
*/
705-
public deleteMachineToken(): Observable<RemoteData<NoContent>> {
706-
return this.authRequestService.deleteToMachineTokenEndpoint();
707-
}
708-
709693
}

src/app/core/auth/models/machine-token.model.ts

Lines changed: 0 additions & 40 deletions
This file was deleted.

src/app/core/auth/models/machine-token.resource-type.ts

Lines changed: 0 additions & 9 deletions
This file was deleted.

src/app/external-log-in/email-confirmation/confirm-email/confirm-email.component.html

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ <h4 class="mb-3">
1010
formControlName="email"
1111
placeholder="profile.email@example.com"
1212
class="form-control form-control-lg position-relative"
13+
[attr.aria-label]="'external-login.confirmation.email-label' | translate"
1314
/>
1415
<div
1516
*ngIf="

src/app/external-log-in/email-confirmation/provide-email/provide-email.component.html

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ <h4 class="mb-3">
99
id="email"
1010
formControlName="email"
1111
class="form-control form-control-lg position-relative"
12+
[attr.aria-label]="'external-login.confirmation.email' | translate"
1213
/>
1314

1415
<div

src/app/external-log-in/external-log-in/external-log-in.component.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ <h4>{{ 'external-login.confirmation.header' | translate}}</h4>
1818
</ng-template>
1919
</div>
2020
<div class="col-1 align-items-center d-flex justify-content-center">
21-
<h4 class="mt-2">or</h4>
21+
<h4 class="mt-2">{{ 'external-login.component.or' | translate }}</h4>
2222
</div>
2323
<div class="col-4 align-items-center d-flex justify-content-start">
2424
<button class="btn block btn-lg btn-primary" (click)="openLoginModal(loginModal)">

src/app/external-log-in/guards/registration-token.guard.spec.ts

Lines changed: 33 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,11 @@ import { EpersonRegistrationService } from '../../core/data/eperson-registration
1818
import { EPerson } from '../../core/eperson/models/eperson.model';
1919
import { Registration } from '../../core/shared/registration.model';
2020
import { RouterMock } from '../../shared/mocks/router.mock';
21-
import { createSuccessfulRemoteDataObject$ } from '../../shared/remote-data.utils';
21+
import {
22+
createFailedRemoteDataObject$,
23+
createNoContentRemoteDataObject$,
24+
createSuccessfulRemoteDataObject$,
25+
} from '../../shared/remote-data.utils';
2226
import { registrationTokenGuard } from './registration-token-guard';
2327

2428
describe('RegistrationTokenGuard',
@@ -98,4 +102,32 @@ describe('RegistrationTokenGuard',
98102
expect(output).toBeFalse();
99103
}));
100104
});
105+
106+
describe('when invalid token provided', () => {
107+
it('can activate must navigate through 404 when no content received', fakeAsync(() => {
108+
epersonRegistrationService.searchByTokenAndHandleError.and.returnValue(createNoContentRemoteDataObject$());
109+
let activatedRoute = TestBed.inject(ActivatedRoute);
110+
activatedRoute.snapshot.params.token = 'invalid-token';
111+
112+
const result$ = TestBed.runInInjectionContext(() => {
113+
return registrationTokenGuard(activatedRoute.snapshot, {} as RouterStateSnapshot) as Observable<boolean>;
114+
});
115+
116+
result$.subscribe((_) => { });
117+
expect(route.navigate).toHaveBeenCalledWith(['/404']);
118+
}));
119+
it('can activate must navigate through 404 when no failed response received', fakeAsync(() => {
120+
epersonRegistrationService.searchByTokenAndHandleError.and.returnValue(createFailedRemoteDataObject$('invalid token', 404));
121+
let activatedRoute = TestBed.inject(ActivatedRoute);
122+
activatedRoute.snapshot.params.token = 'error-invalid-token';
123+
124+
const result$ = TestBed.runInInjectionContext(() => {
125+
return registrationTokenGuard(activatedRoute.snapshot, {} as RouterStateSnapshot) as Observable<boolean>;
126+
});
127+
128+
result$.subscribe((_) => { });
129+
expect(route.navigate).toHaveBeenCalledWith(['/404']);
130+
}));
131+
});
132+
101133
});

src/app/external-log-in/registration-types/orcid-confirmation/orcid-confirmation.component.html

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,31 +1,31 @@
11
<form class="form-login"
22
[formGroup]="form" novalidate>
33
<label class="font-weight-bold mb-0 text-uppercase">{{ registrationData.registrationType }}</label>
4-
<input [attr.aria-label]="'netId' | translate"
4+
<input [attr.aria-label]="'external-login-page.orcid-confirmation.netid.label' | translate"
55
autocomplete="off"
66
autofocus
77
class="form-control form-control-lg position-relative mb-2"
88
formControlName="netId"
9-
placeholder="xxxx-xxxx-xxxx-xxxx"
9+
[placeholder]="'external-login-page.orcid-confirmation.netid.placeholder' | translate"
1010
type="text"
1111
[attr.data-test]="'netId' | dsBrowserOnly">
12-
<label class="font-weight-bold mb-0">{{"Last name" | translate}}</label>
13-
<input [attr.aria-label]="'Last name' | translate"
12+
<label class="font-weight-bold mb-0">{{"external-login-page.orcid-confirmation.lastname" | translate}}</label>
13+
<input [attr.aria-label]="'external-login-page.orcid-confirmation.lastname.label' | translate"
1414
autocomplete="off"
1515
class="form-control form-control-lg position-relative mb-2"
1616
formControlName="lastname"
1717
type="text"
1818
[attr.data-test]="'lastname' | dsBrowserOnly">
19-
<label class="font-weight-bold mb-0">{{"First name" | translate}}</label>
20-
<input [attr.aria-label]="'First name' | translate"
19+
<label class="font-weight-bold mb-0">{{"external-login-page.orcid-confirmation.firstname" | translate}}</label>
20+
<input [attr.aria-label]="'external-login-page.orcid-confirmation.firstname.label' | translate"
2121
autocomplete="off"
2222
class="form-control form-control-lg position-relative mb-2"
2323
formControlName="firstname"
2424
type="text"
2525
[attr.data-test]="'firstname' | dsBrowserOnly">
2626
<ng-container *ngIf="registrationData?.email">
27-
<label class="font-weight-bold mb-0">{{"Email" | translate}}</label>
28-
<input [attr.aria-label]="'Email' | translate"
27+
<label class="font-weight-bold mb-0">{{"external-login-page.orcid-confirmation.email" | translate}}</label>
28+
<input [attr.aria-label]="'external-login-page.orcid-confirmation.email.label' | translate"
2929
autocomplete="off"
3030
class="form-control form-control-lg position-relative"
3131
formControlName="email"

src/app/external-login-review-account-info-page/review-account-info/review-account-info.component.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ <h2> {{'external-login-validation.review-account-info.header' | translate}}</h2>
2323
<td>{{ registrationData.netId }}</td>
2424
<td>
2525
<span>
26-
{{ notApplicableText }}
26+
{{ 'external-login-validation.review-account-info.table.row.not-applicable' }}
2727
</span>
2828
</td>
2929
<td></td>

0 commit comments

Comments
 (0)