Пример #1
0
        public void GetRamRoleArnAlibabaCloudCredential()
        {
            TestHelper.InitializeEnvironmentValue();

            var ramRoleCredential =
                new InstanceProfileCredentials("accessKey", "aks", "roletoken", DateTime.Now.ToString(), 3000);
            var profile = DefaultProfile.GetProfile();

            var response = new AssumeRoleResponse();

            response.Credentials                 = new AssumeRoleResponse.AssumeRole_Credentials();
            response.Credentials.AccessKeyId     = "ak";
            response.Credentials.AccessKeySecret = "aks";
            response.Credentials.SecurityToken   = "token";

            var mockClient = new Mock <IAcsClient>();

            mockClient.Setup(x => x.GetAcsResponse(It.IsAny <AcsRequest <AssumeRoleResponse> >())).Returns(response);
            var client = mockClient.Object;

            var stsProvider = new STSAssumeRoleSessionCredentialsProvider(ramRoleCredential, "roleArn", client);
            var defaultCredentialProvider = new DefaultCredentialProvider(profile, stsProvider);

            var actualCredentil = defaultCredentialProvider.GetRamRoleArnAlibabaCloudCredential();

            TestHelper.RemoveEnvironmentValue();
            Assert.NotNull(actualCredentil);
            Assert.Equal("aks", actualCredentil.GetAccessKeySecret());
        }
Пример #2
0
        public void ShouldRefresh()
        {
            InstanceProfileCredentials instance = new InstanceProfileCredentials("a", "b", "c", DateTime.Now.ToString(), 100000);
            bool tmp = instance.ShouldRefresh();

            Assert.IsType <bool>(tmp);
        }
        public void FetchRetry()
        {
            var mock = new Mock <ECSMetadataServiceCredentialsFetcher>()
            {
                CallBase = true
            };

            Exception e = new Exception();

            mock.Setup(foo => foo.GetResponse(
                           It.IsAny <HttpRequest>()
                           )).Throws(e);

            ECSMetadataServiceCredentialsFetcher instance = mock.Object;

            Assert.Throws <ClientException>(
                () =>
            {
                InstanceProfileCredentials credentials = instance.Fetch(3);
            }
                );

            Action retryAction = () =>
            {
                InstanceProfileCredentials credentials = instance.Fetch(-1);;
            };
            var exception = Record.Exception(retryAction);

            Assert.Equal("Failed to connect ECS Metadata Service: Max retry times exceeded.", exception.Message);
        }
Пример #4
0
        public void GetCredentialFileAlibabaCloudCredentialWithRamRole()
        {
            var ramRoleCredential = new InstanceProfileCredentials("fakeak", "fakeaks", "fakesessiontokne",
                                                                   DateTime.Now.ToString(), 4000);

            TestHelper.CreateIniFileWithRam();

            var mockHomePath = EnvironmentUtil.GetHomePath();

            var profile = DefaultProfile.GetProfile();

            profile.DefaultClientName = "default";

            var mockDefaultCredentialProvider = new Mock <DefaultCredentialProvider>(profile, null);

            mockDefaultCredentialProvider.Setup(x => x.GetRamRoleArnAlibabaCloudCredential())
            .Returns(ramRoleCredential);
            mockDefaultCredentialProvider.Setup(x => x.GetHomePath()).Returns(mockHomePath);

            var defaultCredentialProvider = mockDefaultCredentialProvider.Object;

            var credential = (InstanceProfileCredentials)defaultCredentialProvider.GetAlibabaCloudClientCredential();

            TestHelper.DeleteIniFile();
            Assert.NotNull(credential);
        }
