Exemple #1
0
        public void ConflictSettingsSerializeTest()
        {
            string id = Guid.NewGuid().ToString();

            ConflictProperties conflictSettings = new ConflictProperties()
            {
                Id            = id,
                OperationKind = Cosmos.OperationKind.Create,
                ResourceType  = typeof(StoredProcedureProperties)
            };

            Conflict conflict = new Conflict()
            {
                Id            = id,
                OperationKind = OperationKind.Create,
                ResourceType  = typeof(StoredProcedure)
            };

            string cosmosSerialized = SettingsContractTests.CosmosSerialize(conflictSettings);
            string directSerialized = SettingsContractTests.DirectSerialize(conflict);

            // Swap de-serialize and validate
            ConflictProperties conflictDeserSettings = SettingsContractTests.CosmosDeserialize <ConflictProperties>(directSerialized);
            Conflict           conflictDeser         = SettingsContractTests.DirectDeSerialize <Conflict>(cosmosSerialized);

            Assert.AreEqual(conflictDeserSettings.Id, conflictDeser.Id);
            Assert.AreEqual((int)conflictDeserSettings.OperationKind, (int)conflictDeser.OperationKind);
            Assert.AreEqual(typeof(StoredProcedure), conflictDeser.ResourceType);
            Assert.AreEqual(typeof(StoredProcedureProperties), conflictDeserSettings.ResourceType);
            Assert.AreEqual(conflictDeserSettings.Id, conflict.Id);
        }
Exemple #2
0
        public void ConflictsSettingsDefaults()
        {
            ConflictProperties conflictSettings = new ConflictProperties();

            Assert.IsNull(conflictSettings.ResourceType);
            Assert.AreEqual(Cosmos.OperationKind.Invalid, conflictSettings.OperationKind);
            Assert.IsNull(conflictSettings.Id);

            SettingsContractTests.TypeAccessorGuard(typeof(ConflictProperties), "Id", "OperationKind", "ResourceType", "SourceResourceId");
        }
Exemple #3
0
        public async Task CosmosConflictsStreamIteratorBuildsSettings()
        {
            string conflictResponsePayload = @"{ ""Conflicts"":[{
                 ""id"": ""Conflict1"",
                 ""operationType"": ""Replace"",
                 ""resourceType"": ""trigger""
                }]}";

            JObject jObject = JObject.Parse(conflictResponsePayload);

            using CosmosClient mockClient = MockCosmosUtil.CreateMockCosmosClient(
                      (cosmosClientBuilder) => cosmosClientBuilder.WithConnectionModeDirect());

            Container    container    = mockClient.GetContainer("database", "container");
            FeedIterator feedIterator = container.Conflicts.GetConflictQueryStreamIterator();

            TestHandler testHandler = new TestHandler((request, cancellationToken) =>
            {
                Assert.AreEqual(OperationType.ReadFeed, request.OperationType);
                Assert.AreEqual(ResourceType.Conflict, request.ResourceType);
                ResponseMessage handlerResponse = TestHandler.ReturnSuccess().Result;
                MemoryStream stream             = new MemoryStream();
                StreamWriter writer             = new StreamWriter(stream);
                writer.Write(conflictResponsePayload);
                writer.Flush();
                stream.Position = 0;

                handlerResponse.Content = stream;
                return(Task.FromResult(handlerResponse));
            });

            mockClient.RequestHandler.InnerHandler = testHandler;
            ResponseMessage streamResponse = await feedIterator.ReadNextAsync();

            IEnumerable <ConflictProperties> response = CosmosFeedResponseSerializer.FromFeedResponseStream <ConflictProperties>(
                MockCosmosUtil.Serializer,
                streamResponse.Content);

            Assert.AreEqual(1, response.Count());

            ConflictProperties responseSettings = response.FirstOrDefault();

            Assert.IsNotNull(responseSettings);

            Assert.AreEqual("Conflict1", responseSettings.Id);
            Assert.AreEqual(Cosmos.OperationKind.Replace, responseSettings.OperationKind);
            Assert.AreEqual(typeof(TriggerProperties), responseSettings.ResourceType);
        }
        public void ReadConflictContentDeserializesContent()
        {
            ContainerCore container = CosmosConflictTests.GetMockedContainer((request, cancellationToken) => {
                return(TestHandler.ReturnSuccess());
            });

            JObject someJsonObject = new JObject();

            someJsonObject["id"]      = Guid.NewGuid().ToString();
            someJsonObject["someInt"] = 2;

            ConflictProperties conflictSettings = new ConflictProperties();

            conflictSettings.Content = someJsonObject.ToString();

            Assert.AreEqual(someJsonObject.ToString(), container.Conflicts.ReadConflictContent <JObject>(conflictSettings).ToString());
        }
