示例#1
0
        /// <inheritdoc />
        public IResult ValidateDomainEvent(DomainEvent domainEvent)
        {
            if (domainEvent is null)
            {
                return(Result.Error("invalid data: null event", ErrorCode.ValidationFailed));
            }

            if (string.IsNullOrWhiteSpace(domainEvent.EventType))
            {
                return(Result.Error("event does not contain EventType", ErrorCode.ValidationFailed));
            }

            var result = domainEvent switch
            {
                ConfigurationBuilt @event => ValidateDomainEvent(@event),
                DefaultEnvironmentCreated @event => ValidateDomainEvent(@event),
                EnvironmentCreated @event => ValidateDomainEvent(@event),
                EnvironmentDeleted @event => ValidateDomainEvent(@event),
                EnvironmentKeysImported @event => ValidateDomainEvent(@event),
                EnvironmentKeysModified @event => ValidateDomainEvent(@event),
                StructureCreated @event => ValidateDomainEvent(@event),
                StructureDeleted @event => ValidateDomainEvent(@event),
                StructureVariablesModified @event => ValidateDomainEvent(@event),
                _ => Result.Error($"DomainEvent '{domainEvent.GetType().Name}' can't be validated; not supported", ErrorCode.ValidationFailed)
            };

            KnownMetrics.EventsValidated.WithLabels(result.IsError ? "Invalid" : "Valid").Inc();

            return(result);
        }
示例#2
0
        public void NullCheckOperatorNegated(string envCategory, string envName, ConfigKeyAction[] actions)
        {
            var left  = new EnvironmentKeysModified(new EnvironmentIdentifier(envCategory, envName), actions);
            var right = new EnvironmentKeysModified(new EnvironmentIdentifier(envCategory, envName), actions);

            Assert.False(left != right, "left != right");
        }
示例#3
0
        public void Equality(string envCategory, string envName, ConfigKeyAction[] actions)
        {
            var left  = new EnvironmentKeysModified(new EnvironmentIdentifier(envCategory, envName), actions);
            var right = new EnvironmentKeysModified(new EnvironmentIdentifier(envCategory, envName), actions);

            Assert.True(left.Equals(right), "left.Equals(right)");
        }
示例#4
0
        public void MetadataFilled(string envCategory, string envName, ConfigKeyAction[] actions)
        {
            var domainEvent = new EnvironmentKeysModified(new EnvironmentIdentifier(envCategory, envName), actions);

            var metadata = domainEvent.GetMetadata();

            Assert.NotEmpty(metadata.Filters);
        }
示例#5
0
        public void GetHashCodeStable(string envCategory, string envName, ConfigKeyAction[] actions)
        {
            var domainEvent = new EnvironmentKeysModified(new EnvironmentIdentifier(envCategory, envName), actions);

            var hashes = Enumerable.Range(0, 1000)
                         .Select(i => domainEvent.GetHashCode())
                         .ToList();

            var example = domainEvent.GetHashCode();

            Assert.True(hashes.All(h => h == example), "hashes.All(h=>h==example)");
        }
示例#6
0
        private IResult ValidateDomainEvent(EnvironmentKeysModified @event)
        {
            var identifierResult = ValidateIdentifier(@event.Identifier);

            if (identifierResult.IsError)
            {
                return(identifierResult);
            }

            var keyResult = ValidateConfigKeyActions(@event.ModifiedKeys);

            if (keyResult.IsError)
            {
                return(keyResult);
            }

            return(Result.Success());
        }