public void ConflictSettingsSerializeTest() { string id = Guid.NewGuid().ToString(); CosmosConflictSettings conflictSettings = new CosmosConflictSettings() { Id = id, OperationKind = Cosmos.OperationKind.Create, ResourceType = typeof(CosmosStoredProcedureSettings) }; 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 CosmosConflictSettings conflictDeserSettings = SettingsContractTests.CosmosDeserialize <CosmosConflictSettings>(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(CosmosStoredProcedureSettings), conflictDeserSettings.ResourceType); Assert.AreEqual(conflictDeserSettings.Id, conflict.Id); }
public void ConflictsSettingsDefaults() { CosmosConflictSettings conflictSettings = new CosmosConflictSettings(); Assert.IsNull(conflictSettings.ResourceType); Assert.AreEqual(Cosmos.OperationKind.Invalid, conflictSettings.OperationKind); Assert.IsNull(conflictSettings.Id); SettingsContractTests.TypeAccessorGuard(typeof(CosmosConflictSettings), "Id", "OperationKind", "ResourceType", "SourceResourceId"); }
public void ReadConflictContentDeserializesContent() { CosmosContainerCore container = CosmosConflictTests.GetMockedContainer((request, cancellationToken) => { return(TestHandler.ReturnSuccess()); }); JObject someJsonObject = new JObject(); someJsonObject["id"] = Guid.NewGuid().ToString(); someJsonObject["someInt"] = 2; CosmosConflictSettings conflictSettings = new CosmosConflictSettings(); conflictSettings.Content = someJsonObject.ToString(); Assert.AreEqual(someJsonObject.ToString(), container.GetConflicts().ReadConflictContent <JObject>(conflictSettings).ToString()); }
public void ConflictSettingsDeSerializeTest() { string conflictResponsePayload = @"{ id: 'Conflict1', operationType: 'Replace', resourceType: 'trigger' }"; CosmosConflictSettings conflictSettings = SettingsContractTests.CosmosDeserialize <CosmosConflictSettings>(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(CosmosTriggerSettings), conflictSettings.ResourceType); Assert.AreEqual("Conflict1", conflictSettings.Id); }
public async Task DeleteSendsCorrectPayload() { const string expectedId = "something"; const string partitionKey = "pk"; Uri expectedRequestUri = new Uri($"/dbs/conflictsDb/colls/conflictsColl/conflicts/{expectedId}", UriKind.Relative); CosmosContainerCore 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()); }); CosmosConflictSettings conflictSettings = new CosmosConflictSettings(); conflictSettings.Id = expectedId; await container.Conflicts.DeleteConflictAsync(partitionKey, conflictSettings); }
public async Task CosmosConflictsStreamIteratorBuildsSettings() { string conflictResponsePayload = @"{ 'Data':[{ id: 'Conflict1', operationType: 'Replace', resourceType: 'trigger' }]}"; CosmosClient mockClient = MockCosmosUtil.CreateMockCosmosClient( (cosmosClientBuilder) => cosmosClientBuilder.WithConnectionModeDirect()); CosmosContainer container = mockClient.GetContainer("database", "container"); FeedIterator feedIterator = container.GetConflicts().GetConflictsStreamIterator(); TestHandler testHandler = new TestHandler((request, cancellationToken) => { Assert.AreEqual(OperationType.ReadFeed, request.OperationType); Assert.AreEqual(ResourceType.Conflict, request.ResourceType); CosmosResponseMessage 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; CosmosResponseMessage streamResponse = await feedIterator.FetchNextSetAsync(); Collection <CosmosConflictSettings> response = new CosmosJsonSerializerCore().FromStream <CosmosFeedResponseUtil <CosmosConflictSettings> >(streamResponse.Content).Data; Assert.AreEqual(1, response.Count()); CosmosConflictSettings responseSettings = response.FirstOrDefault(); Assert.IsNotNull(responseSettings); Assert.AreEqual("Conflict1", responseSettings.Id); Assert.AreEqual(Cosmos.OperationKind.Replace, responseSettings.OperationKind); Assert.AreEqual(typeof(CosmosTriggerSettings), responseSettings.ResourceType); }
public async Task ReadCurrentGetsCorrectRID() { const string expectedRID = "something"; const string 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); CosmosContainerCore 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()); }); CosmosConflictSettings conflictSettings = new CosmosConflictSettings(); conflictSettings.SourceResourceId = expectedRID; await container.Conflicts.ReadCurrentAsync <JObject>(partitionKey, conflictSettings); }