Exemple #5
0
        public void ConflictSettingsDeSerializeTest()
        {
            string conflictResponsePayload = @"{
                 id: 'Conflict1',
                 operationType: 'Replace',
                 resourceType: 'trigger'
                }";

            ConflictProperties conflictSettings = SettingsContractTests.CosmosDeserialize <ConflictProperties>(conflictResponsePayload);
            Conflict           conflict         = SettingsContractTests.DirectDeSerialize <Conflict>(conflictResponsePayload);

            Assert.AreEqual(conflict.Id, conflictSettings.Id);
            Assert.AreEqual((int)conflictSettings.OperationKind, (int)conflict.OperationKind);
            Assert.AreEqual(typeof(Trigger), conflict.ResourceType);
            Assert.AreEqual(typeof(TriggerProperties), conflictSettings.ResourceType);

            Assert.AreEqual("Conflict1", conflictSettings.Id);
        }
        public async Task CosmosConflictsStreamIteratorBuildsSettings()
        {
            string conflictResponsePayload = @"{ 'Data':[{
                 id: 'Conflict1',
                 operationType: 'Replace',
                 resourceType: 'trigger'
                }]}";

            CosmosClient mockClient = MockCosmosUtil.CreateMockCosmosClient(
                (cosmosClientBuilder) => cosmosClientBuilder.WithConnectionModeDirect());

            Container    container    = mockClient.GetContainer("database", "container");
            FeedIterator feedIterator = container.Conflicts.GetConflictsStreamIterator();

            TestHandler testHandler = new TestHandler((request, cancellationToken) =>
            {
                Assert.AreEqual(OperationType.ReadFeed, request.OperationType);
                Assert.AreEqual(ResourceType.Conflict, request.ResourceType);
                ResponseMessage handlerResponse = TestHandler.ReturnSuccess().Result;
                MemoryStream stream             = new MemoryStream();
                StreamWriter writer             = new StreamWriter(stream);
                writer.Write(conflictResponsePayload);
                writer.Flush();
                stream.Position = 0;

                handlerResponse.Content = stream;
                return(Task.FromResult(handlerResponse));
            });

            mockClient.RequestHandler.InnerHandler = testHandler;
            ResponseMessage streamResponse = await feedIterator.ReadNextAsync();

            Collection <ConflictProperties> response = new CosmosJsonSerializerCore().FromStream <CosmosFeedResponseUtil <ConflictProperties> >(streamResponse.Content).Data;

            Assert.AreEqual(1, response.Count());

            ConflictProperties responseSettings = response.FirstOrDefault();

            Assert.IsNotNull(responseSettings);

            Assert.AreEqual("Conflict1", responseSettings.Id);
            Assert.AreEqual(Cosmos.OperationKind.Replace, responseSettings.OperationKind);
            Assert.AreEqual(typeof(TriggerProperties), responseSettings.ResourceType);
        }
        public async Task DeleteSendsCorrectPayload()
        {
            const string expectedId = "something";

            Cosmos.PartitionKey partitionKey = new Cosmos.PartitionKey("pk");
            Uri           expectedRequestUri = new Uri($"/dbs/conflictsDb/colls/conflictsColl/conflicts/{expectedId}", UriKind.Relative);
            ContainerCore container          = CosmosConflictTests.GetMockedContainer((request, cancellationToken) => {
                Assert.AreEqual(OperationType.Delete, request.OperationType);
                Assert.AreEqual(ResourceType.Conflict, request.ResourceType);
                Assert.AreEqual(expectedRequestUri, request.RequestUri);
                return(TestHandler.ReturnSuccess());
            });

            ConflictProperties conflictSettings = new ConflictProperties();

            conflictSettings.Id = expectedId;

            await container.Conflicts.DeleteAsync(conflictSettings, partitionKey);
        }
        public async Task ReadCurrentGetsCorrectRID()
        {
            const string expectedRID = "something";

            Cosmos.PartitionKey partitionKey = new Cosmos.PartitionKey("pk");
            // Using "test" as container name because the Mocked DocumentClient has it hardcoded
            Uri           expectedRequestUri = new Uri($"dbs/conflictsDb/colls/test/docs/{expectedRID}", UriKind.Relative);
            ContainerCore container          = CosmosConflictTests.GetMockedContainer((request, cancellationToken) => {
                Assert.AreEqual(OperationType.Read, request.OperationType);
                Assert.AreEqual(ResourceType.Document, request.ResourceType);
                Assert.AreEqual(expectedRequestUri, request.RequestUri);
                return(TestHandler.ReturnSuccess());
            });

            ConflictProperties conflictSettings = new ConflictProperties();

            conflictSettings.SourceResourceId = expectedRID;

            await container.Conflicts.ReadCurrentAsync <JObject>(conflictSettings, partitionKey);
        }