Exemplo n.º 1
0
        /// <summary>
        /// Walks the credentials store to find the matching account settings for the specified
        /// access key
        /// </summary>
        /// <param name="accessKey">Access key to serach by.</param>
        /// <param name="profileName">ProfileName to search by.</param>
        /// <param name="profileLocation">The location of the ini-format credential file.</param>
        /// <returns></returns>
        string LookupAccountSettingsKey(string accessKey, string profileName, string profileLocation)
        {
            CredentialProfile profile;

            if (string.IsNullOrEmpty(profileName))
            {
                // no profile name so go by the access key
                profile = SettingsStore.ListProfiles(profileLocation).Where(
                    p => p.CanCreateAWSCredentials && string.Equals(p.Options.AccessKey, accessKey, StringComparison.OrdinalIgnoreCase)).FirstOrDefault();
            }
            else
            {
                // use profile name since we have it
                SettingsStore.TryGetProfile(profileName, profileLocation, out profile);
            }

            if (profile != null)
            {
                return(CredentialProfileUtils.GetUniqueKey(profile));
            }
            else
            {
                return(null);
            }
        }
Exemplo n.º 2
0
        public void RenameProfile()
        {
            using (var tester = new NetSDKCredentialsFileTestFixture(BasicProfileText))
            {
                // read the profile
                CredentialProfile before;
                Assert.IsTrue(tester.ProfileStore.TryGetProfile("ProfileName1", out before));

                // rename it
                tester.ProfileStore.RenameProfile("ProfileName1", "ProfileName2");

                // make sure there isn't one with the original name
                CredentialProfile profile1Reread;
                Assert.IsFalse(tester.ProfileStore.TryGetProfile("ProfileName1", out profile1Reread));

                // make sure one with the new name exists
                CredentialProfile after;
                Assert.IsTrue(tester.ProfileStore.TryGetProfile("ProfileName2", out after));
                Assert.AreNotEqual(before.Name, after.Name);

                // make sure the unique key is the same as before the rename
                Assert.AreEqual(CredentialProfileUtils.GetUniqueKey(before), CredentialProfileUtils.GetUniqueKey(after));

                // make sure everything is the same, except for the name
                ReflectionHelpers.Invoke(after, "Name", before.Name);
                Assert.AreEqual(before, after);
            }
        }
Exemplo n.º 3
0
        public void TestAllProfileTypes()
        {
            foreach (CredentialProfileType type in Enum.GetValues(typeof(CredentialProfileType)))
            {
                using (var tester = new NetSDKCredentialsFileTestFixture())
                {
                    var profileName     = type.ToString() + Guid.NewGuid().ToString();
                    var originalProfile = CredentialProfileTestHelper.GetRandomProfile(profileName, type);
                    Assert.IsTrue(originalProfile.CanCreateAWSCredentials);
                    Assert.IsNotNull(CredentialProfileUtils.GetUniqueKey(originalProfile));

                    tester.ProfileStore.RegisterProfile(originalProfile);

                    var readProfile = tester.TestTryGetProfile(profileName, true, true);
                    Assert.AreEqual(originalProfile, readProfile);

                    //Making sure that the endpoint_discovery_enabled field is set to the default
                    Assert.IsNull(readProfile.EndpointDiscoveryEnabled);

                    // make sure the ProfileType is written, even though it's ignored
                    var expectedType = type.ToString();
                    if (type == CredentialProfileType.Basic)
                    {
                        expectedType = AWSCredentialsProfileType;
                    }
                    else if (type == CredentialProfileType.SAMLRole ||
                             type == CredentialProfileType.SAMLRoleUserIdentity)
                    {
                        expectedType = SAMLRoleProfileType;
                    }
                    tester.AssertJsonProperty(profileName, SettingsConstants.ProfileTypeField, expectedType);
                }
            }
        }
Exemplo n.º 4
0
 public void ReadUniqueKeyProperty()
 {
     using (var tester = new NetSDKCredentialsFileTestFixture(LegacyCredentialsTypeProfileText))
     {
         var profile = tester.TestTryGetProfile("LegacyCredentialsTypeProfile", true, false);
         Assert.AreEqual(UniqueKey.ToString("D"), CredentialProfileUtils.GetUniqueKey(profile));
     }
 }
Exemplo n.º 5
0
 public void LegacyCredentialsTypeProfile()
 {
     using (var tester = new NetSDKCredentialsFileTestFixture(LegacyCredentialsTypeProfileText))
     {
         var profile        = tester.TestTryGetProfile("LegacyCredentialsTypeProfile", true, false);
         var credentialType = CredentialProfileUtils.GetProperty(profile, "CredentialsType");
         Assert.AreEqual("the_credentials_type", credentialType);
     }
 }
        public static CredentialProfile GetCredentialProfile(Guid?uniqueKey, string profileName, CredentialProfileOptions options,
                                                             Dictionary <string, string> properties, RegionEndpoint region)
        {
            var profile = new CredentialProfile(profileName, options)
            {
                Region = region
            };

            CredentialProfileUtils.SetUniqueKey(profile, uniqueKey);
            ReflectionHelpers.Invoke(profile, "Properties", properties);
            return(profile);
        }
