public void DefaultValidation_TopicThatIsNull_ShouldThrowException()
        {
            ITopicValidator topicValidator = new TopicValidator();
            Action          action         = () => topicValidator.DefaultValidation(null as Topic);

            action.Should().Throw <NullReferenceException>().WithMessage("Topic can not be null");
        }
Ejemplo n.º 2
0
        public void TestValidationTopic()
        {
            var okTopic = TopicBuilder.New().Build();

            var resultValidation1 = new TopicValidator().Validate(okTopic);

            Assert.True(resultValidation1.IsValid);
        }
Ejemplo n.º 3
0
        public void TestValidationBadTopicNameNull()
        {
            var badTopic = TopicBuilder.New().WithName(null).Build();

            var resultValidation = new TopicValidator().Validate(badTopic);

            Assert.False(resultValidation.IsValid);
        }
        public void DefaultValidation_CourseThatIsNull_ShouldThrowException()
        {
            ITopicValidator topicValidator = new TopicValidator();
            Action          action         = () => topicValidator.DefaultValidation(new Topic()
            {
                Comments = new List <Comment>(), MainBody = "", Name = ""
            });

            action.Should().Throw <NullReferenceException>().WithMessage("Topic must have a Course");
        }
        public void DefaultValidation_NameIsEmptyOrNull_ShouldThrowException()
        {
            ITopicValidator topicValidator = new TopicValidator();
            Action          action         = () => topicValidator.DefaultValidation(new Topic()
            {
                Comments = new List <Comment>(), Course = new Course(), MainBody = ""
            });

            action.Should().Throw <ArgumentException>().WithMessage("Topic Name must not be empty");
        }
        public void DefaultValidation_MainBodyThatIsNull_ShouldThrowException()
        {
            ITopicValidator topicValidator = new TopicValidator();
            Action          action         = () => topicValidator.DefaultValidation(new Topic()
            {
                Comments = new List <Comment>(), Course = new Course(), Name = ""
            });

            action.Should().Throw <NullReferenceException>().WithMessage("Topic MainBody must be initialized");
        }
Ejemplo n.º 7
0
        public void TestValidationBadTopicNameExistsOnDatabase()
        {
            var topic = TopicBuilder.New().WithName("Nome").Build();

            new TopicRepository().Create(topic);

            var badTopic = new Topic("Nome");

            var resultValidation = new TopicValidator().Validate(badTopic);

            Assert.False(resultValidation.IsValid);
        }
        public void ValidateTopic_OnMinimalTopic()
        {
            // Arrange
            var minimalValidTopic = Mqtt.Topic.Separator.ToString();

            // Act
            Action validatingTopic = () =>
                                     TopicValidator.ValidateTopic(minimalValidTopic);

            // Assert
            validatingTopic.Should()
            .NotThrow <MqttBaseException>("because the topic is minimal yet allowed");
        }
        public void ValidateTopic_OnValidTopic()
        {
            // Arrange
            var validRawTopic = TestUtils.GenerateValidTopic();

            // Act
            Action validatingMinimalTopic = () =>
                                            TopicValidator.ValidateTopic(validRawTopic);

            // Assert
            validatingMinimalTopic.Should()
            .NotThrow <MqttBaseException>("because the topic is correctly built");
        }
        public void ValidateTopic_OnNonUtf8Topic()
        {
            // Arrange
            const string nonUtf8Topic = "non/🌱/utf/🛠/8/🐛";

            // Act
            Action validatingNonUtf8Topic = () =>
                                            TopicValidator.ValidateTopic(nonUtf8Topic);

            // Assert
            validatingNonUtf8Topic.Should()
            .Throw <InvalidTopicException>();
        }
        public void ValidateTopic_OnBlankTopic()
        {
            // Arrange
            var blankTopic = string.Empty;

            // Act
            Action validatingBlankTopic = () =>
                                          TopicValidator.ValidateTopic(blankTopic);

            // Assert
            validatingBlankTopic.Should()
            .Throw <EmptyTopicException>("because a topic can not be empty");
        }
Ejemplo n.º 12
0
        public ActionResult <Topic> Post(string name)
        {
            Topic topic = new Topic(name);

            var resultValidation = new TopicValidator().Validate(topic);

            if (!resultValidation.IsValid)
            {
                return(BadRequest(resultValidation.Errors));
            }

            topicRepository.Create(topic);

            return(CreatedAtAction("Get", new { id = topic.Id }, topic));
        }
Ejemplo n.º 13
0
        public void TestCreate()
        {
            Topic topic            = TopicBuilder.New().WithName("Skate").Build();
            var   resultValidation = new TopicValidator().Validate(topic);

            if (resultValidation.IsValid)
            {
                // Conhecimento MemoryCache
                CacheItemPolicy policy = new CacheItemPolicy();
                policy.AbsoluteExpiration = DateTimeOffset.Now.AddSeconds(60);
                Assert.IsTrue(memoryCache.Add("topic", topic, policy));

                // Produção através dos métodos
                new CreateTopic().CreateNewRegister(topic);
                var idGet = new GetTopic().GetRegisterById(topic.Id);
                Assert.IsNotNull(idGet);
            }
        }
