public string UpsertDocument(string collectionId, JObject document) { Uri collectionUri = UriFactory.CreateDocumentCollectionUri(_databaseId, collectionId); Task <ResourceResponse <Document> > upsertTask = _database.UpsertDocumentAsync(collectionUri, document); upsertTask.Wait(); ResourceResponse <Document> resourceResponse = upsertTask.Result; return(resourceResponse.Resource.Id); }
private static async Task AttemptWriteWithReadPermissionAsync(string collectionLink, Permission permission) { using (DocumentClient client = new DocumentClient( new Uri(endpointUrl), permission.Token)) { //attempt to write a document > should fail try { await client.UpsertDocumentAsync(collectionLink, new { id = "not allowed" }); //should never get here, because we expect the create to fail throw new ApplicationException("should never get here"); } catch (DocumentClientException de) { //expecting an Forbidden exception, anything else, rethrow if (de.StatusCode != HttpStatusCode.Forbidden) throw; } } }
private static async Task AttemptReadFromTwoCollections(List<string> collectionLinks, List<Permission> permissions) { //Now, we're going to use multiple permission tokens. //In this case, a read Permission on col1 AND another read Permission for col2 //This means the user should be able to read from both col1 and col2, but not have //the ability to read other collections should they exist, nor any admin access. //the user will also not have permission to write in either collection using (DocumentClient client = new DocumentClient(new Uri(endpointUrl), permissions)) { FeedResponse<dynamic> response; //read collection 1 > should succeed response = await client.ReadDocumentFeedAsync(collectionLinks[0]); //read from collection 2 > should succeed response = await client.ReadDocumentFeedAsync(collectionLinks[1]); //attempt to write a doc in col 2 > should fail with Forbidden try { await client.UpsertDocumentAsync(collectionLinks[1], new { id = "not allowed" }); //should never get here, because we expect the create to fail throw new ApplicationException("should never get here"); } catch (DocumentClientException de) { //expecting an Forbidden exception, anything else, rethrow if (de.StatusCode != HttpStatusCode.Forbidden) throw; } } return; }