@@ -74,4 +74,82 @@ describe('ApiNewToken', function () {
74
74
)
75
75
) ;
76
76
} ) ;
77
+
78
+ it ( 'creates token with optional name' , async function ( ) {
79
+ MockApiClient . clearMockResponses ( ) ;
80
+ const assignMock = MockApiClient . addMockResponse ( {
81
+ method : 'POST' ,
82
+ url : `/api-tokens/` ,
83
+ } ) ;
84
+
85
+ render ( < ApiNewToken /> , {
86
+ context : RouterContextFixture ( ) ,
87
+ } ) ;
88
+ const createButton = screen . getByRole ( 'button' , { name : 'Create Token' } ) ;
89
+
90
+ const selectByValue = ( name , value ) =>
91
+ selectEvent . select ( screen . getByRole ( 'textbox' , { name} ) , value ) ;
92
+
93
+ await selectByValue ( 'Project' , 'Admin' ) ;
94
+ await selectByValue ( 'Release' , 'Admin' ) ;
95
+
96
+ await userEvent . type ( screen . getByLabelText ( 'Name' ) , 'My Token' ) ;
97
+
98
+ await userEvent . click ( createButton ) ;
99
+
100
+ await waitFor ( ( ) =>
101
+ expect ( assignMock ) . toHaveBeenCalledWith (
102
+ '/api-tokens/' ,
103
+ expect . objectContaining ( {
104
+ data : expect . objectContaining ( {
105
+ name : 'My Token' ,
106
+ scopes : expect . arrayContaining ( [
107
+ 'project:read' ,
108
+ 'project:write' ,
109
+ 'project:admin' ,
110
+ 'project:releases' ,
111
+ ] ) ,
112
+ } ) ,
113
+ } )
114
+ )
115
+ ) ;
116
+ } ) ;
117
+
118
+ it ( 'creates token without name' , async function ( ) {
119
+ MockApiClient . clearMockResponses ( ) ;
120
+ const assignMock = MockApiClient . addMockResponse ( {
121
+ method : 'POST' ,
122
+ url : `/api-tokens/` ,
123
+ } ) ;
124
+
125
+ render ( < ApiNewToken /> , {
126
+ context : RouterContextFixture ( ) ,
127
+ } ) ;
128
+ const createButton = screen . getByRole ( 'button' , { name : 'Create Token' } ) ;
129
+
130
+ const selectByValue = ( name , value ) =>
131
+ selectEvent . select ( screen . getByRole ( 'textbox' , { name} ) , value ) ;
132
+
133
+ await selectByValue ( 'Project' , 'Admin' ) ;
134
+ await selectByValue ( 'Release' , 'Admin' ) ;
135
+
136
+ await userEvent . click ( createButton ) ;
137
+
138
+ await waitFor ( ( ) =>
139
+ expect ( assignMock ) . toHaveBeenCalledWith (
140
+ '/api-tokens/' ,
141
+ expect . objectContaining ( {
142
+ data : expect . objectContaining ( {
143
+ name : '' , // expect a blank name
144
+ scopes : expect . arrayContaining ( [
145
+ 'project:read' ,
146
+ 'project:write' ,
147
+ 'project:admin' ,
148
+ 'project:releases' ,
149
+ ] ) ,
150
+ } ) ,
151
+ } )
152
+ )
153
+ ) ;
154
+ } ) ;
77
155
} ) ;
0 commit comments