public async Task EncryptionCreateItem() { TestDoc testDoc = await EncryptionTests.CreateItemAsync(EncryptionTests.itemContainerCore, EncryptionTests.dekId, TestDoc.PathsToEncrypt); await EncryptionTests.VerifyItemByReadAsync(EncryptionTests.itemContainerCore, testDoc); await EncryptionTests.VerifyItemByReadStreamAsync(EncryptionTests.itemContainerCore, testDoc); TestDoc expectedDoc = new TestDoc(testDoc); await EncryptionTests.ValidateQueryResultsAsync( EncryptionTests.itemContainerCore, "SELECT * FROM c", expectedDoc); await EncryptionTests.ValidateQueryResultsAsync( EncryptionTests.itemContainerCore, string.Format( "SELECT * FROM c where c.PK = '{0}' and c.id = '{1}' and c.NonSensitive = '{2}'", expectedDoc.PK, expectedDoc.Id, expectedDoc.NonSensitive), expectedDoc); await EncryptionTests.ValidateQueryResultsAsync( EncryptionTests.itemContainerCore, string.Format("SELECT * FROM c where c.Sensitive = '{0}'", testDoc.Sensitive), expectedDoc : null); await EncryptionTests.ValidateQueryResultsAsync( EncryptionTests.itemContainerCore, queryDefinition : new QueryDefinition( "select * from c where c.id = @theId and c.PK = @thePK") .WithParameter("@theId", expectedDoc.Id) .WithParameter("@thePK", expectedDoc.PK), expectedDoc : expectedDoc); expectedDoc.Sensitive = null; await EncryptionTests.ValidateQueryResultsAsync( EncryptionTests.itemContainerCore, "SELECT c.id, c.PK, c.Sensitive, c.NonSensitive FROM c", expectedDoc); await EncryptionTests.ValidateQueryResultsAsync( EncryptionTests.itemContainerCore, "SELECT c.id, c.PK, c.NonSensitive FROM c", expectedDoc); await EncryptionTests.ValidateSprocResultsAsync( EncryptionTests.itemContainerCore, expectedDoc); }
public async Task EncryptionRudItem() { TestDoc testDoc = await EncryptionTests.UpsertItemAsync( EncryptionTests.containerCore, TestDoc.Create(), EncryptionTests.dekId, TestDoc.PathsToEncrypt, HttpStatusCode.Created); await EncryptionTests.VerifyItemByReadAsync(EncryptionTests.containerCore, testDoc); testDoc.NonSensitive = Guid.NewGuid().ToString(); testDoc.Sensitive = Guid.NewGuid().ToString(); ItemResponse <TestDoc> upsertResponse = await EncryptionTests.UpsertItemAsync( EncryptionTests.containerCore, testDoc, EncryptionTests.dekId, TestDoc.PathsToEncrypt, HttpStatusCode.OK); TestDoc updatedDoc = upsertResponse.Resource; await EncryptionTests.VerifyItemByReadAsync(EncryptionTests.containerCore, updatedDoc); updatedDoc.NonSensitive = Guid.NewGuid().ToString(); updatedDoc.Sensitive = Guid.NewGuid().ToString(); TestDoc replacedDoc = await EncryptionTests.ReplaceItemAsync( EncryptionTests.containerCore, updatedDoc, EncryptionTests.dekId, TestDoc.PathsToEncrypt, upsertResponse.ETag); await EncryptionTests.VerifyItemByReadAsync(EncryptionTests.containerCore, replacedDoc); await EncryptionTests.DeleteItemAsync(EncryptionTests.containerCore, replacedDoc); }
public async Task EncryptionTransactionBatchCrud() { string partitionKey = "thePK"; string dek1 = EncryptionTests.dekId; string dek2 = "dek2Forbatch"; await EncryptionTests.CreateDekAsync(EncryptionTests.dekProvider, dek2); TestDoc doc1ToCreate = TestDoc.Create(partitionKey); TestDoc doc2ToCreate = TestDoc.Create(partitionKey); TestDoc doc3ToCreate = TestDoc.Create(partitionKey); ItemResponse <TestDoc> doc1ToReplaceCreateResponse = await EncryptionTests.CreateItemAsync(EncryptionTests.itemContainerCore, dek1, TestDoc.PathsToEncrypt, partitionKey); TestDoc doc1ToReplace = doc1ToReplaceCreateResponse.Resource; doc1ToReplace.NonSensitive = Guid.NewGuid().ToString(); doc1ToReplace.Sensitive = Guid.NewGuid().ToString(); TestDoc doc2ToReplace = await EncryptionTests.CreateItemAsync(EncryptionTests.itemContainerCore, dek2, TestDoc.PathsToEncrypt, partitionKey); doc2ToReplace.NonSensitive = Guid.NewGuid().ToString(); doc2ToReplace.Sensitive = Guid.NewGuid().ToString(); TestDoc doc1ToUpsert = await EncryptionTests.CreateItemAsync(EncryptionTests.itemContainerCore, dek2, TestDoc.PathsToEncrypt, partitionKey); doc1ToUpsert.NonSensitive = Guid.NewGuid().ToString(); doc1ToUpsert.Sensitive = Guid.NewGuid().ToString(); TestDoc doc2ToUpsert = await EncryptionTests.CreateItemAsync(EncryptionTests.itemContainerCore, dek1, TestDoc.PathsToEncrypt, partitionKey); doc2ToUpsert.NonSensitive = Guid.NewGuid().ToString(); doc2ToUpsert.Sensitive = Guid.NewGuid().ToString(); TestDoc docToDelete = await EncryptionTests.CreateItemAsync(EncryptionTests.itemContainerCore, dek1, TestDoc.PathsToEncrypt, partitionKey); TransactionalBatchResponse batchResponse = await EncryptionTests.itemContainer.CreateTransactionalBatch(new Cosmos.PartitionKey(partitionKey)) .CreateItem(doc1ToCreate, EncryptionTests.GetBatchItemRequestOptions(EncryptionTests.itemContainerCore, dek1, TestDoc.PathsToEncrypt)) .CreateItemStream(doc2ToCreate.ToStream(), EncryptionTests.GetBatchItemRequestOptions(EncryptionTests.itemContainerCore, dek2, TestDoc.PathsToEncrypt)) .ReplaceItem(doc1ToReplace.Id, doc1ToReplace, EncryptionTests.GetBatchItemRequestOptions(EncryptionTests.itemContainerCore, dek2, TestDoc.PathsToEncrypt, doc1ToReplaceCreateResponse.ETag)) .CreateItem(doc3ToCreate) .ReplaceItemStream(doc2ToReplace.Id, doc2ToReplace.ToStream(), EncryptionTests.GetBatchItemRequestOptions(EncryptionTests.itemContainerCore, dek2, TestDoc.PathsToEncrypt)) .UpsertItem(doc1ToUpsert, EncryptionTests.GetBatchItemRequestOptions(EncryptionTests.itemContainerCore, dek1, TestDoc.PathsToEncrypt)) .DeleteItem(docToDelete.Id) .UpsertItemStream(doc2ToUpsert.ToStream(), EncryptionTests.GetBatchItemRequestOptions(EncryptionTests.itemContainerCore, dek2, TestDoc.PathsToEncrypt)) .ExecuteAsync(); Assert.AreEqual(HttpStatusCode.OK, batchResponse.StatusCode); await EncryptionTests.VerifyItemByReadAsync(EncryptionTests.itemContainerCore, doc1ToCreate); await EncryptionTests.VerifyItemByReadAsync(EncryptionTests.itemContainerCore, doc2ToCreate); await EncryptionTests.VerifyItemByReadAsync(EncryptionTests.itemContainerCore, doc3ToCreate); await EncryptionTests.VerifyItemByReadAsync(EncryptionTests.itemContainerCore, doc1ToReplace); await EncryptionTests.VerifyItemByReadAsync(EncryptionTests.itemContainerCore, doc2ToReplace); await EncryptionTests.VerifyItemByReadAsync(EncryptionTests.itemContainerCore, doc1ToUpsert); await EncryptionTests.VerifyItemByReadAsync(EncryptionTests.itemContainerCore, doc2ToUpsert); ResponseMessage readResponseMessage = await EncryptionTests.itemContainer.ReadItemStreamAsync(docToDelete.Id, new PartitionKey(docToDelete.PK)); Assert.AreEqual(HttpStatusCode.NotFound, readResponseMessage.StatusCode); }