github.com/juju/juju@v0.0.0-20240430160146-1752b71fcf00/tests/suites/secrets_iaas/cmr.sh (about)

     1  run_secrets_cmr() {
     2  	echo
     3  
     4  	echo "First set up a cross model relation"
     5  	add_model "model-secrets-offer"
     6  	juju --show-log deploy juju-qa-dummy-source
     7  	juju --show-log offer dummy-source:sink
     8  	wait_for "dummy-source" "$(idle_condition "dummy-source")"
     9  
    10  	add_model "model-secrets-consume"
    11  	juju --show-log deploy juju-qa-dummy-sink
    12  	juju --show-log integrate dummy-sink model-secrets-offer.dummy-source
    13  
    14  	wait_for "dummy-sink" "$(idle_condition "dummy-sink")"
    15  	wait_for "dummy-source" '.applications["dummy-sink"] | .relations.source[0]'
    16  
    17  	juju switch "model-secrets-offer"
    18  	juju config dummy-source token=foobar
    19  	juju switch "model-secrets-consume"
    20  	wait_for "active" '."application-endpoints"["dummy-source"]."application-status".current'
    21  
    22  	juju switch "model-secrets-offer"
    23  	wait_for "1" '.offers["dummy-source"]["active-connected-count"]'
    24  
    25  	echo "Create and share a secret on the offer side"
    26  	secret_uri=$(juju exec --unit dummy-source/0 -- secret-add foo=bar)
    27  	relation_id=$(juju --show-log show-unit -m model-secrets-offer dummy-source/0 --format json | jq '."dummy-source/0"."relation-info"[0]."relation-id"')
    28  	juju exec --unit dummy-source/0 -- secret-grant "$secret_uri" -r "$relation_id"
    29  
    30  	echo "Checking: the secret can be read by the consumer"
    31  	juju switch "model-secrets-consume"
    32  	echo "Checking:  secret-get by URI - consume content"
    33  	check_contains "$(juju exec --unit dummy-sink/0 -- secret-get --label mylabel "$secret_uri")" 'foo: bar'
    34  	echo "Checking:  secret-get by URI - consume content"
    35  	check_contains "$(juju exec --unit dummy-sink/0 -- secret-get --label mylabel)" 'foo: bar'
    36  
    37  	echo "Checking: add a new revision and check consumer can see it"
    38  	juju switch "model-secrets-offer"
    39  	juju exec --unit dummy-source/0 -- secret-set "$secret_uri" foo=bar2
    40  	juju switch "model-secrets-consume"
    41  	check_contains "$(juju exec --unit dummy-sink/0 -- secret-get --label mylabel)" 'foo: bar'
    42  	check_contains "$(juju exec --unit dummy-sink/0 -- secret-get --label mylabel --peek)" 'foo: bar2'
    43  	check_contains "$(juju exec --unit dummy-sink/0 -- secret-get --label mylabel)" 'foo: bar'
    44  	check_contains "$(juju exec --unit dummy-sink/0 -- secret-get --label mylabel --refresh)" 'foo: bar2'
    45  	check_contains "$(juju exec --unit dummy-sink/0 -- secret-get --label mylabel)" 'foo: bar2'
    46  
    47  	echo "Checking: suspend relation and check access is lost"
    48  	juju switch "model-secrets-offer"
    49  	juju suspend-relation "$relation_id"
    50  	juju switch "model-secrets-consume"
    51  	check_contains "$(juju exec --unit dummy-sink/0 -- secret-get "$secret_uri" 2>&1)" 'permission denied'
    52  	echo "Checking: resume relation and access is restored"
    53  	juju switch "model-secrets-offer"
    54  	juju resume-relation "$relation_id"
    55  	juju switch "model-secrets-consume"
    56  	check_contains "$(juju exec --unit dummy-sink/0 -- secret-get --label mylabel)" 'foo: bar2'
    57  
    58  	echo "Checking: secret-revoke by relation ID"
    59  	juju switch "model-secrets-offer"
    60  	juju exec --unit dummy-source/0 -- secret-revoke "$secret_uri" --relation "$relation_id"
    61  	juju switch "model-secrets-consume"
    62  	check_contains "$(juju exec --unit dummy-sink/0 -- secret-get "$secret_uri" 2>&1)" 'permission denied'
    63  }
    64  
    65  test_secrets_cmr() {
    66  	if [ "$(skip 'test_secrets_cmr')" ]; then
    67  		echo "==> TEST SKIPPED: test_secrets_cmr"
    68  		return
    69  	fi
    70  
    71  	(
    72  		set_verbosity
    73  
    74  		cd .. || exit
    75  
    76  		run "run_secrets_cmr"
    77  	)
    78  }