Setting the file. One moment.
Test Resource Resolution · Agents Pay · aws/agent-toolkit-for-aws · Skills Docs
Repo No. 14 · Agents Pay
↖ Back to the coverEnd User Computing Skills
Messaging And Streaming Skills
Migration And Modernization Skills
Networking And Content Delivery Skills
Security And Identity Skills
Web And Mobile Development
132 skills · 818 min
ContentsBack to the top of the page 70
Creating Amazon Aurora Db Cluster With Instances
93
Routing Traffic With Route53 And CloudFront
Resilience Program Design
Creating API Gateway Stage
(opens in a new tab)
scripts/ test_resource_resolution.py
Python · 100 lines · 4 KB
14
import
os
15 from pathlib import Path
16
17 sys.path.insert( 0 , os.path.dirname(os.path.abspath( __file__ )))
18 import agents_pay_admin as m
19
20 d = tempfile.mkdtemp()
21
22
23 def _write_config (name: str , resources: dict ) -> Path:
24 p = Path(d) / name
25 p.write_text(json.dumps({ "resources" : resources, "policy" : {}}))
26 return p
27
28
29 # --- resolve_region() ---------------------------------------------------
30
31 cfg = _write_config( "region-config.json" , { "region" : "us-east-1" })
32
33 _saved_region = os.environ.pop( "AWS_REGION" , None )
34 _saved_default_region = os.environ.pop( "AWS_DEFAULT_REGION" , None )
35 try :
36 assert m.resolve_region( "eu-west-1" , cfg) == "eu-west-1" , "flag should win"
37
38 os.environ[ "AWS_REGION" ] = "ap-southeast-2"
39 assert m.resolve_region( None , cfg) == "ap-southeast-2" , "env should win over config"
40 del os.environ[ "AWS_REGION" ]
41
42 assert m.resolve_region( None , cfg) == "us-east-1" , (
43 "config region should be used, not hardcoded us-west-2"
44 )
45
46 empty_cfg = _write_config( "region-empty.json" , {})
47 assert m.resolve_region( None , empty_cfg) is None , (
48 "should fall through to None, not us-west-2"
49 )
50 finally :
51 if _saved_region is not None :
52 os.environ[ "AWS_REGION" ] = _saved_region
53 if _saved_default_region is not None :
54 os.environ[ "AWS_DEFAULT_REGION" ] = _saved_default_region
55
56 print ( "resolve_region: PASSED" )
57
58 # --- resolve_manager_arn() ------------------------------------------------
59
60 arn_cfg = _write_config(
61 "arn-config.json" ,
62 { "payment_manager_arn" : "arn:aws:bedrock-agentcore:us-east-1:111111111111:payment-manager/config-saved" },
63 )
64
65 _saved_env_arn = os.environ.pop( "PAYMENT_MANAGER_ARN" , None )
66 try :
67 # 1. explicit flag wins over everything
68 assert m.resolve_manager_arn( "arn:flag" , arn_cfg) == "arn:flag" , "flag should win"
69
70 # 2. env wins over config
71 os.environ[ "PAYMENT_MANAGER_ARN" ] = "arn:env"
72 assert m.resolve_manager_arn( None , arn_cfg) == "arn:env" , "env should win over config"
73 del os.environ[ "PAYMENT_MANAGER_ARN" ]
74
75 # 3. config.json wins when no flag/env — this is the regression case: a
76 # manager ARN persisted by a previous create-instrument/init-config run
77 # must be found even when re-running from a directory with no
78 # deployed-state.json in reach.
79 assert m.resolve_manager_arn( None , arn_cfg) == (
80 "arn:aws:bedrock-agentcore:us-east-1:111111111111:payment-manager/config-saved"
81 ), "config.json's payment_manager_arn must not be ignored"
82
83 # 4. nothing set anywhere -> None (discover_deployed() finds nothing in
84 # this tempdir, since there's no deployed-state.json here)
85 empty_arn_cfg = _write_config( "arn-empty.json" , {})
86 cwd = os.getcwd()
87 os.chdir(d)
88 try :
89 assert m.resolve_manager_arn( None , empty_arn_cfg) is None , (
90 "should fall through to None when nothing is configured or discoverable"
91 )
92 finally :
93 os.chdir(cwd)
94 finally :
95 if _saved_env_arn is not None :
96 os.environ[ "PAYMENT_MANAGER_ARN" ] = _saved_env_arn
97
98 print ( "resolve_manager_arn: PASSED" )
99
100 print ( "ALL RESOURCE RESOLUTION TESTS PASSED" )