public async Task <Result> Edit(int smsGatewayId, GatewaySettingRequestDto gatewaySettingRequestDto) { try { var gatewaySettingToUpdate = await _nyssContext.GatewaySettings.FindAsync(smsGatewayId); if (gatewaySettingToUpdate == null) { return(Error(ResultKey.NationalSociety.SmsGateway.SettingDoesNotExist)); } var apiKeyExists = await _nyssContext.GatewaySettings.AnyAsync(gs => gs.ApiKey == gatewaySettingRequestDto.ApiKey && gs.Id != smsGatewayId); if (apiKeyExists) { return(Error <int>(ResultKey.NationalSociety.SmsGateway.ApiKeyAlreadyExists)); } gatewaySettingToUpdate.Name = gatewaySettingRequestDto.Name; gatewaySettingToUpdate.ApiKey = gatewaySettingRequestDto.ApiKey; gatewaySettingToUpdate.GatewayType = gatewaySettingRequestDto.GatewayType; gatewaySettingToUpdate.EmailAddress = gatewaySettingRequestDto.EmailAddress; await _nyssContext.SaveChangesAsync(); await UpdateAuthorizedApiKeys(); return(SuccessMessage(ResultKey.NationalSociety.SmsGateway.SuccessfullyUpdated)); } catch (ResultException exception) { _loggerAdapter.Debug(exception); return(exception.Result); } }
public async Task AddSmsGateway_WhenApiKeyDoesNotExistYet_ShouldReturnSuccess() { // Arrange const int nationalSocietyId = 1; var nationalSocieties = new[] { new NationalSociety { Id = nationalSocietyId, Name = "National Society" } }; var nationalSocietiesMockDbSet = nationalSocieties.AsQueryable().BuildMockDbSet(); _nyssContextMock.NationalSocieties.Returns(nationalSocietiesMockDbSet); var gatewaySettings = new[] { new GatewaySetting { Id = 1, Name = "Name", ApiKey = "api-key", NationalSocietyId = nationalSocietyId, GatewayType = GatewayType.SmsEagle } }; var gatewaySettingsMockDbSet = gatewaySettings.AsQueryable().BuildMockDbSet(); _nyssContextMock.GatewaySettings.Returns(gatewaySettingsMockDbSet); var gatewaySettingRequestDto = new GatewaySettingRequestDto { Name = "New SMS Gateway", ApiKey = "new-api-key", GatewayType = GatewayType.SmsEagle }; // Act var result = await _smsGatewayService.Create(nationalSocietyId, gatewaySettingRequestDto); // Assert await _nyssContextMock.GatewaySettings.Received(1).AddAsync( Arg.Is <GatewaySetting>(gs => gs.Name == "New SMS Gateway" && gs.ApiKey == "new-api-key" && gs.GatewayType == GatewayType.SmsEagle)); await _nyssContextMock.Received(1).SaveChangesAsync(); var content = Arg.Any <string>(); await _smsGatewayBlobProviderMock.Received(1).UpdateApiKeys(content); result.IsSuccess.ShouldBeTrue(); result.Message.Key.ShouldBe(ResultKey.NationalSociety.SmsGateway.SuccessfullyAdded); }
public async Task UpdateSmsGateway_WhenExceptionIsThrown_ShouldReturnError() { // Arrange const int smsGatewayId = 1; var nationalSocieties = new[] { new NationalSociety { Id = 1, Name = "National Society" } }; var nationalSocietiesMockDbSet = nationalSocieties.AsQueryable().BuildMockDbSet(); _nyssContextMock.NationalSocieties.Returns(nationalSocietiesMockDbSet); var gatewaySettings = new[] { new GatewaySetting { Id = smsGatewayId, Name = "Name", ApiKey = "api-key", NationalSocietyId = 1, GatewayType = GatewayType.SmsEagle } }; var gatewaySettingsMockDbSet = gatewaySettings.AsQueryable().BuildMockDbSet(); _nyssContextMock.GatewaySettings.Returns(gatewaySettingsMockDbSet); _nyssContextMock.GatewaySettings.FindAsync(smsGatewayId).Returns(gatewaySettings[0]); var gatewaySettingRequestDto = new GatewaySettingRequestDto { Name = "Updated SMS Gateway", ApiKey = "updated-api-key", GatewayType = GatewayType.SmsEagle }; var content = Arg.Any <string>(); _smsGatewayBlobProviderMock.UpdateApiKeys(content).ThrowsForAnyArgs(new ResultException(ResultKey.UnexpectedError)); // Act var result = await _smsGatewayService.Edit(smsGatewayId, gatewaySettingRequestDto); // Assert await _nyssContextMock.Received(1).SaveChangesAsync(); var content1 = Arg.Any <string>(); await _smsGatewayBlobProviderMock.Received(1).UpdateApiKeys(content1); result.IsSuccess.ShouldBeFalse(); result.Message.Key.ShouldBe(ResultKey.UnexpectedError); }
public async Task UpdateSmsGateway_WhenSmsGatewayDoesNotExist_ShouldReturnError() { // Arrange const int nonExistentSmsGatewayId = 0; var nationalSocieties = new[] { new NationalSociety { Id = 1, Name = "National Society" } }; var nationalSocietiesMockDbSet = nationalSocieties.AsQueryable().BuildMockDbSet(); _nyssContextMock.NationalSocieties.Returns(nationalSocietiesMockDbSet); var gatewaySettings = new[] { new GatewaySetting { Id = 1, Name = "Name", ApiKey = "api-key", NationalSocietyId = 1, GatewayType = GatewayType.SmsEagle } }; var gatewaySettingsMockDbSet = gatewaySettings.AsQueryable().BuildMockDbSet(); _nyssContextMock.GatewaySettings.Returns(gatewaySettingsMockDbSet); _nyssContextMock.GatewaySettings.FindAsync(nonExistentSmsGatewayId).ReturnsNull(); var gatewaySettingRequestDto = new GatewaySettingRequestDto { Name = "Updated SMS Gateway", ApiKey = "updated-api-key", GatewayType = GatewayType.SmsEagle }; // Act var result = await _smsGatewayService.Edit(nonExistentSmsGatewayId, gatewaySettingRequestDto); // Assert await _nyssContextMock.DidNotReceive().SaveChangesAsync(); var content = Arg.Any <string>(); await _smsGatewayBlobProviderMock.DidNotReceive().UpdateApiKeys(content); result.IsSuccess.ShouldBeFalse(); result.Message.Key.ShouldBe(ResultKey.NationalSociety.SmsGateway.SettingDoesNotExist); }
public async Task <Result <int> > Create(int nationalSocietyId, GatewaySettingRequestDto gatewaySettingRequestDto) { try { var nationalSocietyExists = await _nyssContext.NationalSocieties.AnyAsync(ns => ns.Id == nationalSocietyId); if (!nationalSocietyExists) { return(Error <int>(ResultKey.NationalSociety.SmsGateway.NationalSocietyDoesNotExist)); } var apiKeyExists = await _nyssContext.GatewaySettings.AnyAsync(gs => gs.ApiKey == gatewaySettingRequestDto.ApiKey); if (apiKeyExists) { return(Error <int>(ResultKey.NationalSociety.SmsGateway.ApiKeyAlreadyExists)); } var gatewaySettingToAdd = new GatewaySetting { Name = gatewaySettingRequestDto.Name, ApiKey = gatewaySettingRequestDto.ApiKey, GatewayType = gatewaySettingRequestDto.GatewayType, EmailAddress = gatewaySettingRequestDto.EmailAddress, NationalSocietyId = nationalSocietyId }; await _nyssContext.GatewaySettings.AddAsync(gatewaySettingToAdd); await _nyssContext.SaveChangesAsync(); await UpdateAuthorizedApiKeys(); return(Success(gatewaySettingToAdd.Id, ResultKey.NationalSociety.SmsGateway.SuccessfullyAdded)); } catch (ResultException exception) { _loggerAdapter.Debug(exception); return(exception.GetResult <int>()); } }
public Task <Result> Edit(int smsGatewayId, [FromBody] GatewaySettingRequestDto gatewaySettingRequestDto) => _smsGatewayService.Edit(smsGatewayId, gatewaySettingRequestDto);
public Task <Result <int> > Create(int nationalSocietyId, [FromBody] GatewaySettingRequestDto gatewaySettingRequestDto) => _smsGatewayService.Create(nationalSocietyId, gatewaySettingRequestDto);