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 }