Пример #5
0
        public void GetCredentials4()
        {
            // When Credentials will Expired

            // Mock Response
            HttpResponse response        = new HttpResponse();
            string       ExpiredDatetime = DateTime.Now.AddMilliseconds(800).ToString();

            byte[] content = Encoding.GetEncoding("UTF-8").GetBytes("{\"Code\":\"Success\",\"Message\":\"ThisIsMessage\",\"RequestId\":\"ThisIsRequestId\",\"AccessKeyId\":\"MockAccessKeyId\",\"AccessKeySecret\":\"\",\"SecurityToken\":\"\",\"Expiration\":\"" + ExpiredDatetime + "\"}");
            response.ContentType = FormatType.JSON;
            response.Content     = content;
            response.Status      = 200;

            // Mock Credentials
            var mockCredentials = new Mock <InstanceProfileCredentials>("MockAccessKeyId", "", "", ExpiredDatetime, 100000)
            {
                CallBase = true
            };

            mockCredentials.Setup(foo => foo.RemainTicks()).Returns(15 * 1000 * 1000 * 10);
            InstanceProfileCredentials instanceProfileCredentials = mockCredentials.Object;

            instanceProfileCredentials.SetLastFailedRefreshTime();

            // Mock Fetcher
            var mockFetcher = new Mock <ECSMetadataServiceCredentialsFetcher>()
            {
                CallBase = true
            };

            mockFetcher.Setup(foo => foo.GetResponse(
                                  It.IsAny <HttpRequest>()
                                  )).Returns(response);
            mockFetcher.Setup(foo => foo.Fetch()).Returns(instanceProfileCredentials);
            ECSMetadataServiceCredentialsFetcher fetcher = mockFetcher.Object;

            string roleName = ACKMock.GetRoleName(true);
            InstanceProfileCredentialsProvider instance = new InstanceProfileCredentialsProvider(roleName);
            AlibabaCloudCredentialsProvider    provider = instance;

            instance.withFetcher(fetcher);

            //  Credentials will Expired at first. No Throw Exception (15000 >= 10000)
            AlibabaCloudCredentials credentials = provider.GetCredentials();

            Assert.Equal("MockAccessKeyId", credentials.GetAccessKeyId());

            //  Credentials will Expired at Second. Throws Exception  (5000 < 10000)
            mockCredentials.Setup(foo => foo.RemainTicks()).Returns(5000);
            instanceProfileCredentials = mockCredentials.Object;
            instanceProfileCredentials.SetLastFailedRefreshTime();
            mockFetcher.Setup(foo => foo.Fetch()).Returns(instanceProfileCredentials);
            fetcher = mockFetcher.Object;
            instance.withFetcher(fetcher);

            Assert.Throws <ClientException>(() =>
            {
                credentials = provider.GetCredentials();
            });
        }
        public void Fetch4()
        {
            // When Code != "Success"
            var mock = new Mock <ECSMetadataServiceCredentialsFetcher>()
            {
                CallBase = true
            };

            HttpResponse response = new HttpResponse();

            byte[] content = Encoding.GetEncoding("UTF-8").GetBytes("{\"Code\":\"NotSuccess\",\"Message\":\"ThisIsMessage\",\"RequestId\":\"ThisIsRequestId\",\"AccessKeyId\":\"MockAccessKeyId\",\"AccessKeySecret\":\"\",\"SecurityToken\":\"\",\"Expiration\":\"" + DateTimeMock.getNowDateTimeString() + "\"}");
            response.ContentType = FormatType.JSON;
            response.Content     = content;
            response.Status      = 200;

            Exception e = new Exception();

            mock.Setup(foo => foo.GetResponse(
                           It.IsAny <HttpRequest>()
                           )).Returns(response);

            ECSMetadataServiceCredentialsFetcher instance = mock.Object;

            Assert.Throws <ClientException>(
                () =>
            {
                InstanceProfileCredentials credentials = instance.Fetch();;
            }
                );
        }
Пример #7
0
        public void GetCredentialFileAlibabaCloudCredentialWithRamRole()
        {
            var ramRoleCredential = new InstanceProfileCredentials("fakeak", "fakeaks", "fakesessiontokne", DateTime.Now.ToString(), 4000);
            var homePath          = EnvironmentUtil.GetHomePath();

            TestHelper.CreateIniFileWithRam(homePath);

            var slash         = EnvironmentUtil.GetOSSlash();
            var finalLocation = EnvironmentUtil.GetComposedPath(homePath, slash);
            var configurtion  = Configuration.LoadFromFile(finalLocation);

            DefaultProfile profile = DefaultProfile.GetProfile();

            profile.DefaultClientName = "default";

            var mockDefaultCredentialProvider = new Mock <DefaultCredentialProvider>(profile, null);

            mockDefaultCredentialProvider.Setup(x => x.GetRamRoleArnAlibabaCloudCredential()).Returns(ramRoleCredential);
            mockDefaultCredentialProvider.Setup(x => x.GetHomePath()).Returns(homePath);
            mockDefaultCredentialProvider.Setup(x => x.LoadFileFromIni(It.IsAny <string>())).Returns(configurtion);
            var defaultCredentialProvider = mockDefaultCredentialProvider.Object;

            var credential = (InstanceProfileCredentials)defaultCredentialProvider.GetAlibabaCloudClientCredential();

            TestHelper.DeleteIniFile(homePath);
            Assert.NotNull(credential);
        }
Пример #8
0
        public void SetLastFailedRefreshTime()
        {
            InstanceProfileCredentials instance = new InstanceProfileCredentials("a", "b", "c", DateTime.Now.ToString(), 100000);

            instance.SetLastFailedRefreshTime();

            // DONE WITH NO EXCEPTION
        }
        public void ShouldRefresh()
        {
            InstanceProfileCredentials instance = new InstanceProfileCredentials("a", "b", "c", DateTime.Now.ToString(), 100000);

            Assert.True(instance.ShouldRefresh());

            instance.SetLastFailedRefreshTime();

            Assert.False(instance.ShouldRefresh());
        }
        public void GetRamRoleArnAlibabaCloudCredential2()
        {
            TestHelper.InitializeEnvironmentValue();

            var ramRoleCredential = new InstanceProfileCredentials("accessKey", "aks", "roletoken", DateTime.Now.ToString(), 3000);
            var profile           = DefaultProfile.GetProfile();

            var defaultCredentialProvider = new DefaultCredentialProvider(profile, null);

            var exception = Assert.Throws <ClientException>(() =>
            {
                var actualCredentil = defaultCredentialProvider.GetRamRoleArnAlibabaCloudCredential();
            });

            TestHelper.RemoveEnvironmentValue();
            Assert.Equal("Specified access key is not found.", exception.ErrorMessage);
        }
