public async Task ExecuteAsync_UsesDefaults_ForProblemDetails()
    {
        // Arrange
        var details     = new HttpValidationProblemDetails();
        var result      = new ValidationProblem(details);
        var stream      = new MemoryStream();
        var httpContext = new DefaultHttpContext
        {
            RequestServices = CreateServices(),
            Response        =
            {
                Body = stream,
            },
        };

        // Act
        await result.ExecuteAsync(httpContext);

        // Assert
        Assert.Equal(StatusCodes.Status400BadRequest, httpContext.Response.StatusCode);
        Assert.Equal(details, result.ProblemDetails);
        stream.Position = 0;
        var responseDetails = JsonSerializer.Deserialize <ProblemDetails>(stream);

        Assert.Equal("https://tools.ietf.org/html/rfc7231#section-6.5.1", responseDetails.Type);
        Assert.Equal("One or more validation errors occurred.", responseDetails.Title);
        Assert.Equal(StatusCodes.Status400BadRequest, responseDetails.Status);
    }
Esempio n. 2
0
        public ValidationResult ValidatePlayerPurchase(Team team, Player playerIn)
        {
            List <ValidationProblem> problems = new List <ValidationProblem>();

            ValidationProblem formationError = ValidateFormation(team, playerIn);

            if (formationError != null)
            {
                problems.Add(formationError);
            }

            ValidationProblem teamPlayerCountError = ValidateTeamPlayerCount(team, playerIn);

            if (teamPlayerCountError != null)
            {
                problems.Add(teamPlayerCountError);
            }

            return(new ValidationResult(problems));
        }
Esempio n. 3
0
        public void SingleTest()
        {
            var project = new Mock <IProject>();

            _context.Setup(r => r.AllProjects).Returns(new[] { project.Object });

            var problem = new ValidationProblem("a")
            {
                Severity = ProblemSeverity.ProjectWarning
            };

            var validator = new Mock <IProjectValidator>();

            validator.Setup(v => v.Validate(It.IsAny <IExecutionContext>(), project.Object)).Returns(new[] { problem });

            _factory.Setup(f => f.BuildProjectValidationSequence()).Returns(new[] { validator.Object });

            var result = _validator.Validate(_context.Object);

            Assert.IsNotNull(result);
            Assert.That(result.Single(), Is.EqualTo(problem));
        }
Esempio n. 4
0
        public void BreakOnFatalTest()
        {
            var project1 = new Mock <IProject>();
            var project2 = new Mock <IProject>();

            _context.Setup(r => r.AllProjects).Returns(new[] { project1.Object, project2.Object });

            var fatal = new ValidationProblem("a")
            {
                Severity = ProblemSeverity.ProjectFatal
            };
            var warning = new ValidationProblem("a")
            {
                Severity = ProblemSeverity.ProjectWarning
            };

            var v1 = new Mock <IProjectValidator>();

            v1.Setup(v => v.Validate(It.IsAny <IExecutionContext>(), project1.Object)).Returns(new[] { fatal });

            var v2 = new Mock <IProjectValidator>();

            v2.Setup(v => v.Validate(It.IsAny <IExecutionContext>(), project1.Object)).Returns(new[] { warning });

            _factory.Setup(f => f.BuildProjectValidationSequence()).Returns(new[] { v1.Object, v2.Object });

            var result = _validator.Validate(_context.Object);

            Assert.IsNotNull(result);
            Assert.That(result.Single(), Is.EqualTo(fatal));

            v1.Verify(v => v.Validate(It.IsAny <IExecutionContext>(), project1.Object), Times.Once());
            v1.Verify(v => v.Validate(It.IsAny <IExecutionContext>(), project2.Object), Times.Once());

            v2.Verify(v => v.Validate(It.IsAny <IExecutionContext>(), project1.Object), Times.Never());
            v2.Verify(v => v.Validate(It.IsAny <IExecutionContext>(), project2.Object), Times.Once());
        }
Esempio n. 5
0
 private string ProblemToString(ValidationProblem problem)
 {
     return(problem.ToString());
 }