@@ -1108,6 +1108,154 @@ def _get(username, *args, **kwargs):
1108
1108
assert worker_stats .increment_total_errors .call_count == 1
1109
1109
1110
1110
1111
+ def test_bulk_add_roles_uses_expected_arguments (runner , mocker , cli_state_with_user ):
1112
+ bulk_processor = mocker .patch (f"{ _NAMESPACE } .run_bulk_process" )
1113
+ with runner .isolated_filesystem ():
1114
+ with open ("test_bulk_add_roles.csv" , "w" ) as csv :
1115
+ csv .writelines (
1116
+ ["username,role_name\n " , f"{ TEST_USERNAME } ,{ TEST_ROLE_NAME } \n " ]
1117
+ )
1118
+ command = ["users" , "bulk" , "add-roles" , "test_bulk_add_roles.csv" ]
1119
+ runner .invoke (
1120
+ cli , command , obj = cli_state_with_user ,
1121
+ )
1122
+ assert bulk_processor .call_args [0 ][1 ] == [
1123
+ {"username" : TEST_USERNAME , "role_name" : TEST_ROLE_NAME , "role added" : "False" },
1124
+ ]
1125
+ bulk_processor .assert_called_once ()
1126
+
1127
+
1128
+ def test_bulk_add_roles_ignores_blank_lines (runner , mocker , cli_state ):
1129
+ bulk_processor = mocker .patch (f"{ _NAMESPACE } .run_bulk_process" )
1130
+ with runner .isolated_filesystem ():
1131
+ with open ("test_bulk_add_roles.csv" , "w" ) as csv :
1132
+ csv .writelines (
1133
+ ["username,role_name\n \n \n " , f"{ TEST_USERNAME } ,{ TEST_ROLE_NAME } \n \n \n " ]
1134
+ )
1135
+ runner .invoke (
1136
+ cli ,
1137
+ ["users" , "bulk" , "add-roles" , "test_bulk_add_roles.csv" ],
1138
+ obj = cli_state ,
1139
+ )
1140
+ assert bulk_processor .call_args [0 ][1 ] == [
1141
+ {"username" : TEST_USERNAME , "role_name" : TEST_ROLE_NAME , "role added" : "False" },
1142
+ ]
1143
+ bulk_processor .assert_called_once ()
1144
+
1145
+
1146
+ def test_bulk_add_roles_uses_handler_that_when_encounters_error_increments_total_errors (
1147
+ runner ,
1148
+ mocker ,
1149
+ cli_state ,
1150
+ worker_stats ,
1151
+ get_users_response ,
1152
+ get_available_roles_success ,
1153
+ ):
1154
+ def _get (username , * args , ** kwargs ):
1155
+ if username == "[email protected] " :
1156
+ raise Exception ("TEST" )
1157
+ return get_users_response
1158
+
1159
+ cli_state .sdk .users .get_by_username .side_effect = _get
1160
+ bulk_processor = mocker .patch (f"{ _NAMESPACE } .run_bulk_process" )
1161
+ with runner .isolated_filesystem ():
1162
+ with open ("test_bulk_add_roles.csv" , "w" ) as csv :
1163
+ csv .writelines (
1164
+ ["username,role_name\n " , f"{ TEST_USERNAME } ,{ TEST_ROLE_NAME } \n " ]
1165
+ )
1166
+
1167
+ runner .invoke (
1168
+ cli ,
1169
+ ["users" , "bulk" , "add-roles" , "test_bulk_add_roles.csv" ],
1170
+ obj = cli_state ,
1171
+ )
1172
+ handler = bulk_processor .call_args [0 ][0 ]
1173
+
1174
+ handler (
1175
+ username = "[email protected] " ,
role_name = TEST_ROLE_NAME ,
1176
+ )
1177
+ handler (
username = "[email protected] " ,
role_name = TEST_ROLE_NAME )
1178
+ assert worker_stats .increment_total_errors .call_count == 1
1179
+
1180
+
1181
+ def test_bulk_remove_roles_uses_expected_arguments (runner , mocker , cli_state_with_user ):
1182
+ bulk_processor = mocker .patch (f"{ _NAMESPACE } .run_bulk_process" )
1183
+ with runner .isolated_filesystem ():
1184
+ with open ("test_bulk_remove_roles.csv" , "w" ) as csv :
1185
+ csv .writelines (
1186
+ ["username,role_name\n " , f"{ TEST_USERNAME } ,{ TEST_ROLE_NAME } \n " ]
1187
+ )
1188
+ command = ["users" , "bulk" , "remove-roles" , "test_bulk_remove_roles.csv" ]
1189
+ runner .invoke (
1190
+ cli , command , obj = cli_state_with_user ,
1191
+ )
1192
+ assert bulk_processor .call_args [0 ][1 ] == [
1193
+ {
1194
+ "username" : TEST_USERNAME ,
1195
+ "role_name" : TEST_ROLE_NAME ,
1196
+ "role removed" : "False" ,
1197
+ },
1198
+ ]
1199
+ bulk_processor .assert_called_once ()
1200
+
1201
+
1202
+ def test_bulk_remove_roles_ignores_blank_lines (runner , mocker , cli_state ):
1203
+ bulk_processor = mocker .patch (f"{ _NAMESPACE } .run_bulk_process" )
1204
+ with runner .isolated_filesystem ():
1205
+ with open ("test_bulk_remove_roles.csv" , "w" ) as csv :
1206
+ csv .writelines (
1207
+ ["username,role_name\n \n \n " , f"{ TEST_USERNAME } ,{ TEST_ROLE_NAME } \n \n \n " ]
1208
+ )
1209
+ runner .invoke (
1210
+ cli ,
1211
+ ["users" , "bulk" , "remove-roles" , "test_bulk_remove_roles.csv" ],
1212
+ obj = cli_state ,
1213
+ )
1214
+ assert bulk_processor .call_args [0 ][1 ] == [
1215
+ {
1216
+ "username" : TEST_USERNAME ,
1217
+ "role_name" : TEST_ROLE_NAME ,
1218
+ "role removed" : "False" ,
1219
+ },
1220
+ ]
1221
+ bulk_processor .assert_called_once ()
1222
+
1223
+
1224
+ def test_bulk_remove_roles_uses_handler_that_when_encounters_error_increments_total_errors (
1225
+ runner ,
1226
+ mocker ,
1227
+ cli_state ,
1228
+ worker_stats ,
1229
+ get_users_response ,
1230
+ get_available_roles_success ,
1231
+ ):
1232
+ def _get (username , * args , ** kwargs ):
1233
+ if username == "[email protected] " :
1234
+ raise Exception ("TEST" )
1235
+
1236
+ return get_users_response
1237
+
1238
+ cli_state .sdk .users .get_by_username .side_effect = _get
1239
+ bulk_processor = mocker .patch (f"{ _NAMESPACE } .run_bulk_process" )
1240
+ with runner .isolated_filesystem ():
1241
+ with open ("test_bulk_remove_roles.csv" , "w" ) as csv :
1242
+ csv .writelines (
1243
+ ["username,role_name\n " , f"{ TEST_USERNAME } ,{ TEST_ROLE_NAME } \n " ]
1244
+ )
1245
+
1246
+ runner .invoke (
1247
+ cli ,
1248
+ ["users" , "bulk" , "remove-roles" , "test_bulk_remove_roles.csv" ],
1249
+ obj = cli_state ,
1250
+ )
1251
+ handler = bulk_processor .call_args [0 ][0 ]
1252
+ handler (
1253
+ username = "[email protected] " ,
role_name = TEST_ROLE_NAME ,
1254
+ )
1255
+ handler (
username = "[email protected] " ,
role_name = TEST_ROLE_NAME )
1256
+ assert worker_stats .increment_total_errors .call_count == 1
1257
+
1258
+
1111
1259
def test_orgs_list_calls_orgs_get_all_with_expected_params (runner , cli_state ):
1112
1260
runner .invoke (cli , ["users" , "orgs" , "list" ], obj = cli_state )
1113
1261
assert cli_state .sdk .orgs .get_all .call_count == 1
0 commit comments