Пример #11
0
        public void GetCredentials1()
        {
            // When Success Get Credentials

            // Mock Response
            HttpResponse response = new HttpResponse();

            byte[] content = Encoding.GetEncoding("UTF-8").GetBytes("{\"Code\":\"Success\",\"Message\":\"ThisIsMessage\",\"RequestId\":\"ThisIsRequestId\",\"AccessKeyId\":\"MockAccessKeyId\",\"AccessKeySecret\":\"\",\"SecurityToken\":\"\",\"Expiration\":\"" + DateTimeMock.getNotExpiredDateTimeString() + "\"}");
            response.ContentType = FormatType.JSON;
            response.Content     = content;
            response.Status      = 200;

            // Mock Credentials
            var mockCredentials = new Mock <InstanceProfileCredentials>("MockAccessKeyId", "MockAccessKeySecret", "MockSecurityToken", DateTimeMock.getNotExpiredDateTimeString(), 100000)
            {
                CallBase = true
            };

            mockCredentials.Setup(foo => foo.RemainTicks()).Returns(15 * 1000 * 1000 * 10);
            InstanceProfileCredentials instanceProfileCredentials = mockCredentials.Object;

            // Mock Fetcher
            var mockFetcher = new Mock <ECSMetadataServiceCredentialsFetcher>()
            {
                CallBase = true
            };

            mockFetcher.Setup(foo => foo.GetResponse(
                                  It.IsAny <HttpRequest>()
                                  )).Returns(response);
            mockFetcher.Setup(foo => foo.Fetch()).Returns(instanceProfileCredentials);
            ECSMetadataServiceCredentialsFetcher fetcher = mockFetcher.Object;

            string roleName = ACKMock.GetRoleName(true);
            InstanceProfileCredentialsProvider instance = new InstanceProfileCredentialsProvider(roleName);

            instance.withFetcher(fetcher);
            AlibabaCloudCredentialsProvider provider = instance;

            AlibabaCloudCredentials credentials = provider.GetCredentials();

            Assert.Equal("MockAccessKeyId", credentials.GetAccessKeyId());
        }
        public void GetInstanceRamRoleAlibabaCloudCredential2()
        {
            var profile = DefaultProfile.GetProfile();

            profile.DefaultClientName = "default";
            Environment.SetEnvironmentVariable("ALIBABA_CLOUD_REGION_ID", "region_id");
            Environment.SetEnvironmentVariable("ALIBABA_CLOUD_ECS_METADATA", "role_name");

            var instanceProfileCredential   = new InstanceProfileCredentials("fakeak", "fakeaks", "fakesession", DateTime.Now.ToString(), 4000);
            var mockInstanceProfileProvider = new Mock <InstanceProfileCredentialsProvider>("role_name");

            mockInstanceProfileProvider.Setup(x => x.GetCredentials()).Returns(instanceProfileCredential);
            var instanceProfileProvider = mockInstanceProfileProvider.Object;

            var defaultCredentialProvider = new DefaultCredentialProvider(profile, instanceProfileProvider);
            var actualCredential          = defaultCredentialProvider.GetInstanceRamRoleAlibabaCloudCredential();

            Environment.SetEnvironmentVariable("ALIBABA_CLOUD_REGION_ID", null);
            Environment.SetEnvironmentVariable("ALIBABA_CLOUD_ECS_METADATA", null);
            Assert.NotNull(actualCredential);
            Assert.Equal("fakeak", actualCredential.GetAccessKeyId());
        }
Пример #13
0
        public void IsExpired()
        {
            InstanceProfileCredentials instance = new InstanceProfileCredentials("a", "b", "c", DateTime.Now.ToString(), 100000);

            Assert.True(instance.IsExpired());
        }
        public void WillSoonExpire()
        {
            var instance = new InstanceProfileCredentials("a", "b", "c", DateTime.Now.ToString(), 100000);

            Assert.True(instance.WillSoonExpire());
        }
        public void ShouldRefresh()
        {
            var instance = new InstanceProfileCredentials("a", "b", "c", DateTime.Now.ToString(), 100000);

            Assert.True(instance.ShouldRefresh());
        }
        public void SetLastFailedRefreshTime()
        {
            var instance = new InstanceProfileCredentials("a", "b", "c", DateTime.Now.ToString(), 100000);

            instance.SetLastFailedRefreshTime();
        }