Exemplo n.º 1
0
        public async Task DeletePreferenceKeyExecutor_MissingKeyUID()
        {
            var keyUid = Guid.NewGuid();

            mockPrefRepo.Setup(p => p.UserPreferenceExistsForKey(keyUid))
            .ReturnsAsync(false);

            var prefEvent = new DeletePreferenceKeyEvent
            {
                PreferenceKeyUID = keyUid
            };

            mockPrefRepo.Setup(p => p.StoreEvent(prefEvent))
            .ReturnsAsync(0);

            var executor = RequestExecutorContainerFactory.Build <DeletePreferenceKeyExecutor>
                               (Logger, ServiceExceptionHandler, mockPrefRepo.Object);
            var ex = await Assert.ThrowsAsync <ServiceException>(async() => await executor.ProcessAsync(prefEvent));

            Assert.Equal(HttpStatusCode.InternalServerError, ex.Code);
            var result = ex.GetResult;

            Assert.Equal(2007, result.Code);
            Assert.Equal("Unable to delete preference key. ", result.Message);
        }
Exemplo n.º 2
0
        public void TestDeletePreferenceKey_ValidInput_True()
        {
            //Arrange
            DeletePreferenceKeyEvent deleteUser = new DeletePreferenceKeyEvent()
            {
                PreferenceKeyUID = new Guid("1762f4cd-1322-4be7-96b7-bb4f8b8ff510"),
                ActionUTC        = DateTime.UtcNow
            };
            var dbPreferenceKey = new PreferenceKeyDto()
            {
                PreferenceKeyUID  = deleteUser.PreferenceKeyUID,
                PreferenceKeyName = "Key",
                PreferenceKeyID   = 10,
                InsertUTC         = DateTime.UtcNow.AddDays(-1),
                UpdateUTC         = DateTime.UtcNow
            };

            transaction.Get <PreferenceKeyDto>(Arg.Any <string>()).Returns(x => { return(new List <PreferenceKeyDto>()
                {
                    dbPreferenceKey
                }); });

            //Act
            bool?result = preferenceService.DeletePreferenceKey(deleteUser);

            //Assert
            Assert.True(result);
            transaction.Received(1).Get <PreferenceKeyDto>(Arg.Any <string>());
            transaction.Received(1).Delete(Arg.Is <string>(x => x.Contains(deleteUser.PreferenceKeyUID.ToStringAndWrapWithUnhex())));
            transaction.Received(1).Publish(Arg.Is <KafkaMessage>(x => x.Key == deleteUser.PreferenceKeyUID.ToString()));
            transaction.Received(1).Execute(Arg.Any <List <Action> >());
        }
Exemplo n.º 3
0
        public void DeletePreferenceKey_NoExisting()
        {
            var prefEvent = new DeletePreferenceKeyEvent
            {
                PreferenceKeyUID = Guid.NewGuid()
            };

            WriteEventToDb(prefEvent, "Non-existent preference key should not be deleted", 0);
        }
Exemplo n.º 4
0
        public async Task <ContractExecutionResult> DeletePreferenceKey([FromBody] DeletePreferenceKeyEvent preferenceEvent)
        {
            var methodName = $"{nameof(DeletePreferenceKey)}";

            Logger.LogInformation($"{methodName} preferenceEvent: {0}", JsonConvert.SerializeObject(preferenceEvent));

            var result = await WithServiceExceptionTryExecuteAsync(() =>
                                                                   RequestExecutorContainerFactory
                                                                   .Build <DeletePreferenceKeyExecutor>(LoggerFactory, ServiceExceptionHandler, PreferenceRepo)
                                                                   .ProcessAsync(preferenceEvent)
                                                                   );

            Logger.LogResult(methodName, JsonConvert.SerializeObject(preferenceEvent), result);
            return(result);
        }
Exemplo n.º 5
0
        public void DeletePreferenceKey_HappyPath()
        {
            var prefEvent = new CreatePreferenceKeyEvent
            {
                PreferenceKeyName = $"some key {DateTime.Now.Ticks}",
                PreferenceKeyUID  = Guid.NewGuid()
            };

            WriteEventToDb(prefEvent);

            var prefEvent2 = new DeletePreferenceKeyEvent
            {
                PreferenceKeyUID = prefEvent.PreferenceKeyUID
            };

            WriteEventToDb(prefEvent2);
        }
