public bool TryCreateSafeForExistingUser(string userName, string password, out ISafe safe) { var account = AccountGateway.ReadUserAccount(WorkingDirectory, userName); var verifyingWordBytesForCurrentPassword = Cryptor.GetEncryptedBytes(account.VerifyingWord, password); try { var masterPassword = Cryptor.GetDecryptedContent <string>(account.MasterEncryptedPassBytes, password); safe = null; if (account.VeryifyingWordEncryptedBytes.Length != verifyingWordBytesForCurrentPassword.Length) { return(false); } for (var i = 0; i < account.VeryifyingWordEncryptedBytes.Length; i++) { if (account.VeryifyingWordEncryptedBytes[i] != verifyingWordBytesForCurrentPassword[i]) { return(false); } } safe = new Safe(masterPassword); safe.UserName = userName; safe.WorkingDirectory = WorkingDirectory; return(true); } catch (Exception e) { safe = null; return(false); } }
public void When_safe_creation_is_attempted_with_invalid_password_then_safe_creation_fails() { var userName = "******"; var someInvalidPassword = "******"; var verifyingWord = "SomeWord"; var verifyingWordEncryptedBytesForInvalidPassword = new byte[] { 0, 1, 2, 3, 4, 5, 6, 7, 8 }; var verifyingWordEncryptedBytesForValidPassword = new byte[] { 0, 1, 2, 3, 4, 5, 6, }; var masterPassEncryptedBytes = new byte[] { 4, 5, 6, 7, 8, 9 }; var account = new Account() { MasterEncryptedPassBytes = masterPassEncryptedBytes, VerifyingWord = verifyingWord, VeryifyingWordEncryptedBytes = verifyingWordEncryptedBytesForValidPassword, }; _accountGateway.ReadUserAccount(_initialWorkingDirectory, userName).Returns(account); _cryptor.GetEncryptedBytes(verifyingWord, someInvalidPassword).Returns(verifyingWordEncryptedBytesForInvalidPassword); ISafe safe = null; var result = _safeProvider.TryCreateSafeForExistingUser(userName, someInvalidPassword, out safe); Assert.False(result); Assert.IsNull(safe); }
public SearchAndAddOperationViewModel(ISafe safe, Action <string> recordSelectionAction, Action addNewRecordAction) { _safe = safe; _recordSelectionAction = recordSelectionAction; IsSearchResultVisible = false; IsSearchResultEmpty = true; AddCommand = new DelegateCommand(addNewRecordAction); IsSearchInProgress = false; }
public static void StubCreateSafeForExistingUser(this ISafeProviderForExistingUser safeProvider, string validUserName, string validPassword, ISafe safe) { ISafe outSafe; safeProvider.TryCreateSafeForExistingUser(validUserName, validPassword, out outSafe) .Returns(x => { x[2] = safe; return(true); }); }
public void SetUp() { _safe = Substitute.For <ISafe>(); _operationStepViewModel = new OperationStepViewModel("userName", _safe, () => { }); _selectedOperationPropertyObserver = _operationStepViewModel .GetPropertyObserver <SingleOperationViewModel> (nameof(_operationStepViewModel.SelectedOperation)); _signOutCommandObserver = _operationStepViewModel.SignOutCommand.GetDelegateCommandObserver(); }
public OperationStepViewModel(string userName, ISafe safe, Action goToEntryStepAction) { _idGenerator = new IdGenerator(); Safe = safe; UserName = userName; SignOutCommand = new DelegateCommand(() => { goToEntryStepAction.Invoke(); Safe = null; }, CanSignOut); //AddCommand = new DelegateCommand(GoToAddOperation); GoToSearchAndAddOperation(); }
public void SetUp() { _recordIdGenerator = Substitute.For <IRecordIdGenerator>(); _fileIdGenerator = Substitute.For <IFileIdGenerator>(); _recordIdGenerator.GetRecordId().Returns(_uniqueId); _safe = Substitute.For <ISafe>(); _addOperationViewModel = new AddOperationViewModel(() => { _isDiscardActionPerformed = true; }, (x) => { _idAtSaveAction = x; }, _recordIdGenerator, _fileIdGenerator, _safe); _saveCommandObserver = _addOperationViewModel.SaveCommand.GetDelegateCommandObserver(); }
public RecordAlteringOperationViewModel(ISafe safe, string recordId, IFileIdGenerator fileIdGenerator, Action reloadAction, Action closeAction) { _safe = safe; _recordId = recordId; _reloadAction = reloadAction; _closeAction = closeAction; var record = safe.GetRecord(recordId); Record = new RecordViewModel(record, safe, fileIdGenerator); SaveCommand = new DelegateCommand(Save, CanSave); DeleteCommand = new DelegateCommand(Delete); DiscardCommand = new DelegateCommand(Discard); GoToSearchCommand = new DelegateCommand(GoToSearch, () => !Record.IsRecordModified); Record.RecordChanged += () => { GoToSearchCommand.RaiseCanExecuteChanged(); }; Record.PropertyChanged += (a, b) => { SaveCommand.RaiseCanExecuteChanged(); }; }
public void SetUp() { _safe = Substitute.For <ISafe>(); _searchAndAddOperationViewModel = new SearchAndAddOperationViewModel(_safe, (x) => { _openedRecordId = x; }, () => { _isRecordCreationRequested = true; }); _searchResultVisibilityObserver = _searchAndAddOperationViewModel .GetPropertyObserver <bool>(nameof(_searchAndAddOperationViewModel.IsSearchResultVisible)); _searchResultEmptyPropertyObserver = _searchAndAddOperationViewModel .GetPropertyObserver <bool>(nameof(_searchAndAddOperationViewModel.IsSearchResultEmpty)); _searchResultPropertyObserver = _searchAndAddOperationViewModel .GetPropertyObserver <ObservableCollection <RecordHeaderViewModel> >( nameof(_searchAndAddOperationViewModel.SearchResults)); _searchProgressIndicatorObserver = _searchAndAddOperationViewModel .GetPropertyObserver <bool>(nameof(_searchAndAddOperationViewModel.IsSearchInProgress)); }
public void SetUp() { _recordid = "RecordId"; _record = new Record() { Header = new RecordHeader() { Id = _recordid, Name = "RecordName", Tags = "Tag1;Tag2", }, PasswordRecords = new List <PasswordRecord>() { new PasswordRecord() { Name = "SomeName1", Value = "SomeValue1" }, }, FileRecords = new List <FileRecord>() { new FileRecord() { Name = "sss", Description = "ddd", Extention = "xyz", FileId = "ssss", AssociatedRecordId = _recordid }, }, }; _safe = Substitute.For <ISafe>(); var recordId = _record.Header.Id; _safe.GetRecord(recordId).Returns(_record); _recordAlteringOperationViewModel = new RecordAlteringOperationViewModel(_safe, recordId, new IdGenerator(), () => { _isReloadActionCalled = true; }, () => { _isCloseActionCalled = true; }); _saveCommandObserver = _recordAlteringOperationViewModel.SaveCommand.GetDelegateCommandObserver(); }
public AddOperationViewModel(Action discardAction, Action <string> saveAction, IRecordIdGenerator recordIdGenerator, IFileIdGenerator fileIdGenerator, ISafe safe) { Record = new RecordViewModel(CreateEmptyRecord(recordIdGenerator.GetRecordId()), safe, fileIdGenerator); Record.PropertyChanged += (sender, args) => { CanExecuteSaveCommand = !string.IsNullOrWhiteSpace(Record.Name); }; DiscardCommand = new DelegateCommand (() => { safe.ReorganizeFiles(Record.Id); discardAction.Invoke(); } ); SaveCommand = new DelegateCommand(() => { var record = Record.GetRecord(); safe.UpsertRecord(record); safe.ReorganizeFiles(Record.Id); saveAction.Invoke(Record.Id); }, () => CanExecuteSaveCommand); }
private void GoToOperationStep(ISafe safe, string userName) { CurrentStep = new OperationStepViewModel(userName, safe, GoToEntryStep); }
public void SafeCreatedForNonExistingUserSetUp() { _cryptor.GetEncryptedBytes(_masterpassword, _password).Returns(_masterPassBytes); _cryptor.GetEncryptedBytes(_verifyingWord, _password).Returns(_verifyingWordEncryptedBytes); _safe = _safeProvider.CreateSafeForNonExistingUser(_userName, _masterpassword, _password); }