public ApplicationWithKey( KeyApplication requestingApplication, KeyApplication targetApplication, AuthKeyValue key) { RequestingApplication = requestingApplication ?? throw new ArgumentNullException(nameof(requestingApplication)); Key = key; TargetApplication = targetApplication ?? throw new ArgumentNullException(nameof(targetApplication)); }
public Task <IEnumerable <KeyApplication> > GetKnownApplicationsAsync( KeyApplication application, CancellationToken token = default) { if (!_bindedAppDictionary.TryGetValue(application, out var bindedApps)) { var emptyResult = new KeyApplication[] { KeyApplication.NoApplication }; return(Task.FromResult <IEnumerable <KeyApplication> >(emptyResult)); } return(Task.FromResult <IEnumerable <KeyApplication> >(bindedApps)); }
public async Task GetAllApps_ReturnResultFromRepo() { // ARRANGE var firstApp = new KeyApplication(Guid.NewGuid().ToString(), Guid.NewGuid()); var secondApp = new KeyApplication(Guid.NewGuid().ToString(), Guid.NewGuid()); KeyApplication[] expectedResult = { firstApp, secondApp }; // настраиваем реп приложений, чтобы он возвращал список из двух приложений var appRepoMock = new Mock <IApplicationRepository>(); appRepoMock.Setup(x => x.GetAllKnownApplicationsAsync(default))
public async Task GetApp_2BindedApp1Disabled_Return1ActiveApp() { // ARRANGE ApplicationCode applicationCode = "1"; KeyApplication application = new KeyApplication(applicationCode, Guid.NewGuid()); var activeBindedApp = new KeyApplication("2", Guid.NewGuid()); var disabledBindedApp = new KeyApplication("3", Guid.NewGuid()); KeyApplication[] bindedApplications = { activeBindedApp, disabledBindedApp }; // настраиваем репу приложения, находим наше приложение // а так же возвращаем список из двух приложений var appRepoMock = new Mock <IApplicationRepository>(); appRepoMock.Setup(x => x.GetApplicationByCodeAsync(applicationCode, default)) .Returns(() => Task.FromResult(application)); appRepoMock.Setup(x => x.GetKnownApplicationsAsync(application, default)) .Returns(() => Task.FromResult <IEnumerable <KeyApplication> >(bindedApplications)); // настраиваем реп ключей, чтобы он для одного из аппов не нашёл активного ключа var keyRepoMock = new Mock <IKeyRepository>(); keyRepoMock.Setup(x => x.IsHaveActiveAuthKey(activeBindedApp, application, default)) .Returns(() => new ValueTask <bool>(Task.FromResult(true))); keyRepoMock.Setup(x => x.IsHaveActiveAuthKey(disabledBindedApp, application, default)) .Returns(() => new ValueTask <bool>(Task.FromResult(false))); var validator = _commonHelper.InitValidator(appRepoMock.Object, keyRepoMock.Object); // ACT var result = await validator.GetPermittedApplicationsAsync(applicationCode); // ASSERT KeyApplication[] expectedResult = { activeBindedApp }; Assert.True(_commonHelper.CheckIsApplicationListsEqual(result, expectedResult)); }
public ValueTask <bool> IsHaveActiveAuthKey(KeyApplication application, KeyApplication targetApplication, CancellationToken token = default) { foreach (var appKeyRow in _keyDictionary) { var authKey = (ExistingAuthKey)appKeyRow.Value; var app = appKeyRow.Key; if (app.TargetApplication != targetApplication && app.RequestingApplication != application) { continue; } if (authKey.Enabled) { return(new ValueTask <bool>(Task.FromResult(true))); } } return(new ValueTask <bool>(false)); }
public async Task ValidateKey_KeyFound(bool keyIsEnabled) { // ARRANGE var applicationCode = "1"; var application = new KeyApplication(applicationCode, Guid.NewGuid()); var targetApplicationCode = "2"; var targetApplication = new KeyApplication(targetApplicationCode, Guid.NewGuid()); var authKeyValue = "qwerty"; // реп приложений настраиваем, чтобы он находил все приложения var repoMock = new Mock <IApplicationRepository>(); repoMock.Setup(x => x.GetApplicationByCodeAsync(applicationCode, default)) .Returns(() => Task.FromResult(application)); repoMock.Setup(x => x.GetApplicationByCodeAsync(targetApplicationCode, default)) .Returns(() => Task.FromResult(targetApplication)); // реп ключей должен не находить такого ключа var keyRepoMock = new Mock <IKeyRepository>(); keyRepoMock.Setup(x => x.GetApplicationForKeyAsync(It.IsAny <ApplicationWithKey>(), default)) .Returns(() => Task.FromResult <AuthKey>( new ExistingAuthKey(authKeyValue, keyIsEnabled, application, targetApplication))); var validator = _commonHelper.InitValidator(repoMock.Object, keyRepoMock.Object); // ACT var requestModel = new ApplicationCodeAuthKeyValidateRequest(applicationCode, targetApplicationCode, authKeyValue); var result = await validator.ValidateKeyAsync(requestModel); // ASSERT Assert.Equal(keyIsEnabled, result); }
public InMemoryApplicationRepository() { int index = 1; // заполняем приложениями foreach (var app in TestApplicationCollection.KeyApplications) { _codeDictionary.Add(app.Code, app); _uidDictionary.Add(app.Uid, app); // "рисуем" связи между приложениями var bindedApplications = new KeyApplication[TestApplicationCollection.KeyApplications.Length - index]; for (int i = index; i < bindedApplications.Length; i++) { bindedApplications[i] = TestApplicationCollection.KeyApplications[i]; } _bindedAppDictionary.Add(app, bindedApplications); index++; } }
public Task <IEnumerable <KeyApplication> > GetKnownApplicationsAsync(KeyApplication application, CancellationToken token = default) { return(Task.FromResult(Enumerable.Empty <KeyApplication>())); }
public ValueTask<bool> IsHaveActiveAuthKey(KeyApplication application, KeyApplication targetApplication, CancellationToken token = default) { return new ValueTask<bool>(Task.FromResult(false)); }