@@ -376,7 +376,8 @@ def test_on_get_password(harness):
376
376
mock_event .reset_mock ()
377
377
del mock_event .params ["username" ]
378
378
harness .charm ._on_get_password (mock_event )
379
- mock_event .set_results .assert_called_once_with ({"password" : "test-password" })
379
+ mock_event .fail .assert_called_once ()
380
+ mock_event .set_results .assert_not_called ()
380
381
381
382
# Also test providing the username option.
382
383
mock_event .reset_mock ()
@@ -393,14 +394,16 @@ def test_on_set_password(harness):
393
394
patch ("charm.PostgresqlOperatorCharm.postgresql" ) as _postgresql ,
394
395
patch ("charm.Patroni.are_all_members_ready" ) as _are_all_members_ready ,
395
396
patch ("charm.PostgresqlOperatorCharm._on_leader_elected" ),
397
+ patch ("charm.new_password" , return_value = "newpass" ),
396
398
):
397
399
# Create a mock event.
398
400
mock_event = MagicMock (params = {})
399
401
400
402
# Set some values for the other mocks.
401
- _are_all_members_ready .side_effect = [False , True , True , True , True ]
402
- _postgresql .update_user_password = PropertyMock (
403
- side_effect = [PostgreSQLUpdateUserPasswordError , None , None , None ]
403
+ _are_all_members_ready .return_value = False
404
+ _postgresql .update_user_password = PropertyMock ()
405
+ _postgresql .update_user_password .return_value .side_effect = (
406
+ PostgreSQLUpdateUserPasswordError
404
407
)
405
408
406
409
# Test trying to set a password through a non leader unit.
@@ -424,20 +427,25 @@ def test_on_set_password(harness):
424
427
_set_secret .assert_not_called ()
425
428
426
429
# Test for an error updating when updating the user password in the database.
430
+ _are_all_members_ready .return_value = True
427
431
mock_event .reset_mock ()
428
432
harness .charm ._on_set_password (mock_event )
429
433
mock_event .fail .assert_called_once ()
430
434
_set_secret .assert_not_called ()
431
435
432
436
# Test without providing the username option.
437
+ _postgresql .update_user_password .return_value .side_effect = None
438
+ mock_event .reset_mock ()
433
439
harness .charm ._on_set_password (mock_event )
434
- assert _set_secret .call_args_list [0 ][0 ][1 ] == "operator-password"
440
+ mock_event .fail .assert_called_once ()
441
+ _set_secret .assert_not_called ()
435
442
436
443
# Also test providing the username option.
444
+ mock_event .reset_mock ()
437
445
_set_secret .reset_mock ()
438
446
mock_event .params ["username" ] = "replication"
439
447
harness .charm ._on_set_password (mock_event )
440
- assert _set_secret .call_args_list [ 0 ][ 0 ][ 1 ] == "replication-password"
448
+ _set_secret .assert_called_once_with ( "app" , "replication-password" , "newpass" )
441
449
442
450
# And test providing both the username and password options.
443
451
_set_secret .reset_mock ()
@@ -1209,7 +1217,7 @@ def test_on_get_password_secrets(harness):
1209
1217
mock_event .reset_mock ()
1210
1218
del mock_event .params ["username" ]
1211
1219
harness .charm ._on_get_password (mock_event )
1212
- mock_event .set_results .assert_called_once_with ({ "password" : "test-password" } )
1220
+ mock_event .fail .assert_called_once_with ("The action requires a username" )
1213
1221
1214
1222
# Also test providing the username option.
1215
1223
mock_event .reset_mock ()
0 commit comments