Ejemplo n.º 14
0
        //klasa do sprawdzania, czy temat nie zawiera zakazanych slow
        public bool IsTopicCorrectOrNot(string topic)
        {
            IValidator validator = new TopicValidator();
            bool       isCorrect = validator.IsTopicCorrect(topic);

            //aby przetestowac za pomoca Moq - odkomentowac te linie
            //bool isCorrect = this._validator.IsTopicCorrect(topic);

            //gdy temat jest nieprawidlowy - zwracane jest false
            if (isCorrect == false || topic == "")
            {
                return(false);
            }
            else
            {
                return(true);
            }
        }
        public void ValidateTopic_OnMultiLevelWildcardsBeforeTopicEnd()
        {
            // Arrange
            var topicWithMultiLevelWildcardBeforeEnd = $"{Mqtt.Topic.Separator}{Mqtt.Wildcard.MultiLevel}";

            topicWithMultiLevelWildcardBeforeEnd += $"{Mqtt.Topic.Separator}{TestUtils.GenerateValidTopic()}";

            // Act
            Action validatingTopicWithMultiLevelWildcardsBeforeEnd = () =>
                                                                     TopicValidator.ValidateTopic(topicWithMultiLevelWildcardBeforeEnd);

            // Assert
            validatingTopicWithMultiLevelWildcardsBeforeEnd.Should()
            .Throw <IllegalTopicConstructionException>()
            .Where(_ =>
                   _.Message.Contains(ExceptionMessages.TopicAfterWildcard),
                   "because a multi-level wildcard may only be used anywhere but at the end of a topic");
        }
        public void ValidateTopic_OnMultiLevelWildcardsTopic()
        {
            // Arrange
            var multiLevelWildcardsTopic = TestUtils.GenerateValidTopic(
                Mqtt.Topic.MaximumAllowedLevels - 2);

            // Appending '/#/#'
            multiLevelWildcardsTopic += string.Concat(
                Enumerable.Repeat(
                    $"{Mqtt.Topic.Separator}{Mqtt.Wildcard.MultiLevel}", 2));

            // Act
            Action validatingMultiLevelWildcardTopic = () =>
                                                       TopicValidator.ValidateTopic(multiLevelWildcardsTopic);

            // Assert
            validatingMultiLevelWildcardTopic.Should()
            .Throw <IllegalTopicConstructionException>();
        }
Ejemplo n.º 17
0
        public ActionResult <Topic> Put(Guid id, string name)
        {
            var resultValidation = new TopicExistValidator().Validate(id);

            if (!resultValidation.IsValid)
            {
                return(BadRequest(resultValidation.Errors));
            }

            Topic topic = new Topic(id, name);

            resultValidation = new TopicValidator().Validate(topic);

            if (!resultValidation.IsValid)
            {
                return(BadRequest(resultValidation.Errors));
            }

            return(Ok(topicRepository.Update(topic)));
        }
Ejemplo n.º 18
0
        /// <summary>
        /// Create a new MQTT Topic from a raw string
        /// <para>
        /// If <paramref name="rawTopic"/> is empty, the minimal topic will be created
        /// (made only of a single <see cref="Mqtt.Topic.Separator"/>)
        /// </para>
        /// </summary>
        /// <param name="rawTopic">Raw MQTT topic</param>
        /// <remarks>
        /// Any trailing separator will be removed
        /// </remarks>
        public Topic(string rawTopic)
        {
            // Create minimal topic on empty string or already minimal raw string
            if (string.IsNullOrEmpty(rawTopic) ||
                rawTopic == Mqtt.Topic.Separator.ToString())
            {
                Value = Mqtt.Topic.Separator.ToString();
                return;
            }

            TopicValidator.ValidateTopic(rawTopic);

            // Remove trailing "/" if any
            if (rawTopic.Last() == Mqtt.Topic.Separator)
            {
                rawTopic = rawTopic.Remove(rawTopic.Length - 1);
            }

            Value = rawTopic;
        }
Ejemplo n.º 19
0
        public IActionResult CreateTopic(string name, Guid categoryId)
        {
            var category = getByIdCategoryUseCase.GetById(categoryId);

            if (category == null)
            {
                return(BadRequest("Category PK not found"));
            }

            var topic = new Domain.Entities.Topic(name, category);

            var validationResult = new TopicValidator().Validate(topic);

            if (!validationResult.IsValid)
            {
                return(BadRequest(validationResult.Errors));
            }

            addTopicUseCase.Add(topic);
            return(new OkObjectResult(topic));
        }