1+ /*---------------------------------------------------------------------------------------------
2+ * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
3+ * See LICENSE.md in the project root for license terms and full copyright notice.
4+ *--------------------------------------------------------------------------------------------*/
5+
6+ import { ITwin } from "@itwin/itwins-client" ;
7+ import { runCommand } from "@oclif/test" ;
8+ import { expect } from "chai" ;
9+
10+ import { member , membersResponse } from "../../../../src/services/access-control-client/models/members" ;
11+ import { Role } from "../../../../src/services/access-control-client/models/role" ;
12+ import { nativeLoginToCli } from "../../../utils/helpers" ;
13+
14+ const tests = ( ) => describe ( 'user' , ( ) => {
15+ let iTwinId : string ;
16+ const iTwinName : string = `cli-itwin-integration-test-${ new Date ( ) . toISOString ( ) } ` ;
17+
18+ before ( async ( ) => {
19+ await nativeLoginToCli ( ) ;
20+
21+ const iTwin = await runCommand < ITwin > ( `itwin create --class Thing --sub-class Asset --name ${ iTwinName } ` ) ;
22+ expect ( iTwin . result ?. id , "itwin create result" ) . is . not . undefined ;
23+ iTwinId = iTwin . result ! . id ! ;
24+ } ) ;
25+
26+ after ( async ( ) => {
27+ const result = await runCommand ( `itwin delete --itwin-id ${ iTwinId } ` ) ;
28+ expect ( result . stdout ) . to . contain ( 'deleted' ) ;
29+ } ) ;
30+
31+ it ( 'Should add an internal member to an iTwin and remove user member' , async ( ) => {
32+ const newRole = await runCommand < Role > ( `access-control role create -i ${ iTwinId } -n "Test Role 1" -d "Test Role Description"` ) ;
33+ expect ( newRole . result ) . is . not . undefined ;
34+ expect ( newRole . result ! . id ) . is . not . undefined ;
35+
36+ const emailToAdd = '[email protected] ' ; 37+
38+ const invitedUser = await runCommand < membersResponse > ( `access-control member user add --itwin-id ${ iTwinId } --members "[{"email": "${ emailToAdd } ", "roleIds": ["${ newRole . result ! . id } "]}]"` ) ;
39+
40+ expect ( invitedUser . result ) . to . not . be . undefined ;
41+ expect ( invitedUser . result ! . members . length ) . to . be . equal ( 1 ) ;
42+ expect ( invitedUser . result ! . members [ 0 ] . email . toLowerCase ( ) ) . to . be . equal ( emailToAdd . toLowerCase ( ) ) ;
43+ expect ( invitedUser . result ! . members [ 0 ] . roles . length ) . to . be . equal ( 1 ) ;
44+ expect ( invitedUser . result ! . members [ 0 ] . roles [ 0 ] . id ) . to . be . equal ( newRole . result ! . id ) ;
45+
46+ const usersInfo = await runCommand < member [ ] > ( `access-control member user list --itwin-id ${ iTwinId } ` ) ;
47+ expect ( usersInfo . result ) . is . not . undefined ;
48+ expect ( usersInfo . result ! . length ) . to . be . equal ( 2 ) ;
49+ const joinedUser = usersInfo . result ?. filter ( user => user . email . toLowerCase ( ) === emailToAdd . toLowerCase ( ) ) [ 0 ] ;
50+ expect ( joinedUser ) . to . not . be . undefined ;
51+ expect ( joinedUser ?. roles . length ) . to . be . equal ( 1 ) ;
52+ expect ( joinedUser ?. roles [ 0 ] . id ) . to . be . equal ( newRole . result ! . id ) ;
53+
54+ const deletionResult = await runCommand < { result : string } > ( `access-control member user delete --itwin-id ${ iTwinId } --member-id ${ joinedUser ?. id } ` ) ;
55+ expect ( deletionResult . result ) . to . not . be . undefined ;
56+ expect ( deletionResult . result ! . result ) . to . be . equal ( "deleted" ) ;
57+ } ) ;
58+ } ) ;
59+
60+ export default tests ;
0 commit comments