public async Task TestSettingKnownFoldersAndLoggingOnAndOff() { KnownIdentities knownIdentities = new KnownIdentities(Resolve.FileSystemState, Resolve.SessionNotify); KnownFoldersViewModel vm = new KnownFoldersViewModel(Resolve.FileSystemState, Resolve.SessionNotify, knownIdentities); Assert.That(vm.KnownFolders.Count(), Is.EqualTo(0)); IDataContainer betterCloudInfo = New <IDataContainer>(@"C:\BetterCloud"); IDataContainer fasterCloudInfo = New <IDataContainer>(@"C:\FasterCloud"); KnownFolder folder1 = new KnownFolder(betterCloudInfo, @"My AxCrypt", KnownFolderKind.WindowsMyDocuments, null); KnownFolder folder2 = new KnownFolder(fasterCloudInfo, @"My AxCrypt", KnownFolderKind.Dropbox, null); FakeDataStore.AddFolder(folder1.My.FullName); FakeDataStore.AddFolder(folder2.My.FullName); vm.KnownFolders = new KnownFolder[] { folder1, folder2 }; Assert.That(vm.KnownFolders.Count(), Is.EqualTo(2)); Assert.That(vm.KnownFolders.First().Enabled, Is.False, "We are not signed in so the folder should not be enabled"); Assert.That(vm.KnownFolders.Last().Enabled, Is.False, "We are not signed in so the folder should not be enabled"); await knownIdentities.SetDefaultEncryptionIdentity(new LogOnIdentity("aaa")); Assert.That(vm.KnownFolders.Count(), Is.EqualTo(2)); Assert.That(vm.KnownFolders.First().Enabled, Is.True, "We are signed in so the folder should be enabled"); Assert.That(vm.KnownFolders.Last().Enabled, Is.True, "We are signed in so the folder should be enabled"); await knownIdentities.SetDefaultEncryptionIdentity(LogOnIdentity.Empty); Assert.That(vm.KnownFolders.Count(), Is.EqualTo(2)); Assert.That(vm.KnownFolders.First().Enabled, Is.False, "We are no longer signed in so the folder should not be enabled"); Assert.That(vm.KnownFolders.Last().Enabled, Is.False, "We are no longer signed in so the folder should not be enabled"); }
public async Task TestLoggingOffWhenLoggingOnWhenAlreadyLoggedOn() { int wasLoggedOnCount = 0; int wasLoggedOffCount = 0; SessionNotify notificationMonitor = new SessionNotify(); KnownIdentities knownIdentities = new KnownIdentities(Resolve.FileSystemState, notificationMonitor); notificationMonitor.AddCommand((SessionNotification notification) => { if (notification.NotificationType == SessionNotificationType.SignIn) { Assert.That(knownIdentities.IsLoggedOn, Is.True, "The state of the IsLoggedOn property should be consistent with the event."); ++wasLoggedOnCount; } if (notification.NotificationType == SessionNotificationType.SignOut) { Assert.That(knownIdentities.IsLoggedOn, Is.False, "The state of the IsLoggedOn property should be consistent with the event."); ++wasLoggedOffCount; } return(Constant.CompletedTask); }); await knownIdentities.SetDefaultEncryptionIdentity(new LogOnIdentity("passphrase1")); Assert.That(wasLoggedOnCount, Is.EqualTo(1)); Assert.That(wasLoggedOffCount, Is.EqualTo(0)); Assert.That(knownIdentities.IsLoggedOn, Is.True); await knownIdentities.SetDefaultEncryptionIdentity(new LogOnIdentity("passphrase")); Assert.That(wasLoggedOnCount, Is.EqualTo(2)); Assert.That(wasLoggedOffCount, Is.EqualTo(1)); Assert.That(knownIdentities.IsLoggedOn, Is.True); }
private async Task LogOffAction() { if (!_knownIdentities.IsLoggedOn) { return; } await _knownIdentities.SetDefaultEncryptionIdentity(LogOnIdentity.Empty); }
public async Task TestSettingNullDefaultEncryptionKey() { KnownIdentities knownIdentities = new KnownIdentities(Resolve.FileSystemState, Resolve.SessionNotify); LogOnIdentity key1 = new LogOnIdentity("a"); await knownIdentities.AddAsync(key1); LogOnIdentity key2 = new LogOnIdentity("B"); await knownIdentities.SetDefaultEncryptionIdentity(key2); Assert.That(knownIdentities.Identities.Count(), Is.EqualTo(2), "Setting the DefaultEncryptionKey should also add it as a known key."); await knownIdentities.SetDefaultEncryptionIdentity(LogOnIdentity.Empty); Assert.That(knownIdentities.Identities.Count(), Is.EqualTo(0), "Setting the DefaultEncryptionKey to empty should clear the known keys."); }
public async Task TestFileWasCreatedWhereAKnownFolderWasExpected() { IDataContainer betterCloudInfo = New <IDataContainer>(@"C:\BetterCloud"); IDataContainer fasterCloudInfo = New <IDataContainer>(@"C:\FasterCloud"); KnownFolder folder1 = new KnownFolder(betterCloudInfo, @"My AxCrypt", KnownFolderKind.GoogleDrive, null); KnownFolder folder2 = new KnownFolder(fasterCloudInfo, @"My AxCrypt", KnownFolderKind.Dropbox, null); FakeDataStore.AddFile(@"C:\BetterCloud\My AxCrypt", Stream.Null); FakeDataStore.AddFolder(folder2.My.FullName); KnownIdentities knownIdentities = new KnownIdentities(Resolve.FileSystemState, Resolve.SessionNotify); KnownFoldersViewModel vm = new KnownFoldersViewModel(Resolve.FileSystemState, Resolve.SessionNotify, knownIdentities); Assert.That(vm.KnownFolders.Count(), Is.EqualTo(0)); vm.KnownFolders = new KnownFolder[] { folder1, folder2 }; Assert.That(vm.KnownFolders.Count(), Is.EqualTo(2)); Assert.That(vm.KnownFolders.First().Enabled, Is.False); Assert.That(vm.KnownFolders.Last().Enabled, Is.False); await knownIdentities.SetDefaultEncryptionIdentity(new LogOnIdentity("aaa")); Assert.That(Resolve.FileSystemState.WatchedFolders.Count(), Is.EqualTo(1)); Assert.That(vm.KnownFolders.Count(), Is.EqualTo(2)); Assert.That(vm.KnownFolders.First().Enabled, Is.False); Assert.That(vm.KnownFolders.Last().Enabled, Is.True); }
public async Task TestAlreadyKnownFoldersAndLoggingOn() { IDataContainer betterCloudInfo = New <IDataContainer>(@"C:\BetterCloud"); IDataContainer fasterCloudInfo = New <IDataContainer>(@"C:\FasterCloud"); KnownFolder folder1 = new KnownFolder(betterCloudInfo, @"My AxCrypt", KnownFolderKind.OneDrive, null); KnownFolder folder2 = new KnownFolder(fasterCloudInfo, @"My AxCrypt", KnownFolderKind.WindowsMyDocuments, null); FakeDataStore.AddFolder(folder1.My.FullName); FakeDataStore.AddFolder(folder2.My.FullName); await Resolve.FileSystemState.AddWatchedFolderAsync(new WatchedFolder(folder1.My.FullName, new LogOnIdentity("PassPhrase").Tag)); await Resolve.FileSystemState.AddWatchedFolderAsync(new WatchedFolder(folder2.My.FullName, new LogOnIdentity(new Passphrase("aaa")).Tag)); KnownIdentities knownIdentities = new KnownIdentities(Resolve.FileSystemState, Resolve.SessionNotify); KnownFoldersViewModel vm = new KnownFoldersViewModel(Resolve.FileSystemState, Resolve.SessionNotify, knownIdentities); Assert.That(vm.KnownFolders.Count(), Is.EqualTo(0)); vm.KnownFolders = new KnownFolder[] { folder1, folder2 }; Assert.That(vm.KnownFolders.Count(), Is.EqualTo(2)); Assert.That(vm.KnownFolders.First().Enabled, Is.False); Assert.That(vm.KnownFolders.Last().Enabled, Is.False); await knownIdentities.SetDefaultEncryptionIdentity(new LogOnIdentity("aaa")); Assert.That(vm.KnownFolders.Count(), Is.EqualTo(2)); Assert.That(vm.KnownFolders.First().Enabled, Is.False, "This folder should not be enabled, because it's not watched by the signed in identity."); Assert.That(vm.KnownFolders.Last().Enabled, Is.True, "This folder should be enabled, since it is watched by the signed in identity."); }
public async Task TestClear() { KnownIdentities knownIdentities = new KnownIdentities(Resolve.FileSystemState, Resolve.SessionNotify); LogOnIdentity key1 = new LogOnIdentity("key1"); await knownIdentities.AddAsync(key1); LogOnIdentity key2 = new LogOnIdentity("key2"); await knownIdentities.AddAsync(key2); Assert.That(knownIdentities.Identities.Count(), Is.EqualTo(2), "There should be two keys in the collection."); await knownIdentities.SetDefaultEncryptionIdentity(LogOnIdentity.Empty); Assert.That(knownIdentities.Identities.Count(), Is.EqualTo(0), "There should be zero keys in the collection after Clear()."); await knownIdentities.SetDefaultEncryptionIdentity(LogOnIdentity.Empty); Assert.That(knownIdentities.Identities.Count(), Is.EqualTo(0), "There should be zero keys in the collection after Clear() with zero keys to start with."); }
public async Task TestDefaultEncryptionKey() { KnownIdentities knownIdentities = new KnownIdentities(Resolve.FileSystemState, Resolve.SessionNotify); LogOnIdentity key = new LogOnIdentity("a"); await knownIdentities.SetDefaultEncryptionIdentity(key); Assert.That(knownIdentities.DefaultEncryptionIdentity, Is.EqualTo(key), "The DefaultEncryptionKey should be the one just set as it."); Assert.That(knownIdentities.Identities.Count(), Is.EqualTo(1), "Only one key should be in the collection."); Assert.That(knownIdentities.Identities.First(), Is.EqualTo(key), "The first and only key should be the one just set as DefaultEncryptionKey."); }
public async Task TestWatchedFoldersWhenLoggedOn() { Passphrase key1 = new Passphrase("a"); LogOnIdentity key2 = new LogOnIdentity("b"); KnownIdentities knownIdentities = new KnownIdentities(Resolve.FileSystemState, Resolve.SessionNotify); FakeDataStore.AddFolder(@"C:\WatchedFolder1\"); FakeDataStore.AddFolder(@"C:\WatchedFolder2\"); await Resolve.FileSystemState.AddWatchedFolderAsync(new WatchedFolder(@"C:\WatchedFolder1\", new LogOnIdentity(key1).Tag)); await Resolve.FileSystemState.AddWatchedFolderAsync(new WatchedFolder(@"C:\WatchedFolder2\", key2.Tag)); await knownIdentities.SetDefaultEncryptionIdentity(key2); IEnumerable <WatchedFolder> watchedFolders = knownIdentities.LoggedOnWatchedFolders; Assert.That(watchedFolders.Count(), Is.EqualTo(1), "Only one of the two watched folders should be shown."); Assert.That(watchedFolders.First().Tag.Matches(key2.Tag), "The returned watched folder should be number 2."); }
private async Task ImportFileActionAsync() { IDataStore privateKeyData = New <IDataStore>(PrivateKeyFileName); Passphrase passphrase = new Passphrase(PasswordText); UserKeyPair keyPair; if (!UserKeyPair.TryLoad(privateKeyData.ToArray(), passphrase, out keyPair)) { ImportSuccessful = false; return; } LogOnIdentity identity = new LogOnIdentity(keyPair.UserEmail, passphrase); AccountStorage store = new AccountStorage(New <LogOnIdentity, IAccountService>(identity)); await store.ImportAsync(keyPair); ImportSuccessful = true; _userSettings.UserEmail = keyPair.UserEmail.Address; await _knownIdentities.SetDefaultEncryptionIdentity(new LogOnIdentity(await store.AllKeyPairsAsync(), passphrase)); }