Exemplo n.º 6
0
        public void TestDeletePreferenceKey_PreferenceNotExist_ReturnNull()
        {
            //Arrange
            DeletePreferenceKeyEvent deleteUser = new DeletePreferenceKeyEvent()
            {
                PreferenceKeyUID = new Guid("1762f4cd-1322-4be7-96b7-bb4f8b8ff510"),
                ActionUTC        = DateTime.UtcNow
            };

            transaction.Get <PreferenceKeyDto>(Arg.Any <string>()).Returns(x => { return(new List <PreferenceKeyDto>()); });

            //Act
            bool?result = preferenceService.DeletePreferenceKey(deleteUser);

            //Assert
            Assert.Null(result);
            transaction.Received(1).Get <PreferenceKeyDto>(Arg.Any <string>());
            transaction.Received(0).Delete(Arg.Any <string>());
            transaction.Received(0).Publish(Arg.Any <KafkaMessage>());
            transaction.Received(0).Execute(Arg.Any <List <Action> >());
        }
Exemplo n.º 7
0
        public bool?DeletePreferenceKey(DeletePreferenceKeyEvent preferenceKey)
        {
            try
            {
                var preference = GetPreferenceKey(preferenceKey.PreferenceKeyUID);
                if (preference == null)
                {
                    return(null);
                }

                var deleteQuery = string.Format("Delete from md_preference_PreferenceKey where PreferenceKeyUID = {0}",
                                                preferenceKey.PreferenceKeyUID.ToStringAndWrapWithUnhex());

                var kafkaMessage = new KafkaMessage()
                {
                    Key     = preference.PreferenceKeyUID.ToString(),
                    Message = new { DeleteUserPreferenceKey = preferenceKey }
                };

                var actions = new List <Action>();
                actions.Add(() => transaction.Delete(deleteQuery));
                actions.Add(() => topics.ToList().ForEach(topic =>
                {
                    kafkaMessage.Topic = topic;
                    transaction.Publish(kafkaMessage);
                }));

                return(transaction.Execute(actions));
            }
            catch (MySqlException ex)
            {
                if (!ex.Message.Contains("foreign key constraint"))
                {
                    throw ex;
                }
            }

            return(false);
        }
Exemplo n.º 8
0
        public async Task DeletePreferenceKeyExecutor_HappyPath()
        {
            var keyUid = Guid.NewGuid();

            mockPrefRepo.Setup(p => p.UserPreferenceExistsForKey(keyUid))
            .ReturnsAsync(false);

            var prefEvent = new DeletePreferenceKeyEvent
            {
                PreferenceKeyUID = keyUid
            };

            mockPrefRepo.Setup(p => p.StoreEvent(prefEvent))
            .ReturnsAsync(1);

            var executor = RequestExecutorContainerFactory.Build <DeletePreferenceKeyExecutor>
                               (Logger, ServiceExceptionHandler, mockPrefRepo.Object);
            var result = await executor.ProcessAsync(prefEvent);

            Assert.Equal(ContractExecutionStatesEnum.ExecutedSuccessfully, result.Code);
            Assert.Equal(ContractExecutionResult.DefaultMessage, result.Message);
        }
Exemplo n.º 9
0
        public async Task DeletePreferenceKeyExecutor_UserPreferenceExists()
        {
            var keyUid = Guid.NewGuid();

            mockPrefRepo.Setup(p => p.UserPreferenceExistsForKey(keyUid))
            .ReturnsAsync(true);

            var prefEvent = new DeletePreferenceKeyEvent
            {
                PreferenceKeyUID = keyUid
            };

            var executor = RequestExecutorContainerFactory.Build <DeletePreferenceKeyExecutor>
                               (Logger, ServiceExceptionHandler, mockPrefRepo.Object);
            var ex = await Assert.ThrowsAsync <ServiceException>(async() => await executor.ProcessAsync(prefEvent));

            Assert.Equal(HttpStatusCode.BadRequest, ex.Code);
            var result = ex.GetResult;

            Assert.Equal(2006, result.Code);
            Assert.Equal($"Cannot delete preference key as user preferences exist. {keyUid}", result.Message);
        }
