@@ -8,14 +8,20 @@ import (
88 "github.com/aws/aws-sdk-go-v2/aws"
99 "github.com/aws/aws-sdk-go-v2/service/ecr"
1010 awstypes "github.com/aws/aws-sdk-go-v2/service/ecr/types"
11+ "github.com/stretchr/testify/require"
1112
1213 "github.com/aquasecurity/trivy/pkg/fanal/types"
1314)
1415
16+ type testECRClient interface {
17+ Options () ecr.Options
18+ }
19+
1520func TestCheckOptions (t * testing.T ) {
1621 var tests = map [string ]struct {
17- domain string
18- wantErr error
22+ domain string
23+ expectedRegion string
24+ wantErr error
1925 }{
2026 "InvalidURL" : {
2127 domain : "alpine:3.9" ,
@@ -30,19 +36,71 @@ func TestCheckOptions(t *testing.T) {
3036 wantErr : types .InvalidURLPattern ,
3137 },
3238 "NoOption" : {
33- domain : "xxx.ecr.ap-northeast-1.amazonaws.com" ,
39+ domain : "xxx.dkr.ecr.ap-northeast-1.amazonaws.com" ,
40+ expectedRegion : "ap-northeast-1" ,
41+ },
42+ "region-1" : {
43+ domain : "xxx.dkr.ecr.region-1.amazonaws.com" ,
44+ expectedRegion : "region-1" ,
45+ },
46+ "region-2" : {
47+ domain : "xxx.dkr.ecr.region-2.amazonaws.com" ,
48+ expectedRegion : "region-2" ,
49+ },
50+ "fips-region-1" : {
51+ domain : "xxx.dkr.ecr-fips.fips-region.amazonaws.com" ,
52+ expectedRegion : "fips-region" ,
53+ },
54+ "cn-region-1" : {
55+ domain : "xxx.dkr.ecr.region-1.amazonaws.com.cn" ,
56+ expectedRegion : "region-1" ,
57+ },
58+ "cn-region-2" : {
59+ domain : "xxx.dkr.ecr.region-2.amazonaws.com.cn" ,
60+ expectedRegion : "region-2" ,
61+ },
62+ "sc2s-region-1" : {
63+ domain : "xxx.dkr.ecr.sc2s-region.sc2s.sgov.gov" ,
64+ expectedRegion : "sc2s-region" ,
65+ },
66+ "c2s-region-1" : {
67+ domain : "xxx.dkr.ecr.c2s-region.c2s.ic.gov" ,
68+ expectedRegion : "c2s-region" ,
69+ },
70+ "invalid-ecr" : {
71+ domain : "xxx.dkrecr.region-1.amazonaws.com" ,
72+ wantErr : types .InvalidURLPattern ,
73+ },
74+ "invalid-fips" : {
75+ domain : "xxx.dkr.ecrfips.fips-region.amazonaws.com" ,
76+ wantErr : types .InvalidURLPattern ,
77+ },
78+ "invalid-cn" : {
79+ domain : "xxx.dkr.ecr.region-2.amazonaws.cn" ,
80+ wantErr : types .InvalidURLPattern ,
81+ },
82+ "invalid-sc2s" : {
83+ domain : "xxx.dkr.ecr.sc2s-region.sc2s.sgov" ,
84+ wantErr : types .InvalidURLPattern ,
85+ },
86+ "invalid-cs2" : {
87+ domain : "xxx.dkr.ecr.c2s-region.c2s.ic" ,
88+ wantErr : types .InvalidURLPattern ,
3489 },
3590 }
3691
3792 for testname , v := range tests {
3893 a := & ECR {}
39- err := a .CheckOptions (v .domain , types.RegistryOptions {})
94+ ecrClient , err := a .CheckOptions (v .domain , types.RegistryOptions {})
4095 if err != nil {
4196 if ! errors .Is (err , v .wantErr ) {
4297 t .Errorf ("[%s]\n expected error based on %v\n actual : %v" , testname , v .wantErr , err )
4398 }
4499 continue
45100 }
101+
102+ client := (ecrClient .(* ECRClient )).Client .(testECRClient )
103+ require .Equal (t , v .expectedRegion , client .Options ().Region )
46104 }
47105}
48106
@@ -90,7 +148,7 @@ func TestECRGetCredential(t *testing.T) {
90148 }
91149
92150 for i , c := range cases {
93- e := ECR {
151+ e := ECRClient {
94152 Client : mockedECR {Resp : c .Resp },
95153 }
96154 username , password , err := e .GetCredential (context .Background ())
0 commit comments