]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-16565 Display expiration date of newly generated token
authorJeremy Davis <jeremy.davis@sonarsource.com>
Tue, 5 Jul 2022 14:56:32 +0000 (16:56 +0200)
committersonartech <sonartech@sonarsource.com>
Wed, 6 Jul 2022 20:03:55 +0000 (20:03 +0000)
server/sonar-web/src/main/js/api/mocks/UserTokensMock.ts
server/sonar-web/src/main/js/apps/account/__tests__/Account-it.tsx
server/sonar-web/src/main/js/apps/users/components/TokensForm.tsx

index b602b25e48d78f4b45f46be8e22d402b3276a9c5..a50e62582cef0b5ee03ff44ec0f4e13726bf9c54 100644 (file)
@@ -57,12 +57,14 @@ export default class UserTokensMock {
     name,
     login,
     type,
-    projectKey
+    projectKey,
+    expirationDate
   }: {
     name: string;
     login?: string;
     type: TokenType;
     projectKey: string;
+    expirationDate?: string;
   }) => {
     const token = {
       name,
@@ -73,7 +75,8 @@ export default class UserTokensMock {
       token: Math.random()
         .toString(RANDOM_RADIX)
         .slice(RANDOM_PREFIX),
-      createdAt: '2022-04-04T04:04:04+0000'
+      createdAt: '2022-04-04T04:04:04+0000',
+      expirationDate
     };
 
     this.tokens.push(token);
index 62eb0091e8bd47c97c27f0991b0a17d5cc595259..3588e97c4d6304863a553f0da21862ca525e02c9 100644 (file)
@@ -20,6 +20,7 @@
 import { screen, waitFor, within } from '@testing-library/react';
 import userEvent from '@testing-library/user-event';
 import { UserEvent } from '@testing-library/user-event/dist/types/setup';
+import { format } from 'date-fns';
 import selectEvent from 'react-select-event';
 import { getMyProjects, getScannableProjects } from '../../../api/components';
 import NotificationsMock from '../../../api/mocks/NotificationsMock';
@@ -265,6 +266,15 @@ describe('security page', () => {
         type: TokenType.User,
         expirationDate: expectedTime
       });
+
+      // ensure the list of tokens is updated
+      const rows = await screen.findAllByRole('row');
+      expect(rows).toHaveLength(4);
+      expect(rows.pop()).toHaveTextContent(
+        `${newTokenName}users.tokens.USER_TOKEN.shortneverApril 4, 2022${
+          expectedTime ? format(expectedTime, 'MMMM D, YYYY') : '–'
+        }users.tokens.revoke`
+      );
     }
   );
 
index e16327a2a43d4a52b6a60e3df2d22e611e6ab57b..c8fb4a6bf2f586391a1cfd59d497f78e87d8fa03 100644 (file)
@@ -151,12 +151,13 @@ export class TokensForm extends React.PureComponent<Props, State> {
 
       if (this.mounted) {
         this.setState(state => {
-          const tokens = [
+          const tokens: UserToken[] = [
             ...state.tokens,
             {
               name: newToken.name,
               createdAt: newToken.createdAt,
               isExpired: false,
+              expirationDate: newToken.expirationDate,
               type: newTokenType,
               ...(newTokenType === TokenType.Project && {
                 project: { key: selectedProject.key, name: selectedProject.name }