Exemplo n.º 10
0
        public ActionResult DeletePreferenceKey(string preferenceKeyGuid = null)
        {
            try
            {
                Guid preferenceKeyUid;
                if (!Guid.TryParse(preferenceKeyGuid, out preferenceKeyUid))
                {
                    logger.LogError("PreferenceKeyGuid is not valid");
                    return(BadRequest("PreferenceKeyGuid is not valid"));
                }

                var preferenceEvent = new DeletePreferenceKeyEvent()
                {
                    PreferenceKeyUID = preferenceKeyUid,
                    ActionUTC        = DateTime.UtcNow
                };

                bool?isSuccess = _preferenceService.DeletePreferenceKey(preferenceEvent);
                if (isSuccess.HasValue && isSuccess == true)
                {
                    return(Ok());
                }
                else if (isSuccess == null)
                {
                    logger.LogError("PreferenceKey does not exist");
                    return(BadRequest("PreferenceKey does not exist"));
                }

                logger.LogError("Unable to delete in db");
                return(BadRequest("Unable to delete in db"));
            }
            catch (Exception ex)
            {
                logger.LogError(ex.Message + ex.StackTrace);
                return(StatusCode(500, ex.Message));
            }
        }
Exemplo n.º 11
0
        /// <summary>
        /// Create an instance of the master data events. Convert to JSON.
        /// </summary>
        /// <param name="eventObject">event to be published</param>
        /// <returns>json string with event serialized</returns>
        private string BuildEventIntoObject(dynamic eventObject)
        {
            var    jsonString = string.Empty;
            string eventType  = eventObject.EventType;

            switch (eventType)
            {
            case "CreateUserPreferenceRequest":
            case "UpdateUserPreferenceRequest":
                var request = new UpsertUserPreferenceRequest();
                if (HasProperty(eventObject, "TargetUserUID"))
                {
                    request.TargetUserUID = Guid.Parse(eventObject.TargetUserUID);
                }
                if (HasProperty(eventObject, "SchemaVersion"))
                {
                    request.SchemaVersion = eventObject.SchemaVersion;
                }
                if (HasProperty(eventObject, "PreferenceJson"))
                {
                    request.PreferenceJson = eventObject.PreferenceJson;
                }
                if (HasProperty(eventObject, "PreferenceKeyName"))
                {
                    request.PreferenceKeyName = eventObject.PreferenceKeyName;
                }
                if (HasProperty(eventObject, "PreferenceKeyUID"))
                {
                    request.PreferenceKeyUID = Guid.Parse(eventObject.PreferenceKeyUID);
                }
                jsonString = JsonConvert.SerializeObject(request, JsonSettings);
                break;

            case "CreatePreferenceKeyEvent":
                var createPrefKeyEvent = new CreatePreferenceKeyEvent
                {
                    PreferenceKeyName = eventObject.PreferenceKeyName,
                    PreferenceKeyUID  = Guid.Parse(eventObject.PreferenceKeyUID)
                };
                jsonString = JsonConvert.SerializeObject(createPrefKeyEvent, JsonSettings);
                break;

            case "UpdatePreferenceKeyEvent":
                var updatePrefKeyEvent = new UpdatePreferenceKeyEvent
                {
                    PreferenceKeyName = eventObject.PreferenceKeyName,
                    PreferenceKeyUID  = Guid.Parse(eventObject.PreferenceKeyUID)
                };
                jsonString = JsonConvert.SerializeObject(updatePrefKeyEvent, JsonSettings);
                break;

            case "DeletePreferenceKeyEvent":
                var deletePrefKeyEvent = new DeletePreferenceKeyEvent
                {
                    PreferenceKeyUID = Guid.Parse(eventObject.PreferenceKeyUID)
                };
                jsonString = JsonConvert.SerializeObject(deletePrefKeyEvent, JsonSettings);
                break;
            }
            return(jsonString);
        }