@@ -35,6 +35,7 @@ all() ->
3535 , {group , env }
3636 , {group , application_env }
3737 , {group , ecs }
38+ , {group , eks }
3839 , {group , credential_process }
3940 ].
4041
@@ -48,6 +49,7 @@ groups() ->
4849 , {env , [], all_testcases ()}
4950 , {application_env , [], all_testcases ()}
5051 , {ecs , [], all_testcases ()}
52+ , {eks , [], all_testcases ()}
5153 , {credential_process , [], all_testcases ()}
5254 ].
5355
@@ -118,6 +120,9 @@ assert_test(profile_env) ->
118120assert_test (credential_process ) ->
119121 Provider = provider (file ),
120122 assert_values (? DUMMY_ACCESS_KEY2 , ? DUMMY_SECRET_ACCESS_KEY2 , Provider );
123+ assert_test (eks ) ->
124+ Provider = provider (eks ),
125+ assert_values (? DUMMY_ACCESS_KEY , ? DUMMY_SECRET_ACCESS_KEY , Provider );
121126assert_test (GroupName ) ->
122127 Provider = provider (GroupName ),
123128 assert_values (? DUMMY_ACCESS_KEY , ? DUMMY_SECRET_ACCESS_KEY , Provider ).
@@ -196,6 +201,18 @@ setup_provider(ecs, _Config) ->
196201 #{ mocks => [httpc ]
197202 , env => [{" AWS_CONTAINER_CREDENTIALS_RELATIVE_URI" , OldUri }]
198203 };
204+ setup_provider (eks , Config ) ->
205+ OldFullUri = os :getenv (" AWS_CONTAINER_CREDENTIALS_FULL_URI" ),
206+ OldTokenFile = os :getenv (" AWS_CONTAINER_AUTHORIZATION_TOKEN_FILE" ),
207+ os :putenv (" AWS_CONTAINER_CREDENTIALS_FULL_URI" , " https://eks.amazonaws.com/dummy-uri" ),
208+ os :putenv (" AWS_CONTAINER_AUTHORIZATION_TOKEN_FILE" , ? config (data_dir , Config ) ++ " eks/token" ),
209+ meck :new (httpc , [no_link , passthrough ]),
210+ meck :expect (httpc , request , fun mock_httpc_request_eks /5 ),
211+ #{ mocks => [httpc ]
212+ , env => [ {" AWS_CONTAINER_CREDENTIALS_FULL_URI" , OldFullUri }
213+ , {" AWS_CONTAINER_AUTHORIZATION_TOKEN_FILE" , OldTokenFile }
214+ ]
215+ };
199216setup_provider (config_env , Config ) ->
200217 Old = os :getenv (" AWS_CONFIG_FILE" ),
201218 os :putenv (" AWS_CONFIG_FILE" , ? config (data_dir , Config ) ++ " env/config" ),
@@ -258,6 +275,14 @@ mock_httpc_request_ecs(Method, Request, HTTPOptions, Options, Profile) ->
258275 meck :passthrough ([Method , Request , HTTPOptions , Options , Profile ])
259276 end .
260277
278+ mock_httpc_request_eks (Method , Request , HTTPOptions , Options , Profile ) ->
279+ case Request of
280+ {" https://eks.amazonaws.com/dummy-uri" , [{" authorization" , <<" dummy-authorization-token" >>}]} ->
281+ {ok , response ('eks-credentials' )};
282+ _ ->
283+ meck :passthrough ([Method , Request , HTTPOptions , Options , Profile ])
284+ end .
285+
261286response (BodyTag ) ->
262287 StatusLine = {unused , 200 , unused },
263288 Headers = [],
@@ -277,6 +302,12 @@ body('dummy-role') ->
277302body ('document' ) ->
278303 jsx :encode (#{ 'region' => unused });
279304body ('dummy-uri' ) ->
305+ jsx :encode (#{ 'AccessKeyId' => ? DUMMY_ACCESS_KEY
306+ , 'SecretAccessKey' => ? DUMMY_SECRET_ACCESS_KEY
307+ , 'Expiration' => <<" 2025-09-25T23:43:56Z" >>
308+ , 'Token' => unused
309+ });
310+ body ('eks-credentials' ) ->
280311 jsx :encode (#{ 'AccessKeyId' => ? DUMMY_ACCESS_KEY
281312 , 'SecretAccessKey' => ? DUMMY_SECRET_ACCESS_KEY
282313 , 'Expiration' => <<" 2025-09-25T23:43:56Z" >>
0 commit comments