From f31aa27e155afa74dfd310096c76f74bfb5fb534 Mon Sep 17 00:00:00 2001 From: Siddhartha Shaw Date: Wed, 5 Apr 2017 17:26:38 +0530 Subject: [PATCH] ConfigurationRepository.cs - added a new method to get configuration by module name IConfigurationRepository.cs - added a new method to get configuration by module name OAuthLoginRepository.cs - enchance the feature of add to slack ConfigurationRepositoryTest.cs - added new test case OAuthLoginRepositoryTest.cs - updated test case configuration.component.ts - enhance the add to slack feature --- .../ConfigurationRepository.cs | 10 ++++++++++ .../IConfigurationRepository.cs | 7 +++++++ .../ExternalLoginRepository/OAuthLoginRepository.cs | 10 ++++++++-- Slack.Automation/Promact.Core.Test/AutofacConfig.cs | 3 --- .../Promact.Core.Test/ConfigurationRepositoryTest.cs | 11 +++++++++++ .../Promact.Core.Test/OAuthLoginRepositoryTest.cs | 6 ++++++ .../app/configuration/configuration.component.ts | 2 +- 7 files changed, 43 insertions(+), 6 deletions(-) diff --git a/Slack.Automation/Promact.Core.Repository/ConfigurationRepository/ConfigurationRepository.cs b/Slack.Automation/Promact.Core.Repository/ConfigurationRepository/ConfigurationRepository.cs index cec143b2..2bc70456 100644 --- a/Slack.Automation/Promact.Core.Repository/ConfigurationRepository/ConfigurationRepository.cs +++ b/Slack.Automation/Promact.Core.Repository/ConfigurationRepository/ConfigurationRepository.cs @@ -114,6 +114,16 @@ public async Task IsUserAddedLeaveAppAsync(string userId) leaveAppDetail.IsAdded = true; return leaveAppDetail; } + + /// + /// Method to get configuration detail by module name + /// + /// name of module + /// + public async Task GetConfigurationBymoduleAsync(string module) + { + return await _configurationDataRepository.FirstOrDefaultAsync(x => x.Module == module); + } #endregion #region Private Method diff --git a/Slack.Automation/Promact.Core.Repository/ConfigurationRepository/IConfigurationRepository.cs b/Slack.Automation/Promact.Core.Repository/ConfigurationRepository/IConfigurationRepository.cs index d815f301..ac991ed2 100644 --- a/Slack.Automation/Promact.Core.Repository/ConfigurationRepository/IConfigurationRepository.cs +++ b/Slack.Automation/Promact.Core.Repository/ConfigurationRepository/IConfigurationRepository.cs @@ -44,5 +44,12 @@ public interface IConfigurationRepository /// user's Id /// configuration details Task IsUserAddedLeaveAppAsync(string userId); + + /// + /// Method to get configuration detail by module name + /// + /// name of module + /// + Task GetConfigurationBymoduleAsync(string module); } } diff --git a/Slack.Automation/Promact.Core.Repository/ExternalLoginRepository/OAuthLoginRepository.cs b/Slack.Automation/Promact.Core.Repository/ExternalLoginRepository/OAuthLoginRepository.cs index c6337082..b19147b4 100644 --- a/Slack.Automation/Promact.Core.Repository/ExternalLoginRepository/OAuthLoginRepository.cs +++ b/Slack.Automation/Promact.Core.Repository/ExternalLoginRepository/OAuthLoginRepository.cs @@ -3,6 +3,7 @@ using NLog; using Promact.Core.Repository.AppCredentialRepository; using Promact.Core.Repository.BotRepository; +using Promact.Core.Repository.ConfigurationRepository; using Promact.Core.Repository.SlackChannelRepository; using Promact.Core.Repository.SlackUserRepository; using Promact.Erp.DomainModel.ApplicationClass; @@ -34,6 +35,7 @@ public class OAuthLoginRepository : IOAuthLoginRepository private readonly IAppCredentialRepository _appCredentialRepository; private readonly ILogger _logger; private readonly ISocketClientWrapper _socketClientWrapper; + private readonly IConfigurationRepository _configurationRepository; #endregion #region Constructor @@ -42,7 +44,8 @@ public class OAuthLoginRepository : IOAuthLoginRepository IRepository slackChannelDetailsRepository, IStringConstantRepository stringConstant, ISlackUserRepository slackUserRepository, IEnvironmentVariableRepository envVariableRepository, IRepository incomingWebHook, ISlackChannelRepository slackChannelRepository, - IAppCredentialRepository appCredentialRepository, ISocketClientWrapper socketClientWrapper) + IAppCredentialRepository appCredentialRepository, ISocketClientWrapper socketClientWrapper, + IConfigurationRepository configurationRepository) { _userManager = userManager; _httpClientService = httpClientService; @@ -56,6 +59,7 @@ public class OAuthLoginRepository : IOAuthLoginRepository _appCredentialRepository = appCredentialRepository; _logger = LogManager.GetLogger("AuthenticationModule"); _socketClientWrapper = socketClientWrapper; + _configurationRepository = configurationRepository; } #endregion @@ -117,6 +121,7 @@ public OAuthApplication ExternalLoginInformation(string refreshToken) public async Task AddSlackUserInformationAsync(string code) { AppCredential appCredential = await _appCredentialRepository.FetchSelectedAppAsync(); + Configuration configuration = await _configurationRepository.GetConfigurationBymoduleAsync(appCredential.Module); if (appCredential != null) { string slackOAuthRequest = string.Format(_stringConstant.SlackOauthRequestUrl, appCredential.ClientId, appCredential.ClientSecret, code); @@ -126,7 +131,8 @@ public async Task AddSlackUserInformationAsync(string code) appCredential.BotToken = slackOAuth?.Bot?.BotAccessToken; appCredential.BotUserId = slackOAuth?.Bot?.BotUserId; await _appCredentialRepository.UpdateBotTokenAsync(appCredential); - + configuration.Status = true; + await _configurationRepository.UpdateConfigurationAsync(configuration); _logger.Info("slackOAuth UserID" + slackOAuth.UserId); bool checkUserIncomingWebHookExist = _incomingWebHookRepository.Any(x => x.UserId == slackOAuth.UserId); if (!checkUserIncomingWebHookExist && !string.IsNullOrEmpty(slackOAuth.IncomingWebhook?.Url)) diff --git a/Slack.Automation/Promact.Core.Test/AutofacConfig.cs b/Slack.Automation/Promact.Core.Test/AutofacConfig.cs index a25fd013..0d28dd86 100644 --- a/Slack.Automation/Promact.Core.Test/AutofacConfig.cs +++ b/Slack.Automation/Promact.Core.Test/AutofacConfig.cs @@ -40,9 +40,6 @@ using Promact.Core.Repository.AppCredentialRepository; using Promact.Core.Repository.BotRepository; using Promact.Core.Repository.RedmineRepository; -using Promact.Core.Repository.ConfigurationRepository; -using Promact.Core.Repository.AppCredentialRepository; -using Promact.Core.Repository.BotRepository; namespace Promact.Core.Test { diff --git a/Slack.Automation/Promact.Core.Test/ConfigurationRepositoryTest.cs b/Slack.Automation/Promact.Core.Test/ConfigurationRepositoryTest.cs index 6a2b0a7a..21d2c6f0 100644 --- a/Slack.Automation/Promact.Core.Test/ConfigurationRepositoryTest.cs +++ b/Slack.Automation/Promact.Core.Test/ConfigurationRepositoryTest.cs @@ -110,6 +110,17 @@ public async Task DisableAppByConfigurationIdAsync() var configuration = await _configurationDataRepository.FirstAsync(x=>x.Id == configurationId); Assert.False(configuration.Status); } + + /// + /// Test case to test the method DisableAppByConfigurationIdAsync of ConfigurationRepository + /// + [Fact, Trait("Category", "Required")] + public async Task GetConfigurationBymoduleAsync() + { + await AddConfigurationAsync(); + var result = await _configurationRepository.GetConfigurationBymoduleAsync(_stringConstant.TaskModule); + Assert.False(result.Status); + } #endregion #region Initialization diff --git a/Slack.Automation/Promact.Core.Test/OAuthLoginRepositoryTest.cs b/Slack.Automation/Promact.Core.Test/OAuthLoginRepositoryTest.cs index 4c7f13b4..1dfc5671 100644 --- a/Slack.Automation/Promact.Core.Test/OAuthLoginRepositoryTest.cs +++ b/Slack.Automation/Promact.Core.Test/OAuthLoginRepositoryTest.cs @@ -8,6 +8,7 @@ using Promact.Core.Repository.SlackChannelRepository; using Promact.Core.Repository.SlackUserRepository; using Promact.Erp.DomainModel.ApplicationClass.SlackRequestAndResponse; +using Promact.Erp.DomainModel.DataRepository; using Promact.Erp.DomainModel.Models; using Promact.Erp.Util.EnvironmentVariableRepository; using Promact.Erp.Util.HttpClient; @@ -38,6 +39,7 @@ public class OAuthLoginRepositoryTest private SlackProfile profile = new SlackProfile(); private ApplicationUser user = new ApplicationUser(); private AppCredential appCredential = new AppCredential(); + private readonly IRepository _configurationDataRepository; #endregion #region Constructor @@ -54,6 +56,7 @@ public OAuthLoginRepositoryTest() _mockServiceRepository = _componentContext.Resolve>(); _userManager = _componentContext.Resolve(); _appCredentialRepository = _componentContext.Resolve(); + _configurationDataRepository = _componentContext.Resolve>(); Initialize(); } #endregion @@ -103,6 +106,9 @@ public void ExternalLoginInformation() [Fact, Trait("Category", "Required")] public async Task AddSlackUserInformation() { + Configuration configuration = new Configuration() {CreatedOn = DateTime.UtcNow, Module = _stringConstant.LeaveModule, Status = false }; + _configurationDataRepository.Insert(configuration); + await _configurationDataRepository.SaveChangesAsync(); UserLoginInfo info = new UserLoginInfo(_stringConstant.PromactStringName, _stringConstant.AccessTokenForTest); await _userManager.CreateAsync(user); await _userManager.AddLoginAsync(user.Id, info); diff --git a/Slack.Automation/Promact.Erp.Web/app/configuration/configuration.component.ts b/Slack.Automation/Promact.Erp.Web/app/configuration/configuration.component.ts index d4ced0ae..3e14f73c 100644 --- a/Slack.Automation/Promact.Erp.Web/app/configuration/configuration.component.ts +++ b/Slack.Automation/Promact.Erp.Web/app/configuration/configuration.component.ts @@ -31,13 +31,13 @@ export class ConfigurationComponent implements OnInit { openModel(configuration: Configuration, popup) { this.loader.loader = true; this.configurationId = configuration.Id; - this.updateConfiguration(configuration); this.loader.loader = false; if (configuration.Status === true) { popup.open(this.dialogConfig); } else { this.loader.loader = true; + this.updateConfiguration(configuration); this.configurationStatus = this.sharedService.getConfigurationStatusAC(); if (configuration.Module === this.stringConstant.leaveModule) { this.configurationStatus.LeaveOn = configuration.Status; }