Exemplo n.º 7
0
 private void TestReservedPropertyName(string exceptionFormat, string propertyName)
 {
     AssertExtensions.ExpectException(() =>
     {
         using (var tester = new NetSDKCredentialsFileTestFixture())
         {
             var profileName = Guid.NewGuid().ToString();
             var profile     = CredentialProfileTestHelper.GetRandomProfile(profileName, CredentialProfileType.Basic);
             var properties  = CredentialProfileUtils.GetProperties(profile);
             properties.Add(propertyName, "aargh!");
             tester.ProfileStore.RegisterProfile(profile);
         }
     }, typeof(ArgumentException), string.Format(CultureInfo.InvariantCulture, exceptionFormat, propertyName));
 }
 public void NameSetSAMLRoleUserIdentityProfile()
 {
     using (var fixture = new NetSDKCredentialsFileTestFixture())
     {
         var profile = new CredentialProfile(SAMLRoleUserIdentityProfileName, SAMLRoleUserIdentityProfileOptions);
         CredentialProfileUtils.SetUniqueKey(profile, Guid.NewGuid());
         fixture.ProfileStore.RegisterProfile(profile);
         SetConfigValues(null, null, SAMLRoleUserIdentityProfileName, null);
         AssertExtensions.ExpectException(() =>
         {
             new AppConfigAWSCredentials().GetCredentials();
         }, typeof(InvalidOperationException), new Regex("is a SAML role profile that specifies a user identity"));
     }
 }
 public static CredentialProfile GetCredentialProfile(Guid? uniqueKey, string profileName, CredentialProfileOptions options,
     Dictionary<string, string> properties, RegionEndpoint region, bool? endpointDiscoveryEnabled, RequestRetryMode? retryMode, int? maxAttempts)
 {
     var profile = new CredentialProfile(profileName, options)
     {
         Region = region,
         EndpointDiscoveryEnabled = endpointDiscoveryEnabled,
         RetryMode = retryMode,
         MaxAttempts = maxAttempts
     };
     CredentialProfileUtils.SetUniqueKey(profile, uniqueKey);            
     ReflectionHelpers.Invoke(profile, "Properties", properties);
     return profile;
 }
Exemplo n.º 10
0
        public void RenameProfile(bool addUniqueKey)
        {
            var profileText = BasicProfileTextForCopyAndRename;

            if (addUniqueKey)
            {
                profileText += "toolkit_artifact_guid=" + UniqueKey;
            }

            using (var tester = new SharedCredentialsFileTestFixture(profileText))
            {
                // read the profile
                CredentialProfile before;
                Assert.IsTrue(tester.CredentialsFile.TryGetProfile("basic_profile", out before));

                // rename it
                tester.CredentialsFile.RenameProfile("basic_profile", "basic_profile2");

                // make sure there isn't one with the original name
                CredentialProfile profile1Reread;
                Assert.IsFalse(tester.CredentialsFile.TryGetProfile("basic_profile", out profile1Reread));

                // make sure one with the new name exists
                CredentialProfile after;
                Assert.IsTrue(tester.CredentialsFile.TryGetProfile("basic_profile2", out after));
                Assert.AreNotEqual(before.Name, after.Name);

                // make sure the unique key is the same as before the rename
                if (addUniqueKey)
                {
                    Assert.AreEqual(UniqueKey.ToString("D"), CredentialProfileUtils.GetUniqueKey(before));
                }
                else
                {
                    Assert.IsNull(CredentialProfileUtils.GetUniqueKey(before));
                }
                Assert.AreEqual(CredentialProfileUtils.GetUniqueKey(before), CredentialProfileUtils.GetUniqueKey(after));

                // make sure everything is the same, except for the name
                ReflectionHelpers.Invoke(after, "Name", before.Name);
                Assert.AreEqual(before, after);

                // make sure comments and other properties are unchanged after the rename
                tester.AssertCredentialsFileContents(profileText.Replace("basic_profile", "basic_profile2"));
            }
        }
