Esempio n. 1
0
        public async Task Verify_PostDummyModel_ResponseStatusCode_BadRequest_With_Message_Name_Is_Already_In_Use()
        {
            // Arrange
            this._userBuilder.BuildCustomAdminUser(userName: "******", email: "*****@*****.**");

            var repeatedName = "Dummy Model #123";

            this._dummyModelBuilder.BuildCustomDummyModel(repeatedName);

            // Act
            var dto = new CreateDummyModelDto
            {
                Name = repeatedName,
            };

            await this._client.Authenticate(this._accountsService, "Lidia");

            var(response, deserializedResponse) = await this._client.PostAsync <DummyModelOutput>($"/api/v1/DummyModels", dto);

            // Assert
            response.StatusCode.Should().Be(HttpStatusCode.BadRequest);
            deserializedResponse.Success.Should().BeFalse();
            deserializedResponse.Message.Should().Be($"{ResponseMessages.AlreadyExistAnElementWithTheSameUniqueProperty} name.");
            deserializedResponse.Data.Should().BeNull();
        }
Esempio n. 2
0
        public void Should_Map_From_CreateDummyModelDto_To_DummyModel(string name)
        {
            // Arrange

            // Act
            var createDummyModelDto = new CreateDummyModelDto()
            {
                Name = name,
            };
            var dummyModel = this._mapper.Map <DummyModel>(createDummyModelDto);

            // Assert
            dummyModel.Name.Should().Be(name);
        }
Esempio n. 3
0
        public void Should_Throw_Validation_Exception_For_Empty_Name()
        {
            // Arrange
            var dto = new CreateDummyModelDto();

            // Act
            var validator        = new CreateDummyModelDtoValidator();
            var validationResult = validator.Validate(dto);

            // Assert
            validationResult.IsValid.Should().Be(false);
            validationResult.Errors[0].ErrorMessage.Should().Be("'Name' must not be empty.");
            validationResult.Errors[0].ErrorCode.Should().Be("NotEmptyValidator");
            validationResult.Errors[0].PropertyName.Should().Be("Name");
            validationResult.Errors[0].Severity.Should().Be(Severity.Error);
        }
Esempio n. 4
0
        public async Task Verify_PostDummyModel_ResponseStatusCode_Unauthorized_With_Message_Unauthorized()
        {
            // Arrange

            // Act
            var dto = new CreateDummyModelDto
            {
            };

            var(response, deserializedResponse) = await this._client.PostAsync <DummyModelOutput>($"/api/v1/DummyModels", dto);

            // Assert
            response.StatusCode.Should().Be(HttpStatusCode.Unauthorized);
            deserializedResponse.Success.Should().BeFalse();
            deserializedResponse.Message.Should().Be(ResponseMessages.AuthenticationInvalid);
            deserializedResponse.Data.Should().BeNull();
        }
Esempio n. 5
0
        public async Task Verify_PostDummyModel_ResponseStatusCode_BadRequest_With_Message_Name_Is_Empty()
        {
            // Arrange
            this._userBuilder.BuildCustomModeratorUser(userName: "******", email: "*****@*****.**");

            // Act
            var dto = new CreateDummyModelDto
            {
            };

            await this._client.Authenticate(this._accountsService, "David");

            var(response, deserializedResponse) = await this._client.PostAsync <DummyModelOutput>($"/api/v1/DummyModels", dto);

            // Assert
            response.StatusCode.Should().Be(HttpStatusCode.BadRequest);
            deserializedResponse.Success.Should().BeFalse();
            deserializedResponse.Message.Should().Be("'Name' must not be empty.");
            deserializedResponse.Data.Should().BeNull();
        }
Esempio n. 6
0
        public async Task Verify_PostDummyModel_ResponseStatusCode_Forbidden_With_Message_Forbidden_For_Basic_Users()
        {
            // Arrange
            this._userBuilder.BuildCustomBasicUser(userName: "******", email: "*****@*****.**");

            // Act
            var dto = new CreateDummyModelDto
            {
            };

            await this._client.Authenticate(this._accountsService, "Nicolas");

            var(response, deserializedResponse) = await this._client.PostAsync <DummyModelOutput>($"/api/v1/DummyModels", dto);

            // Assert
            response.StatusCode.Should().Be(HttpStatusCode.Forbidden);
            deserializedResponse.Success.Should().BeFalse();
            deserializedResponse.Message.Should().Be(ResponseMessages.AuthorizationInvalid);
            deserializedResponse.Data.Should().BeNull();
        }
Esempio n. 7
0
        public void Should_Throw_Validation_Exception_For_Larger_Name()
        {
            // Arrange
            string invalidName = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do" +
                                 "eiusmod tempor incididunt ut labore et dolore magna aliqua.";
            var dto = new CreateDummyModelDto()
            {
                Name = invalidName,
            };

            // Act
            var validator        = new CreateDummyModelDtoValidator();
            var validationResult = validator.Validate(dto);

            // Assert
            validationResult.IsValid.Should().Be(false);
            validationResult.Errors[0].ErrorMessage.Should().Be($"The length of 'Name' must be" +
                                                                $" {DummyModelValidationRules.NameMaximumLength} characters or fewer." +
                                                                $" You entered {invalidName.Length} characters.");
            validationResult.Errors[0].ErrorCode.Should().Be("MaximumLengthValidator");
            validationResult.Errors[0].PropertyName.Should().Be("Name");
            validationResult.Errors[0].Severity.Should().Be(Severity.Error);
        }
Esempio n. 8
0
        public async Task Verify_PostDummyModel_OK_ResponseStatusCode_With_DummyModelOutput_As_Response_Content()
        {
            // Arrange
            this._userBuilder.BuildCustomAdminUser(userName: "******", email: "*****@*****.**");

            // Act
            string newDummyModelName = "Dummy Model #748";
            var    dto = new CreateDummyModelDto
            {
                Name = newDummyModelName,
            };

            await this._client.Authenticate(this._accountsService, "Julia");

            var(response, deserializedResponse) = await this._client.PostAsync <DummyModelOutput>($"/api/v1/DummyModels", dto);

            // Assert
            response.StatusCode.Should().Be(HttpStatusCode.Created);
            deserializedResponse.Success.Should().BeTrue();
            deserializedResponse.Message.Should().BeNull();
            deserializedResponse.Data.Name.Should().Be(newDummyModelName);

            this._context.DummyModel.AsNoTracking().Where(d => d.Id == deserializedResponse.Data.Id).Single().Name.Should().Be(newDummyModelName);
        }
Esempio n. 9
0
        public async Task Verify_PostDummyModel_ResponseStatusCode_BadRequest_With_Message_Name_Is_Too_Long()
        {
            // Arrange
            this._userBuilder.BuildCustomAdminUser(userName: "******", email: "*****@*****.**");

            // Act
            string longName = Utilities.RandomStringGenerator(DummyModelValidationRules.NameMaximumLength + 1);

            var dto = new CreateDummyModelDto
            {
                Name = longName,
            };

            await this._client.Authenticate(this._accountsService, "Robert");

            var(response, deserializedResponse) = await this._client.PostAsync <DummyModelOutput>($"/api/v1/DummyModels", dto);

            // Assert
            response.StatusCode.Should().Be(HttpStatusCode.BadRequest);
            deserializedResponse.Success.Should().BeFalse();
            deserializedResponse.Message.Should().Contain($"The length of 'Name' must be " +
                                                          $"{DummyModelValidationRules.NameMaximumLength} characters or fewer. You entered {longName.Length}");
            deserializedResponse.Data.Should().BeNull();
        }