示例#1
0
        public void Verify_cannot_create_1()
        {
            var container = GetContainerBuilder().BuildServiceProvider();
            var result    = container.GetService <IBrokerObjectFactory>()
                            .Object <ScopedParameter>()
                            .Create <string>(x =>
            {
                x.Parameter(string.Empty, "value");
                x.Targeting(t =>
                {
                    t.Component("fake_component");
                    t.VirtualHost("HareDu");
                });
            })
                            .GetResult();

            result.HasFaulted.ShouldBeTrue();
            result.Errors.Count.ShouldBe(1);
            result.DebugInfo.ShouldNotBeNull();

            ScopedParameterDefinition <string> definition = result.DebugInfo.Request.ToObject <ScopedParameterDefinition <string> >();

            definition.Component.ShouldBe("fake_component");
            definition.ParameterName.ShouldBeNullOrEmpty();
            definition.ParameterValue.ShouldBe("value");
            definition.VirtualHost.ShouldBe("HareDu");
        }
示例#2
0
        public Task <Result> Create <T>(Action <ScopedParameterCreateAction <T> > action,
                                        CancellationToken cancellationToken = default)
        {
            cancellationToken.RequestCanceled();

            var impl = new ScopedParameterCreateActionImpl <T>();

            action(impl);

            impl.Validate();

            ScopedParameterDefinition <T> definition = impl.Definition.Value;

            Debug.Assert(definition != null);

            string url = $"api/parameters/{definition.Component}/{definition.VirtualHost.ToSanitizedName()}/{definition.ParameterName}";

            if (impl.Errors.Value.Any())
            {
                return(Task.FromResult <Result>(new FaultedResult(impl.Errors.Value, new DebugInfoImpl(url, definition.ToJsonString(Deserializer.Options)))));
            }

            return(Put(url, definition, cancellationToken));
        }