public void WhenMetadataItemIsEmpty_ThenKeySetIsEmpty() { var metadata = new Metadata.ItemsData() { Key = MetadataAuthorizedKeySet.MetadataKey, Value = " " }; CollectionAssert.IsEmpty(MetadataAuthorizedKeySet.FromMetadata(metadata).Keys); }
public void WhenMetadataItemContainsJunk_ThenFromMetadataThrowsArgumentException() { var metadata = new Metadata.ItemsData() { Key = MetadataAuthorizedKeySet.MetadataKey, Value = "junk junk junk " }; Assert.Throws <ArgumentException>( () => MetadataAuthorizedKeySet.FromMetadata(metadata)); }
public void WhenMetadataItemHasWrongKey_ThenFromMetadataThrowsArgumentException() { var metadata = new Metadata.ItemsData() { Key = MetadataAuthorizedKeySet.LegacyMetadataKey, Value = " " }; Assert.Throws <ArgumentException>( () => MetadataAuthorizedKeySet.FromMetadata(metadata)); }
public void WhenMetadataItemContainsData_ThenKeySetIsPopulated() { var metadata = new Metadata.ItemsData() { Key = MetadataAuthorizedKeySet.MetadataKey, Value = "alice:ssh-rsa key alice\n" + "bob:ssh-rsa key google-ssh {\"userName\":\"[email protected]\",\"expireOn\":\"2050-01-15T15:22:35Z\"}" }; var keySet = MetadataAuthorizedKeySet.FromMetadata(metadata); Assert.AreEqual(2, keySet.Keys.Count()); }
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 static MetadataAuthorizedKeySet FromMetadata(Metadata.ItemsData data) { Utilities.ThrowIfNull(data, nameof(data)); if (data.Key != MetadataKey) { throw new ArgumentException("Not a valid metadata key"); } return(new MetadataAuthorizedKeySet( data.Value .Split('\n') .Where(line => !string.IsNullOrWhiteSpace(line)) .Select(line => MetadataAuthorizedKey.Parse(line)) .ToList())); }
public void WhenKeyExpired_ThenRemoveExpiredKeysStripsKey() { var metadata = new Metadata.ItemsData() { Key = MetadataAuthorizedKeySet.MetadataKey, Value = $"alice:ssh-rsa key alice\n" + $"joe:ssh-rsa key2 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(); Assert.AreEqual(2, keySet.Keys.Count()); Assert.IsFalse(keySet.Keys.Any(k => k.LoginUsername == "joe")); }
public void WhenMetadataItemContainsUnnecessaryWhitespace_ThenKeySetIsPopulated() { var metadata = new Metadata.ItemsData() { Key = MetadataAuthorizedKeySet.MetadataKey, Value = "alice:ssh-rsa key alice\r\n" + "bob:ssh-rsa key google-ssh {\"userName\":\"[email protected]\",\"expireOn\":\"2050-01-15T15:22:35Z\"}\n" + "\n" + " carol:ssh-rsa key carol \t\r\n" + "dave:ssh-rsa key dave\r\n" }; var keySet = MetadataAuthorizedKeySet.FromMetadata(metadata); Assert.AreEqual(4, keySet.Keys.Count()); }
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); }