Esempio n. 1
0
        public void AzureEventStore_Deserializes_Events()
        {
            var id = Guid.NewGuid();
            var events = new List<EventStream>
            {
                new EventStream(id, 2)
                {
                    EventData = Resources.JsonSerializedDebitEvent,
                    SequenceEnd = 2
                },
                new EventStream(id, 1)
                {
                    EventData = Resources.JsonSerializedNewAccountEvent,
                    SequenceEnd = 1
                }
            };

            var database = new Mock<IAzureStorageRepository>();
            database.Setup(db => db.GetEventStream(It.IsAny<Guid>(), It.IsAny<long>())).Returns(events);

            var store = new AzureTableEventStore
            {
                GetRepository = () => database.Object
            };

            var eventStream = store.GetEvents(id, 1).ToList();

            Assert.AreEqual(2, eventStream.Count());
            Assert.AreEqual(1, eventStream[0].Sequence);
            Assert.AreEqual(2, eventStream[1].Sequence);
            Assert.IsInstanceOf<AccountCreatedEvent>(eventStream[0]);
            Assert.IsInstanceOf<AccountDebitedEvent>(eventStream[1]);
        }
        public void AzureEventStore_Deserializes_Events()
        {
            var id     = Guid.NewGuid();
            var events = new List <EventStream>
            {
                new EventStream(id, 2)
                {
                    EventData   = Resources.JsonSerializedDebitEvent,
                    SequenceEnd = 2
                },
                new EventStream(id, 1)
                {
                    EventData   = Resources.JsonSerializedNewAccountEvent,
                    SequenceEnd = 1
                }
            };

            var database = new Mock <IAzureStorageRepository>();

            database.Setup(db => db.GetEventStream(It.IsAny <Guid>(), It.IsAny <long>())).Returns(events);

            var store = new AzureTableEventStore
            {
                GetRepository = () => database.Object
            };

            var eventStream = store.GetEvents(id, 1).ToList();

            Assert.AreEqual(2, eventStream.Count());
            Assert.AreEqual(1, eventStream[0].Sequence);
            Assert.AreEqual(2, eventStream[1].Sequence);
            Assert.IsInstanceOf <AccountCreatedEvent>(eventStream[0]);
            Assert.IsInstanceOf <AccountDebitedEvent>(eventStream[1]);
        }
Esempio n. 3
0
        /// <summary>
        /// Validates deployment Id, in case it is needed
        /// </summary>
        /// <param name="credentials">Azure/Mds Table credentials</param>
        /// <param name="tableNamePrefix">Table name prefix</param>
        /// <param name="providedId">Caller provided deployment Id</param>
        /// <param name="validatedId">Validated deployment Id</param>
        private static void ValidateDeploymentId(
            IStorageConnection credentials,
            string tableNamePrefix,
            string providedId,
            out string validatedId)
        {
            validatedId = null;

            string deploymentIdTableName = tableNamePrefix + DeploymentTableName;
            bool   deploymentTableHasEntities;

            bool deploymentTableExists = credentials.ValidateTable(deploymentIdTableName, out deploymentTableHasEntities);

            if (!deploymentTableExists || !deploymentTableHasEntities)
            {
                return;
            }

            var throwAway = new AzureTableEventStore(credentials, tableNamePrefix, providedId);

            var deployments = throwAway.GetDeploymentList();

            var ids = deployments.Select(x => x.DeploymentId).ToList();

            if (providedId != null)
            {
                if (providedId.Length < MinimumLengthToProvide)
                {
                    throw new InvalidOperationException(
                              string.Format(
                                  StringResources.EventStoreError_DeploymentIdNotLongEnough, MinimumLengthToProvide));
                }

                validatedId = ids.Find(providedId.StartsWith);

                if (string.IsNullOrEmpty(validatedId))
                {
                    throw new InvalidOperationException(StringResources.EventStoreError_DeploymentIdDoesNotMatch);
                }
            }
            else
            {
                if (ids.Count > 1)
                {
                    throw new InvalidOperationException(StringResources.EventStoreError_AmbiguousDeploymentId);
                }

                validatedId = ids.First();
            }
        }
Esempio n. 4
0
        /// <summary>
        /// Initializes a new instance of the <see cref="BaseTest"/> class.
        /// </summary>
        public BaseTest()
        {
            JsonConvert.DefaultSettings = CqrsSettings.JsonConfig;

            BusMock = new Mock <IEventBus>();

            var cfg = new TestsConfiguration();

            Store = new AzureTableEventStore(cfg.StorageAccount.ConnectionString);

            var account     = CloudStorageAccount.Parse(cfg.StorageAccount.ConnectionString);
            var tableClient = account.CreateCloudTableClient();

            AggregateTable = tableClient.GetTableReference("AggregateStore");
            EventTable     = tableClient.GetTableReference(nameof(EventStore));
        }
Esempio n. 5
0
        public void AzureEventStore_Serialized_Events()
        {
            var database = new Mock<IAzureStorageRepository>();
            database.Setup(db => db.InsertEvents(It.IsAny<EventStream>()));

            var store = new AzureTableEventStore
            {
                GetRepository = () => database.Object
            };

            var events = new List<DomainEvent>
            {
                new AccountCreatedEvent(Guid.NewGuid(), 100),
                new AccountDebitedEvent(Guid.NewGuid(), 50)
            };

            store.Insert(Guid.NewGuid(), events);

            database.Verify(db => db.InsertEvents(It.IsAny<EventStream>()), Times.Once);
        }
        public void AzureEventStore_Serialized_Events()
        {
            var database = new Mock <IAzureStorageRepository>();

            database.Setup(db => db.InsertEvents(It.IsAny <EventStream>()));

            var store = new AzureTableEventStore
            {
                GetRepository = () => database.Object
            };

            var events = new List <DomainEvent>
            {
                new AccountCreatedEvent(Guid.NewGuid(), 100),
                new AccountDebitedEvent(Guid.NewGuid(), 50)
            };

            store.Insert(Guid.NewGuid(), events);

            database.Verify(db => db.InsertEvents(It.IsAny <EventStream>()), Times.Once);
        }