@@ -589,6 +589,80 @@ static void test_http_provider_eks_with_token_file()
589
589
cleanup_test (provider , config );
590
590
}
591
591
592
+ static void test_http_provider_eks_ipv6 ()
593
+ {
594
+ struct flb_aws_provider * provider ;
595
+ struct flb_aws_credentials * creds ;
596
+ struct flb_config * config ;
597
+ int ret ;
598
+
599
+ /* tests validation of valid ipv6 local loopback IP */
600
+ setenv ("AWS_CONTAINER_CREDENTIALS_FULL_URI" , "http://[fd00:ec2::23]/iam_credentials/pod1" , 1 );
601
+ setenv ("AWS_CONTAINER_AUTHORIZATION_TOKEN_FILE" , TEST_AUTHORIZATION_TOKEN_FILE , 1 );
602
+
603
+ setup_test (FLB_AWS_CLIENT_MOCK (
604
+ response (
605
+ expect (URI , "/iam_credentials/pod1" ),
606
+ expect (METHOD , FLB_HTTP_GET ),
607
+ expect (HEADER , "Authorization" , "local-http-credential-server-authorization-token" ),
608
+ set (STATUS , 200 ),
609
+ set (PAYLOAD , "{\n \"Code\" : \"Success\",\n \"LastUpdated\" : \"2021-09-16T18:29:09Z\",\n"
610
+ " \"Type\" : \"AWS-HMAC\",\n \"AccessKeyId\" : \"XACCESSEKSXXX\",\n \"SecretAccessKey\""
611
+ " : \"XSECRETEKSXXXXXXXXXXXXXX\",\n \"Token\" : \"XTOKENEKSXXXXXXXXXXXXXXX==\",\n"
612
+ " \"Expiration\" : \"3021-09-17T00:41:00Z\"\n}" ),
613
+ set (PAYLOAD_SIZE , 257 )
614
+ ),
615
+ response (
616
+ expect (URI , "/iam_credentials/pod1" ),
617
+ expect (METHOD , FLB_HTTP_GET ),
618
+ expect (HEADER , "Authorization" , "local-http-credential-server-authorization-token" ),
619
+ set (STATUS , 200 ),
620
+ set (PAYLOAD , "{\n \"Code\" : \"Success\",\n \"LastUpdated\" : \"2021-09-16T18:29:09Z\",\n"
621
+ " \"Type\" : \"AWS-HMAC\",\n \"AccessKeyId\" : \"YACCESSEKSXXX\",\n \"SecretAccessKey\""
622
+ " : \"YSECRETEKSXXXXXXXXXXXXXX\",\n \"Token\" : \"YTOKENEKSXXXXXXXXXXXXXXX==\",\n"
623
+ " \"Expiration\" : \"3021-09-17T00:41:00Z\"\n}" ),
624
+ set (PAYLOAD_SIZE , 257 )
625
+ )
626
+ ), & provider , & config );
627
+
628
+ flb_time_msleep (1000 );
629
+
630
+ /* Repeated calls to get credentials should return the same set */
631
+ creds = provider -> provider_vtable -> get_credentials (provider );
632
+ TEST_ASSERT (creds != NULL );
633
+ TEST_CHECK (strcmp ("XACCESSEKSXXX" , creds -> access_key_id ) == 0 );
634
+ TEST_CHECK (strcmp ("XSECRETEKSXXXXXXXXXXXXXX" , creds -> secret_access_key ) == 0 );
635
+ TEST_CHECK (strcmp ("XTOKENEKSXXXXXXXXXXXXXXX==" , creds -> session_token ) == 0 );
636
+
637
+ flb_aws_credentials_destroy (creds );
638
+
639
+ /* Retrieve from cache */
640
+ creds = provider -> provider_vtable -> get_credentials (provider );
641
+ TEST_ASSERT (creds != NULL );
642
+ TEST_CHECK (strcmp ("XACCESSEKSXXX" , creds -> access_key_id ) == 0 );
643
+ TEST_CHECK (strcmp ("XSECRETEKSXXXXXXXXXXXXXX" , creds -> secret_access_key ) == 0 );
644
+ TEST_CHECK (strcmp ("XTOKENEKSXXXXXXXXXXXXXXX==" , creds -> session_token ) == 0 );
645
+
646
+ flb_aws_credentials_destroy (creds );
647
+
648
+ /* refresh should return 0 (success) */
649
+ ret = provider -> provider_vtable -> refresh (provider );
650
+ TEST_CHECK (ret == 0 );
651
+
652
+ /* Retrieve refreshed credentials from cache */
653
+ creds = provider -> provider_vtable -> get_credentials (provider );
654
+ TEST_ASSERT (creds != NULL );
655
+ TEST_CHECK (strcmp ("YACCESSEKSXXX" , creds -> access_key_id ) == 0 );
656
+ TEST_CHECK (strcmp ("YSECRETEKSXXXXXXXXXXXXXX" , creds -> secret_access_key ) == 0 );
657
+ TEST_CHECK (strcmp ("YTOKENEKSXXXXXXXXXXXXXXX==" , creds -> session_token ) == 0 );
658
+
659
+ flb_aws_credentials_destroy (creds );
660
+
661
+ /* Check we have exhausted our response list */
662
+ TEST_CHECK (flb_aws_client_mock_generator_count_unused_requests () == 0 );
663
+
664
+ cleanup_test (provider , config );
665
+ }
592
666
593
667
static void test_http_provider_https_endpoint ()
594
668
{
@@ -766,5 +840,6 @@ TEST_LIST = {
766
840
{ "test_http_provider_server_failure" , test_http_provider_server_failure },
767
841
{ "test_http_validator_invalid_host" , test_http_validator_invalid_host },
768
842
{ "test_http_validator_invalid_port" , test_http_validator_invalid_port },
843
+ { "test_http_provider_eks_ipv6" , test_http_provider_eks_ipv6 },
769
844
{ 0 }
770
845
};
0 commit comments