1
1
import { fireEvent , screen , waitFor , within } from "@testing-library/react"
2
+ import { rest } from "msw"
2
3
import React from "react"
3
4
import * as API from "../../api/api"
4
5
import { Role } from "../../api/typesGenerated"
@@ -7,8 +8,11 @@ import { Language as ResetPasswordDialogLanguage } from "../../components/ResetP
7
8
import { Language as RoleSelectLanguage } from "../../components/RoleSelect/RoleSelect"
8
9
import { Language as UsersTableLanguage } from "../../components/UsersTable/UsersTable"
9
10
import { MockAuditorRole , MockUser , MockUser2 , render } from "../../testHelpers/renderHelpers"
11
+ import { server } from "../../testHelpers/server"
12
+ import { permissionsToCheck } from "../../xServices/auth/authXService"
10
13
import { Language as usersXServiceLanguage } from "../../xServices/users/usersXService"
11
14
import { Language as UsersPageLanguage , UsersPage } from "./UsersPage"
15
+ import { Language as UsersViewLanguage } from "./UsersPageView"
12
16
13
17
const suspendUser = async ( setupActionSpies : ( ) => void ) => {
14
18
// Get the first user in the table
@@ -99,6 +103,32 @@ describe("Users Page", () => {
99
103
expect ( users . length ) . toEqual ( 2 )
100
104
} )
101
105
106
+ it ( "shows 'New user' button to an authorized user" , ( ) => {
107
+ render ( < UsersPage /> )
108
+ const newUserButton = screen . queryByText ( UsersViewLanguage . newUserButton )
109
+ expect ( newUserButton ) . toBeDefined ( )
110
+ } )
111
+
112
+ it ( "does not show 'New user' button to unauthorized user" , ( ) => {
113
+ server . use (
114
+ rest . post ( "/api/v2/users/:userId/authorization" , async ( req , res , ctx ) => {
115
+ const permissions = Object . keys ( permissionsToCheck )
116
+ const response = permissions . reduce ( ( obj , permission ) => {
117
+ return {
118
+ ...obj ,
119
+ [ permission ] : true ,
120
+ createUser : false ,
121
+ }
122
+ } , { } )
123
+
124
+ return res ( ctx . status ( 200 ) , ctx . json ( response ) )
125
+ } ) ,
126
+ )
127
+ render ( < UsersPage /> )
128
+ const newUserButton = screen . queryByText ( UsersViewLanguage . newUserButton )
129
+ expect ( newUserButton ) . toBeNull ( )
130
+ } )
131
+
102
132
describe ( "suspend user" , ( ) => {
103
133
describe ( "when it is success" , ( ) => {
104
134
it ( "shows a success message and refresh the page" , async ( ) => {
0 commit comments