Exemplo n.º 11
0
        public void CopyProfile()
        {
            using (var tester = new NetSDKCredentialsFileTestFixture(BasicProfileText))
            {
                // read the profile
                CredentialProfile profile1;
                Assert.IsTrue(tester.ProfileStore.TryGetProfile("ProfileName1", out profile1));

                // copy it
                tester.ProfileStore.CopyProfile("ProfileName1", "ProfileName2");

                // make sure the original is untouched
                CredentialProfile profile1Reread;
                Assert.IsTrue(tester.ProfileStore.TryGetProfile("ProfileName1", out profile1Reread));
                Assert.AreEqual(profile1, profile1Reread);

                // make sure the copy exists
                CredentialProfile profile2;
                Assert.IsTrue(tester.ProfileStore.TryGetProfile("ProfileName2", out profile2));

                // make sure the name and unique key of the copy are different from the original
                Assert.AreNotEqual(profile1.Name, profile2.Name);
                Assert.AreNotEqual(CredentialProfileUtils.GetUniqueKey(profile1), CredentialProfileUtils.GetUniqueKey(profile2));

                // make sure everything else on the copy is the same as the original
                CredentialProfileUtils.SetUniqueKey(profile2, new Guid(CredentialProfileUtils.GetUniqueKey(profile1)));
                ReflectionHelpers.Invoke(profile2, "Name", profile1.Name);
                Assert.AreEqual(profile1, profile2);

                //make sure the additional key came along
                var someOtherValue1 = CredentialProfileUtils.GetProperty(profile1, SomeOtherKey);
                var someOtherValue2 = CredentialProfileUtils.GetProperty(profile2, SomeOtherKey);
                Assert.AreEqual(SomeOtherValue, someOtherValue1);
                Assert.AreEqual(someOtherValue1, someOtherValue2);
            }
        }
Exemplo n.º 12
0
        public void CopyProfile(bool addUniqueKey, bool addAnotherSection, bool useSameName)
        {
            var profileText = BasicProfileTextForCopyAndRename;
            var fromName    = "basic_profile";
            var toName      = fromName + (useSameName ? "" : "2");

            if (addUniqueKey)
            {
                profileText += "toolkit_artifact_guid=" + UniqueKey + Environment.NewLine;
            }

            var anotherSection = addAnotherSection ? "[another_section]" + Environment.NewLine + "propertyx=valuex" + Environment.NewLine : "";

            using (var tester = new SharedCredentialsFileTestFixture(profileText + anotherSection))
            {
                // read the profile
                CredentialProfile profile1;
                Assert.IsTrue(tester.CredentialsFile.TryGetProfile(fromName, out profile1));

                // copy it
                tester.CredentialsFile.CopyProfile(fromName, toName);

                // make sure the original is untouched
                CredentialProfile profile1Reread;
                Assert.IsTrue(tester.CredentialsFile.TryGetProfile(fromName, out profile1Reread));
                Assert.AreEqual(profile1, profile1Reread);

                // make sure the copy exists
                CredentialProfile profile2;
                Assert.IsTrue(tester.CredentialsFile.TryGetProfile(toName, out profile2));

                if (useSameName)
                {
                    Assert.AreEqual(profile1.Name, profile2.Name);
                }
                else
                {
                    Assert.AreNotEqual(profile1.Name, profile2.Name);
                }


                if (addUniqueKey)
                {
                    if (useSameName)
                    {
                        Assert.AreEqual(UniqueKey.ToString("D"), CredentialProfileUtils.GetUniqueKey(profile1));
                        Assert.AreEqual(CredentialProfileUtils.GetUniqueKey(profile1), CredentialProfileUtils.GetUniqueKey(profile2));
                    }
                    else
                    {
                        Assert.AreEqual(UniqueKey.ToString("D"), CredentialProfileUtils.GetUniqueKey(profile1));
                        Assert.AreNotEqual(CredentialProfileUtils.GetUniqueKey(profile1), CredentialProfileUtils.GetUniqueKey(profile2));
                    }
                }
                else
                {
                    Assert.IsNull(CredentialProfileUtils.GetUniqueKey(profile1));
                    Assert.IsNull(CredentialProfileUtils.GetUniqueKey(profile2));
                }

                var contentsAfter = profileText;

                if (!useSameName)
                {
                    // make sure the comments and everything got copied
                    contentsAfter = (contentsAfter + anotherSection).TrimEnd() + Environment.NewLine;
                    if (addUniqueKey)
                    {
                        contentsAfter += profileText.Replace(fromName, toName)
                                         .Replace(CredentialProfileUtils.GetUniqueKey(profile1).ToString(), CredentialProfileUtils.GetUniqueKey(profile2).ToString()).TrimEnd();
                    }
                    else
                    {
                        contentsAfter += profileText.Replace(fromName, toName);
                    }
                }

                tester.AssertCredentialsFileContents(contentsAfter);

                // make sure everything else on the copy is the same as the original
                string profile1Guid = CredentialProfileUtils.GetUniqueKey(profile1);
                CredentialProfileUtils.SetUniqueKey(profile2, profile1Guid == null ? (Guid?)null : new Guid(profile1Guid));
                ReflectionHelpers.Invoke(profile2, "Name", profile1.Name);
                Assert.AreEqual(profile1, profile2);

                //make sure the additional key came along
                var value1 = CredentialProfileUtils.GetProperty(profile1, "property");
                var value2 = CredentialProfileUtils.GetProperty(profile2, "property");
                Assert.AreEqual("value", value1);
                Assert.AreEqual(value1, value2);
            }
        }