Example #1
0
        public void GivenAResourceWithoutInvalidId_WhenValidatingUpsert_ThenInvalidShouldBeReturned(string id)
        {
            var validator = new UpsertResourceValidator(new NarrativeHtmlSanitizer(NullLogger <NarrativeHtmlSanitizer> .Instance), new ModelAttributeValidator());
            var resource  = Samples.GetDefaultObservation()
                            .UpdateId(id);

            var upsertResourceRequest = new UpsertResourceRequest(resource);
            var result = validator.Validate(upsertResourceRequest);

            Assert.False(result.IsValid);
        }
        public void GivenConfigOrHeader_WhenValidatingUpsert_ThenProfileValidationShouldOrShouldntBeCalled(bool configValue, bool?headerValue, bool shouldCallProfileValidation)
        {
            var contextAccessor  = Substitute.For <RequestContextAccessor <IFhirRequestContext> >();
            var profileValidator = Substitute.For <IProfileValidator>();
            var config           = Substitute.For <IOptions <CoreFeatureConfiguration> >();

            config.Value.Returns(new CoreFeatureConfiguration()
            {
                ProfileValidationOnUpdate = configValue
            });
            var headers = new Dictionary <string, StringValues>();

            if (headerValue != null)
            {
                headers.Add(KnownHeaders.ProfileValidation, new StringValues(headerValue.Value.ToString()));
            }

            contextAccessor.RequestContext.RequestHeaders.Returns(headers);
            var validator = new UpsertResourceValidator(
                new ModelAttributeValidator(),
                new NarrativeHtmlSanitizer(NullLogger <NarrativeHtmlSanitizer> .Instance),
                profileValidator,
                contextAccessor,
                config);
            var resource = Samples.GetDefaultObservation();

            var upsertResourceRequest = new UpsertResourceRequest(resource);

            validator.Validate(upsertResourceRequest);

            if (shouldCallProfileValidation)
            {
                profileValidator.Received().TryValidate(Arg.Any <ITypedElement>(), Arg.Any <string>());
            }
            else
            {
                profileValidator.DidNotReceive().TryValidate(Arg.Any <ITypedElement>(), Arg.Any <string>());
            }
        }
        public void GivenAResourceWithoutInvalidId_WhenValidatingUpsert_ThenInvalidShouldBeReturned(string id)
        {
            var contextAccessor  = Substitute.For <RequestContextAccessor <IFhirRequestContext> >();
            var profileValidator = Substitute.For <IProfileValidator>();
            var config           = Substitute.For <IOptions <CoreFeatureConfiguration> >();

            config.Value.Returns(new CoreFeatureConfiguration());
            contextAccessor.RequestContext.RequestHeaders.Returns(new Dictionary <string, StringValues>());
            var validator = new UpsertResourceValidator(
                new ModelAttributeValidator(),
                new NarrativeHtmlSanitizer(NullLogger <NarrativeHtmlSanitizer> .Instance),
                profileValidator,
                contextAccessor,
                config);
            var resource = Samples.GetDefaultObservation()
                           .UpdateId(id);

            var upsertResourceRequest = new UpsertResourceRequest(resource);
            var result = validator.Validate(upsertResourceRequest);

            Assert.False(result.IsValid);
        }