public void WhenManagedKeyIsInvalid_ThenParseThrowsArgumentException() { Assert.Throws <ArgumentException>(() => MetadataAuthorizedKey.Parse( "login:ssh-rsa key username google-ssh {")); Assert.Throws <ArgumentException>(() => MetadataAuthorizedKey.Parse( "login:ssh-rsa key username google-ssh {}")); Assert.Throws <ArgumentException>(() => MetadataAuthorizedKey.Parse( "login:ssh-rsa key username google-ssh {\"userName\": \"user\", \"expireOn\": null}")); Assert.Throws <ArgumentException>(() => MetadataAuthorizedKey.Parse( "login:ssh-rsa key username google-ssh {\"userName\": \"user\", \"expireOn\": \"x\"}")); }
public void WhenUnmanagedKeyIsInvalid_ThenParseThrowsArgumentException() { Assert.Throws <ArgumentException>(() => MetadataAuthorizedKey.Parse( "xxx")); Assert.Throws <ArgumentException>(() => MetadataAuthorizedKey.Parse( "login:ssh-rsa key")); Assert.Throws <ArgumentException>(() => MetadataAuthorizedKey.Parse( "login: key username")); Assert.Throws <ArgumentException>(() => MetadataAuthorizedKey.Parse( "login:ssh-rsa key username morejunk")); }
private static void MergeKeyIntoMetadata( Metadata metadata, MetadataAuthorizedKey newKey) { // // Merge new key into existing keyset, and take // the opportunity to purge expired keys. // var newKeySet = MetadataAuthorizedKeySet.FromMetadata(metadata) .RemoveExpiredKeys() .Add(newKey); metadata.Add(MetadataAuthorizedKeySet.MetadataKey, newKeySet.ToString()); }
public void WhenAddingNewKey_ThenAddReturnsNewSet() { var metadata = new Metadata.ItemsData() { Key = MetadataAuthorizedKeySet.MetadataKey, Value = "alice:ssh-rsa key alice" }; var keySet = MetadataAuthorizedKeySet.FromMetadata(metadata) .Add(MetadataAuthorizedKey.Parse("bob:ssh-rsa key notalice")) .Add(MetadataAuthorizedKey.Parse("bob:ssh-rsa key2 bob")); Assert.AreEqual(3, keySet.Keys.Count()); }
public void WhenAddingDuplicateKey_ThenAddReturnsThis() { var metadata = new Metadata.ItemsData() { Key = MetadataAuthorizedKeySet.MetadataKey, Value = "alice:ssh-rsa key alice" }; var keySet = MetadataAuthorizedKeySet.FromMetadata(metadata); Assert.AreSame( keySet, keySet.Add(MetadataAuthorizedKey.Parse("alice:ssh-rsa key notalice"))); }
public void WhenKeyIsUnmanaged_ThenParseReturnsUnmanagedKey() { var line = "login:ssh-rsa key user"; var key = MetadataAuthorizedKey.Parse(line); Assert.IsInstanceOf <UnmanagedMetadataAuthorizedKey>(key); Assert.AreEqual("login", key.LoginUsername); Assert.AreEqual("ssh-rsa", key.KeyType); Assert.AreEqual("key", key.Key); Assert.AreEqual("user", ((UnmanagedMetadataAuthorizedKey)key).Username); Assert.AreEqual(line, key.ToString()); }
public void WhenKeyIsManaged_ThenParseReturnsManagedKey() { var line = "login:ssh-rsa key google-ssh {\"userName\":\"[email protected]\",\"expireOn\":\"2021-01-15T15:22:35+0000\"}"; var key = MetadataAuthorizedKey.Parse(line); Assert.IsInstanceOf <ManagedMetadataAuthorizedKey>(key); Assert.AreEqual("login", key.LoginUsername); Assert.AreEqual("ssh-rsa", key.KeyType); Assert.AreEqual("key", key.Key); Assert.AreEqual("*****@*****.**", ((ManagedMetadataAuthorizedKey)key).Metadata.Username); Assert.AreEqual(new DateTime(2021, 01, 15, 15, 22, 35, 0, DateTimeKind.Utc), ((ManagedMetadataAuthorizedKey)key).Metadata.ExpireOn.ToUniversalTime()); Assert.AreEqual(line, key.ToString()); }
public void WhenKeyIsManagedEcdsaKey_ThenParseReturnsManagedKey() { var line = "login:ecdsa-sha2-nistp256 AAAA google-ssh {\"userName\":" + "\"[email protected]\",\"expireOn\":\"2015-11-01T10:43:01+0000\"}"; var key = MetadataAuthorizedKey.Parse(line); Assert.IsInstanceOf <ManagedMetadataAuthorizedKey>(key); Assert.AreEqual("login", key.LoginUsername); Assert.AreEqual("ecdsa-sha2-nistp256", key.KeyType); Assert.AreEqual("AAAA", key.Key); Assert.AreEqual("*****@*****.**", ((ManagedMetadataAuthorizedKey)key).Metadata.Username); Assert.AreEqual(new DateTime(2015, 11, 1, 10, 43, 1, 0, DateTimeKind.Utc), ((ManagedMetadataAuthorizedKey)key).Metadata.ExpireOn.ToUniversalTime()); Assert.AreEqual(line, key.ToString()); }
public void WhenSetContainsEntriesWithEmptyUsername_ThenAddMaintainsEntry() { var metadata = new Metadata.ItemsData() { Key = MetadataAuthorizedKeySet.MetadataKey, Value = $"alice:ssh-rsa key alice\n" + $":ssh-rsa phantomkey2 phantom\n" + $":ssh-rsa phantomkey3 google-ssh {{\"userName\":\"[email protected]\",\"expireOn\":\"{DateTime.UtcNow.AddMinutes(1):O}\"}}\n" + $"moe:ssh-rsa key2 google-ssh {{\"userName\":\"[email protected]\",\"expireOn\":\"{DateTime.UtcNow.AddMinutes(1):O}\"}}\n" }; var keySet = MetadataAuthorizedKeySet.FromMetadata(metadata) .RemoveExpiredKeys() .Add(MetadataAuthorizedKey.Parse("bob:ssh-rsa key2 bob")); Assert.AreEqual(5, keySet.Keys.Count()); Assert.AreEqual("", keySet.Keys.First(k => k.Key == "phantomkey2").LoginUsername); Assert.AreEqual("", keySet.Keys.First(k => k.Key == "phantomkey3").LoginUsername); }