public async Task GetFileVersionsUnderRetentionForAssignment_ValidResponse() { /*** Arrange ***/ var retentionPolicyAssignmentId = "12345"; var responseString = "{ \"entries\": [{ \"id\": 12345, \"etag\": 1, \"type\": \"file_version\", \"sequence_id\": 3, \"name\": \"Contract.pdf\", \"sha1\": \"85136C79CBF9FE36BB9D05D0639C70C265C18D37\", \"file_version\": { \"id\": 123456, \"type\": \"file_version\", \"sha1\": \"134b65991ed521fcfe4724b7d814ab8ded5185dc\" }, \"applied_at\": \"2012-12-12T10:53:43-08:00\" } ], \"limit\": 1000, \"marker\": \"some marker\" }"; IBoxRequest boxRequest = null; Handler.Setup(h => h.ExecuteAsync <BoxCollectionMarkerBased <BoxFileVersion> >(It.IsAny <IBoxRequest>())) .Returns(Task.FromResult <IBoxResponse <BoxCollectionMarkerBased <BoxFileVersion> > >(new BoxResponse <BoxCollectionMarkerBased <BoxFileVersion> >() { Status = ResponseStatus.Success, ContentString = responseString })) .Callback <IBoxRequest>(r => boxRequest = r); /*** Act ***/ BoxCollectionMarkerBased <BoxFileVersion> results = await _retentionPoliciesManager.GetFileVersionsUnderRetentionForAssignmentAsync(retentionPolicyAssignmentId); /*** Assert ***/ // Request check Assert.IsNotNull(boxRequest); Assert.AreEqual(RequestMethod.Get, boxRequest.Method); Assert.AreEqual(retentionPolicyAssignmentId, boxRequest.Parameters["retention_policy_assignment_id"]); // Response check Assert.AreEqual("12345", results.Entries[0].Id); Assert.AreEqual("Contract.pdf", results.Entries[0].Name); Assert.AreEqual("file_version", results.Entries[0].Type); Assert.AreEqual("file_version", results.Entries[0].FileVersion.Type); }
/// <summary> /// Used to fetch all results using pagination for metadata queries /// </summary> /// <typeparam name="T">The type of BoxCollectionMarkerBased item to expect.</typeparam> /// <param name="request">The pre-configured BoxRequest object.</param> /// <returns></returns> protected async Task <BoxCollectionMarkerBased <T> > AutoPaginateMarkerMetadataQuery <T>(BoxRequest request) where T : BoxMetadataQueryItem, new() { var allItemsCollection = new BoxCollectionMarkerBased <T>(); allItemsCollection.Entries = new List <T>(); bool keepGoing; do { var response = await ToResponseAsync <BoxCollectionMarkerBased <T> >(request).ConfigureAwait(false); var newItems = response.ResponseObject; allItemsCollection.Entries.AddRange(newItems.Entries); allItemsCollection.Order = newItems.Order; dynamic body = JObject.Parse(request.Payload); body.marker = newItems.NextMarker; request.Payload = body.ToString(); keepGoing = !string.IsNullOrWhiteSpace(newItems.NextMarker); } while (keepGoing); return(allItemsCollection); }
public string PageInConsole <T>(Action <T> print, BoxCollectionMarkerBased <T> collection) where T : class, new() { print(collection.Entries[0]); collection.Entries.RemoveAt(0); Reporter.WriteInformation("Show next? Enter q to quit. "); return(System.Console.ReadLine().Trim().ToLower()); }
public async Task GetFileVersionRetentions_OptionalParams_Success() { /*** Arrange ***/ string fileId = "12345"; string dispositionAfterString = "2010-08-18T00:00:00-05:00"; DateTime dispositionAfter = new DateTime(2010, 8, 18); DispositionAction dispositionAction = DispositionAction.permanently_delete; string responseString = "{ \"entries\": [ {\"id\": \"11446498\", \"type\": \"file_version_retention\",\"file_version\": {\"id\": \"12345\",\"type\": \"file_version\", \"sha1\": \"134b65991ed521fcfe4724b7d814ab8ded5185dc\"},\"file\": {\"id\": \"12345\",\"etag\": \"1\", \"type\": \"file\",\"sequence_id\": \"3\",\"name\": \"Contract.pdf\", \"sha1\": \"85136C79CBF9FE36BB9D05D0639C70C265C18D37\", \"file_version\": {\"id\": \"12345\",\"type\": \"file_version\",\"sha1\": \"134b65991ed521fcfe4724b7d814ab8ded5185dc\" }},\"applied_at\": \"2012-12-12T10:53:43-08:00\", \"disposition_at\": \"2012-12-12T10:53:43-08:00\", \"winning_retention_policy\": { \"id\": \"12345\", \"type\": \"retention_policy\",\"policy_name\": \"Some Policy Name\", \"retention_length\": \"365\",\"disposition_action\": \"permanently_delete\"}}],\"limit\": 100,\"next_marker\": \"\",\"prev_marker\": \"\"}"; IBoxRequest boxRequest = null; Handler.Setup(h => h.ExecuteAsync <BoxCollectionMarkerBased <BoxFileVersionRetention> >(It.IsAny <IBoxRequest>())) .Returns(Task.FromResult <IBoxResponse <BoxCollectionMarkerBased <BoxFileVersionRetention> > >(new BoxResponse <BoxCollectionMarkerBased <BoxFileVersionRetention> >() { Status = ResponseStatus.Success, ContentString = responseString })) .Callback <IBoxRequest>(r => boxRequest = r); /*** Act ***/ BoxCollectionMarkerBased <BoxFileVersionRetention> results = await _retentionPoliciesManager.GetFileVersionRetentionsAsync(fileId : fileId, dispositionAfter : dispositionAfter, dispositionAction : dispositionAction); /*** Assert ***/ // Request check Assert.IsNotNull(boxRequest); Assert.AreEqual(RequestMethod.Get, boxRequest.Method); Assert.AreEqual(fileId, boxRequest.Parameters["file_id"]); Assert.AreEqual(dispositionAfterString, boxRequest.Parameters["disposition_after"]); Assert.AreEqual(dispositionAction.ToString(), boxRequest.Parameters["disposition_action"]); // Response check Assert.AreEqual("11446498", results.Entries[0].Id); Assert.AreEqual("Contract.pdf", results.Entries[0].File.Name); Assert.AreEqual("12345", results.Entries[0].WinningRetentionPolicy.Id); }
public async Task ExecuteMetadataQueryWithFields_ValidResponse() { /*** Arrange ***/ IBoxRequest boxRequest = null; Handler.Setup(h => h.ExecuteAsync <BoxCollectionMarkerBased <BoxItem> >(It.IsAny <IBoxRequest>())) .Returns(Task.FromResult <IBoxResponse <BoxCollectionMarkerBased <BoxItem> > >(new BoxResponse <BoxCollectionMarkerBased <BoxItem> >() { Status = ResponseStatus.Success, ContentString = LoadFixtureFromJson("Fixtures/BoxMetadata/ExecuteMetadataWithFieldsQuery200.json") })) .Callback <IBoxRequest>(r => boxRequest = r); /*** Act ***/ var queryParams = new Dictionary <string, object> { { "arg", "Bob Dylan" } }; var fields = new List <string> { "id", "name", "sha1", "metadata.enterprise_240748.catalogImages.photographer" }; var marker = "q3f87oqf3qygou5t478g9gwrbul"; BoxCollectionMarkerBased <BoxItem> items = await _metadataManager.ExecuteMetadataQueryAsync(from : "enterprise_67890.catalogImages", query : "photographer = :arg", fields : fields, queryParameters : queryParams, ancestorFolderId : "0", marker : marker, autoPaginate : false); /*** Assert ***/ // Request check Assert.IsNotNull(boxRequest); Assert.AreEqual(RequestMethod.Post, boxRequest.Method); Assert.AreEqual(MetadataQueryUri, boxRequest.AbsoluteUri.AbsoluteUri); var payload = JObject.Parse(boxRequest.Payload); Assert.AreEqual("enterprise_67890.catalogImages", payload["from"]); Assert.AreEqual("photographer = :arg", payload["query"]); Assert.AreEqual("0", payload["ancestor_folder_id"]); var payloadFields = JArray.Parse(payload["fields"].ToString()); Assert.AreEqual("id", payloadFields[0]); Assert.AreEqual("name", payloadFields[1]); Assert.AreEqual("sha1", payloadFields[2]); Assert.AreEqual("metadata.enterprise_240748.catalogImages.photographer", payloadFields[3]); Assert.AreEqual(marker, payload["marker"]); // Response check Assert.AreEqual(items.Entries[0].Type, "file"); Assert.AreEqual(items.Entries[0].Id, "1244738582"); Assert.AreEqual(items.Entries[0].Name, "Very Important.docx"); Assert.AreEqual(items.Entries[1].Type, "folder"); Assert.AreEqual(items.Entries[1].Id, "124242482"); Assert.AreEqual(items.Entries[1].Name, "Also Important.docx"); var file = (BoxFile)items.Entries[0]; Assert.AreEqual(file.Metadata["enterprise_67890"]["catalogImages"]["photographer"].Value, "Bob Dylan"); }
public async Task ExecuteMetadataQueryWithFields_ValidResponse() { /*** Arrange ***/ string responseString = "{\"entries\":[{\"type\":\"file\",\"id\":\"1244738582\",\"etag\":\"1\",\"sha1\":\"012b5jdunwkfu438991344044\",\"name\":\"Very Important.docx\",\"metadata\":{\"enterprise_67890\":{\"catalogImages\":{\"$parent\":\"file_50347290\",\"$version\":2,\"$template\":\"catalogImages\",\"$scope\":\"enterprise_67890\",\"photographer\":\"Bob Dylan\"}}}},{\"type\":\"folder\",\"id\":\"124242482\",\"etag\":\"1\",\"sha1\":\"012b5ir8391344044\",\"name\":\"Also Important.docx\",\"metadata\":{\"enterprise_67890\":{\"catalogImages\":{\"$parent\":\"file_50427290\",\"$version\":2,\"$template\":\"catalogImages\",\"$scope\":\"enterprise_67890\",\"photographer\":\"Bob Dylan\"}}}}],\"limit\":2,\"next_marker\":\"0!WkeoDQ3mm5cI_RzSN--UOG1ICuw0gz3729kfhwuoagt54nbvqmgfhsygreh98nfu94344PpctrcgVa8AMIe7gRwSNBNloVR-XuGmfqTw\"}"; IBoxRequest boxRequest = null; Handler.Setup(h => h.ExecuteAsync <BoxCollectionMarkerBased <BoxItem> >(It.IsAny <IBoxRequest>())) .Returns(Task.FromResult <IBoxResponse <BoxCollectionMarkerBased <BoxItem> > >(new BoxResponse <BoxCollectionMarkerBased <BoxItem> >() { Status = ResponseStatus.Success, ContentString = responseString })) .Callback <IBoxRequest>(r => boxRequest = r); /*** Act ***/ var queryParams = new Dictionary <string, object>(); queryParams.Add("arg", "Bob Dylan"); List <string> fields = new List <string>(); fields.Add("id"); fields.Add("name"); fields.Add("sha1"); fields.Add("metadata.enterprise_240748.catalogImages.photographer"); string marker = "q3f87oqf3qygou5t478g9gwrbul"; BoxCollectionMarkerBased <BoxItem> items = await _metadataManager.ExecuteMetadataQueryAsync(from : "enterprise_67890.catalogImages", query : "photographer = :arg", fields : fields, queryParameters : queryParams, ancestorFolderId : "0", marker : marker, autoPaginate : false); /*** Assert ***/ // Request check Assert.IsNotNull(boxRequest); Assert.AreEqual(RequestMethod.Post, boxRequest.Method); Assert.AreEqual(MetadataQueryUri, boxRequest.AbsoluteUri.AbsoluteUri); JObject payload = JObject.Parse(boxRequest.Payload); Assert.AreEqual("enterprise_67890.catalogImages", payload["from"]); Assert.AreEqual("photographer = :arg", payload["query"]); Assert.AreEqual("0", payload["ancestor_folder_id"]); JArray payloadFields = JArray.Parse(payload["fields"].ToString()); Assert.AreEqual("id", payloadFields[0]); Assert.AreEqual("name", payloadFields[1]); Assert.AreEqual("sha1", payloadFields[2]); Assert.AreEqual("metadata.enterprise_240748.catalogImages.photographer", payloadFields[3]); Assert.AreEqual(marker, payload["marker"]); // Response check Assert.AreEqual(items.Entries[0].Type, "file"); Assert.AreEqual(items.Entries[0].Id, "1244738582"); Assert.AreEqual(items.Entries[0].Name, "Very Important.docx"); Assert.AreEqual(items.Entries[1].Type, "folder"); Assert.AreEqual(items.Entries[1].Id, "124242482"); Assert.AreEqual(items.Entries[1].Name, "Also Important.docx"); BoxFile file = (BoxFile)items.Entries[0]; Assert.AreEqual(file.Metadata["enterprise_67890"]["catalogImages"]["photographer"].Value, "Bob Dylan"); }
public async Task GetListLegalHoldPolicies_ValidResponse() { /*** Arrange ***/ var responseString = @"{ ""entries"": [ { ""type"": ""legal_hold_policy"", ""id"": ""166877"", ""policy_name"": ""Policy 1"" }, { ""type"": ""legal_hold_policy"", ""id"": ""166881"", ""policy_name"": ""Policy 2"" } ], ""limit"": 3, ""order"": [ { ""by"": ""policy_name"", ""direction"": ""ASC"" } ] }"; IBoxRequest boxRequest = null; var legalHoldsPoliciesUri = new Uri(Constants.LegalHoldPoliciesEndpointString); Config.SetupGet(x => x.LegalHoldPoliciesEndpointUri).Returns(legalHoldsPoliciesUri); Handler.Setup(h => h.ExecuteAsync <BoxCollectionMarkerBased <BoxLegalHoldPolicy> >(It.IsAny <IBoxRequest>())) .Returns(Task.FromResult <IBoxResponse <BoxCollectionMarkerBased <BoxLegalHoldPolicy> > >(new BoxResponse <BoxCollectionMarkerBased <BoxLegalHoldPolicy> >() { Status = ResponseStatus.Success, ContentString = responseString })) .Callback <IBoxRequest>(r => boxRequest = r); /*** Act ***/ BoxCollectionMarkerBased <BoxLegalHoldPolicy> result = await _legalHoldPoliciesManager.GetListLegalHoldPoliciesAsync("pol"); /*** Assert ***/ //Request check Assert.IsNotNull(boxRequest); Assert.AreEqual(RequestMethod.Get, boxRequest.Method); Assert.AreEqual(legalHoldsPoliciesUri + "?policy_name=pol&limit=100", boxRequest.AbsoluteUri.AbsoluteUri); //Response check Assert.AreEqual(2, result.Entries.Count); Assert.AreEqual(3, result.Limit); Assert.AreEqual(BoxSortBy.policy_name, result.Order[0].By); Assert.AreEqual(BoxSortDirection.ASC, result.Order[0].Direction); Assert.AreEqual("legal_hold_policy", result.Entries[0].Type); Assert.AreEqual("166877", result.Entries[0].Id); Assert.AreEqual("Policy 1", result.Entries[0].PolicyName); Assert.AreEqual("legal_hold_policy", result.Entries[1].Type); Assert.AreEqual("166881", result.Entries[1].Id); Assert.AreEqual("Policy 2", result.Entries[1].PolicyName); }
public async Task EnterpriseUsersMarkerBasedPagination_LiveSession_ValidResponse() { BoxCollectionMarkerBased <BoxUser> users = await _client.UsersManager.GetEnterpriseUsersWithMarkerAsync(limit : 1); Assert.IsTrue(users.Entries.Count == 1); BoxCollectionMarkerBased <BoxUser> users2 = await _client.UsersManager.GetEnterpriseUsersWithMarkerAsync(marker : users.NextMarker, limit : 2); Assert.IsTrue(users2.Entries.Count == 2); }
public async Task GetEnterpriseUsersWithMarker_ValidReponse() { Handler.Setup(h => h.ExecuteAsync <BoxCollectionMarkerBased <BoxUser> >(It.IsAny <IBoxRequest>())) .Returns(() => Task.FromResult <IBoxResponse <BoxCollectionMarkerBased <BoxUser> > >(new BoxResponse <BoxCollectionMarkerBased <BoxUser> >() { Status = ResponseStatus.Success, ContentString = "{\"entries\":[{\"type\":\"user\",\"id\":\"1234567890\",\"name\":\"Joey Burns\",\"login\":\"[email protected]\",\"created_at\":\"2020-01-01T01:01:01-07:00\",\"modified_at\":\"2020-01-01T01:01:01-08:00\",\"language\":\"en\",\"timezone\":\"America/Los_Angeles\",\"space_amount\":10737418240,\"space_used\":0,\"max_upload_size\":5368709120,\"status\":\"active\",\"job_title\":\"\",\"phone\":\"\",\"address\":\"\",\"avatar_url\":\"https://example.app.box.com/api/avatar/large/1234567890\",\"notification_email\":{}}],\"limit\":1,\"next_marker\":\"zxcvbnmasdfghjklqwertyuiop1234567890QWERTYUIOPASDFGHJKLZXCVBNM\"}" })); var marker = "qwertyuiopASDFGHJKLzxcvbnm1234567890QWERTYUIOPasdfghjklZXCVBNM"; BoxCollectionMarkerBased <BoxUser> items = await _usersManager.GetEnterpriseUsersWithMarkerAsync(marker); Assert.AreEqual(items.Limit, 1); Assert.AreEqual(items.Entries.Count(), 1); Assert.AreEqual(items.Entries.First().Name, "Joey Burns"); }
public async Task GetStoragePolicies_ValidResponse() { /*** Arrange ***/ var responseString = @"{ ""next_marker"": null, ""limit"": 1000, ""entries"": [ { ""type"": ""storage_policy"", ""id"": ""1234"", ""name"": ""AWS Montreal / AWS Dublin"" }, { ""type"": ""storage_policy"", ""id"": ""5678"", ""name"": ""AWS Frankfurt / AWS Dublin with in region Uploads/Downloads/Previews"" } ] }"; IBoxRequest boxRequest = null; var storagePoliciesUri = new Uri(Constants.StoragePoliciesEndpointString); Config.SetupGet(x => x.StoragePoliciesUri).Returns(storagePoliciesUri); Handler.Setup(h => h.ExecuteAsync <BoxCollectionMarkerBased <BoxStoragePolicy> >(It.IsAny <IBoxRequest>())) .Returns(Task.FromResult <IBoxResponse <BoxCollectionMarkerBased <BoxStoragePolicy> > >(new BoxResponse <BoxCollectionMarkerBased <BoxStoragePolicy> >() { Status = ResponseStatus.Success, ContentString = responseString })) .Callback <IBoxRequest>(r => boxRequest = r); /*** Act ***/ BoxCollectionMarkerBased <BoxStoragePolicy> result = await _storagePoliciesManager.GetListStoragePoliciesAsync(); /*** Assert ***/ //Request check Assert.IsNotNull(boxRequest); Assert.AreEqual(RequestMethod.Get, boxRequest.Method); Assert.AreEqual(storagePoliciesUri + "?limit=100", boxRequest.AbsoluteUri.AbsoluteUri); //Response check Assert.AreEqual("1234", result.Entries[0].Id); Assert.AreEqual("AWS Montreal / AWS Dublin", result.Entries[0].Name); Assert.AreEqual("5678", result.Entries[1].Id); Assert.AreEqual("AWS Frankfurt / AWS Dublin with in region Uploads/Downloads/Previews", result.Entries[1].Name); }
protected virtual bool WriteMarkerCollectionResultsToReport <T, M>(BoxCollectionMarkerBased <T> entity, string fileName, string filePath = "", string fileFormat = "") where T : BoxEntity, new() { fileFormat = this.ProcessReportsFileFormat(fileFormat); filePath = this.ProcessReportsFilePathForWriters(filePath, fileName, fileFormat); if (fileFormat == _settings.FILE_FORMAT_JSON) { try { var converter = new BoxJsonConverter(); File.WriteAllText(filePath, converter.Serialize <BoxCollectionMarkerBased <T> >(entity)); return(true); } catch (Exception e) { Reporter.WriteError(e.Message); return(false); } } else if (fileFormat == _settings.FILE_FORMAT_CSV) { try { using (StreamWriter fs = new StreamWriter(File.Open(filePath, FileMode.OpenOrCreate), System.Text.Encoding.UTF8)) using (var csv = new CsvWriter(fs)) { csv.Configuration.RegisterClassMap(typeof(M)); csv.WriteRecords(entity.Entries); } return(true); } catch (Exception e) { Reporter.WriteError(e.Message); return(false); } } else { throw new Exception($"File format {fileFormat} is not currently supported."); } }
public async Task GetSignRequest_Success() { /*** Arrange ***/ IBoxRequest boxRequest = null; Handler.Setup(h => h.ExecuteAsync <BoxCollectionMarkerBased <BoxSignRequest> >(It.IsAny <IBoxRequest>())) .Returns(Task.FromResult <IBoxResponse <BoxCollectionMarkerBased <BoxSignRequest> > >(new BoxResponse <BoxCollectionMarkerBased <BoxSignRequest> >() { Status = ResponseStatus.Success, ContentString = LoadFixtureFromJson("Fixtures/BoxSignRequest/GetAllSignRequests200.json") })) .Callback <IBoxRequest>(r => boxRequest = r); /*** Act ***/ BoxCollectionMarkerBased <BoxSignRequest> response = await _signRequestsManager.GetSignRequestsAsync(1000, "JV9IRGZmieiBasejOG9yDCRNgd2ymoZIbjsxbJMjIs3kioVii"); /*** Assert ***/ // Request check Assert.IsNotNull(boxRequest); Assert.AreEqual(RequestMethod.Get, boxRequest.Method); Assert.AreEqual(new Uri("https://api.box.com/2.0/sign_requests?limit=1000&marker=JV9IRGZmieiBasejOG9yDCRNgd2ymoZIbjsxbJMjIs3kioVii"), boxRequest.AbsoluteUri); // Response check Assert.AreEqual(1, response.Entries[0].SourceFiles.Count); Assert.AreEqual("12345", response.Entries[0].SourceFiles[0].Id); Assert.AreEqual(1, response.Entries[0].Signers.Count); Assert.AreEqual("*****@*****.**", response.Entries[0].Signers[0].Email); Assert.AreEqual("12345", response.Entries[0].ParentFolder.Id); Assert.IsTrue(response.Entries[0].IsDocumentPreparationNeeded); Assert.IsTrue(response.Entries[0].AreRemindersEnabled); Assert.IsTrue(response.Entries[0].AreTextSignaturesEnabled); Assert.AreEqual(2, response.Entries[0].DaysValid); Assert.AreEqual("Hello! Please sign the document below", response.Entries[0].EmailMessage); Assert.AreEqual("Sign Request from Acme", response.Entries[0].EmailSubject); Assert.AreEqual("123", response.Entries[0].ExternalId); Assert.AreEqual(1, response.Entries[0].PrefillTags.Count); Assert.AreEqual("1234", response.Entries[0].PrefillTags[0].DocumentTagId); Assert.AreEqual("text", response.Entries[0].PrefillTags[0].TextValue); Assert.IsTrue(response.Entries[0].PrefillTags[0].CheckboxValue.Value); Assert.AreEqual(DateTimeOffset.Parse("2021-04-26T08:12:13.982Z"), response.Entries[0].PrefillTags[0].DateValue); }
/// <summary> /// Used to fetch all results using pagination based on next_marker /// </summary> /// <typeparam name="T">The type of BoxCollectionMarkerBased item to expect.</typeparam> /// <param name="request">The pre-configured BoxRequest object.</param> /// <param name="limit">The limit specific to the endpoint.</param> /// <returns></returns> protected async Task <BoxCollectionMarkerBased <T> > AutoPaginateMarker <T>(BoxRequest request, int limit) where T : BoxEntity, new() { var allItemsCollection = new BoxCollectionMarkerBased <T>(); allItemsCollection.Entries = new List <T>(); bool keepGoing; do { var response = await ToResponseAsync <BoxCollectionMarkerBased <T> >(request).ConfigureAwait(false); var newItems = response.ResponseObject; allItemsCollection.Entries.AddRange(newItems.Entries); allItemsCollection.Order = newItems.Order; request.Param("marker", newItems.NextMarker); keepGoing = !string.IsNullOrWhiteSpace(newItems.NextMarker); } while (keepGoing); return(allItemsCollection); }
public async Task ExecuteMetadataQuery_ValidResponse() { /*** Arrange ***/ string responseString = "{\"entries\":[{\"item\":{\"type\":\"file\",\"id\":\"1617554169109\",\"file_version\":{\"type\":\"file_version\",\"id\":\"1451884469385\",\"sha1\":\"69888bb1bff455d1b2f8afea75ed1ff0b4879bf6\"},\"sequence_id\":\"0\",\"etag\":\"0\",\"sha1\":\"69888bb1bff455d1b2f8afea75ed1ff0b4879bf6\",\"name\":\"My Contract.docx\",\"description\":\"\",\"size\":25600,\"path_collection\":{\"total_count\":4,\"entries\":[{\"type\":\"folder\",\"id\":\"0\",\"sequence_id\":null,\"etag\":null,\"name\":\"All Files\"},{\"type\":\"folder\",\"id\":\"15017998644\",\"sequence_id\":\"0\",\"etag\":\"0\",\"name\":\"Contracts\"},{\"type\":\"folder\",\"id\":\"15286891196\",\"sequence_id\":\"1\",\"etag\":\"1\",\"name\":\"North America\"},{\"type\":\"folder\",\"id\":\"16125613433\",\"sequence_id\":\"0\",\"etag\":\"0\",\"name\":\"2017\"}]},\"created_at\":\"2017-04-20T12:55:27-07:00\",\"modified_at\":\"2017-04-20T12:55:27-07:00\",\"trashed_at\":null,\"purged_at\":null,\"content_created_at\":\"2017-01-06T17:59:01-08:00\",\"content_modified_at\":\"2017-01-06T17:59:01-08:00\",\"created_by\":{\"type\":\"user\",\"id\":\"193973366\",\"name\":\"Box Admin\",\"login\":\"[email protected]\"},\"modified_by\":{\"type\":\"user\",\"id\":\"193973366\",\"name\":\"Box Admin\",\"login\":\"[email protected]\"},\"owned_by\":{\"type\":\"user\",\"id\":\"193973366\",\"name\":\"Box Admin\",\"login\":\"[email protected]\"},\"shared_link\":null,\"parent\":{\"type\":\"folder\",\"id\":\"16125613433\",\"sequence_id\":\"0\",\"etag\":\"0\",\"name\":\"2017\"},\"item_status\":\"active\"},\"metadata\":{\"enterprise_123456\":{\"someTemplate\":{\"$parent\":\"file_161753469109\",\"$version\":0,\"customerName\":\"Phoenix Corp\",\"$type\":\"someTemplate-3d5fcaca-f496-4bb6-9046-d25c37bc5594\",\"$typeVersion\":0,\"$id\":\"ba52e2cc-371d-4659-8d53-50f1ac642e35\",\"amount\":100,\"claimDate\":\"2016-04-10T00:00:00Z\",\"region\":\"West\",\"$typeScope\":\"enterprise_123456\"}}}}],\"next_marker\":\"AAAAAmVYB1FWec8GH6yWu2nwmanfMh07IyYInaa7DZDYjgO1H4KoLW29vPlLY173OKsci6h6xGh61gG73gnaxoS+o0BbI1/h6le6cikjlupVhASwJ2Cj0tOD9wlnrUMHHw3/ISf+uuACzrOMhN6d5fYrbidPzS6MdhJOejuYlvsg4tcBYzjauP3+VU51p77HFAIuObnJT0ff\"}"; IBoxRequest boxRequest = null; Handler.Setup(h => h.ExecuteAsync <BoxCollectionMarkerBased <BoxMetadataQueryItem> >(It.IsAny <IBoxRequest>())) .Returns(Task.FromResult <IBoxResponse <BoxCollectionMarkerBased <BoxMetadataQueryItem> > >(new BoxResponse <BoxCollectionMarkerBased <BoxMetadataQueryItem> >() { Status = ResponseStatus.Success, ContentString = responseString })) .Callback <IBoxRequest>(r => boxRequest = r); /*** Act ***/ var queryParams = new Dictionary <string, object>(); queryParams.Add("arg", 100); List <BoxMetadataQueryOrderBy> orderByList = new List <BoxMetadataQueryOrderBy>(); var orderBy = new BoxMetadataQueryOrderBy() { FieldKey = "amount", Direction = BoxSortDirection.ASC }; orderByList.Add(orderBy); string marker = "q3f87oqf3qygou5t478g9gwrbul"; BoxCollectionMarkerBased <BoxMetadataQueryItem> items = await _metadataManager.ExecuteMetadataQueryAsync(from : "enterprise_123456.someTemplate", query : "amount >= :arg", queryParameters : queryParams, ancestorFolderId : "5555", indexName : "amountAsc", orderBy : orderByList, marker : marker, autoPaginate : false); /*** Assert ***/ // Request check Assert.IsNotNull(boxRequest); Assert.AreEqual(RequestMethod.Post, boxRequest.Method); Assert.AreEqual(MetadataQueryUri, boxRequest.AbsoluteUri.AbsoluteUri); JObject payload = JObject.Parse(boxRequest.Payload); Assert.AreEqual("enterprise_123456.someTemplate", payload["from"]); Assert.AreEqual("amount >= :arg", payload["query"]); Assert.AreEqual(100, payload["query_params"]["arg"]); Assert.AreEqual("5555", payload["ancestor_folder_id"]); Assert.AreEqual("amountAsc", payload["use_index"]); JArray payloadOrderBy = JArray.Parse(payload["order_by"].ToString()); Assert.AreEqual("amount", payloadOrderBy[0]["field_key"]); Assert.AreEqual("ASC", payloadOrderBy[0]["direction"]); Assert.AreEqual(marker, payload["marker"]); // Response check Assert.AreEqual(items.Entries[0].Item.Type, "file"); Assert.AreEqual(items.Entries[0].Item.Id, "1617554169109"); Assert.AreEqual(items.Entries[0].Item.Name, "My Contract.docx"); Assert.AreEqual(items.Entries[0].Item.SequenceId, "0"); Assert.AreEqual(items.Entries[0].Item.CreatedBy.Type, "user"); Assert.AreEqual(items.Entries[0].Item.CreatedBy.Login, "*****@*****.**"); Assert.AreEqual(items.Entries[0].Item.Parent.Id, "16125613433"); Assert.AreEqual(items.NextMarker, "AAAAAmVYB1FWec8GH6yWu2nwmanfMh07IyYInaa7DZDYjgO1H4KoLW29vPlLY173OKsci6h6xGh61gG73gnaxoS+o0BbI1/h6le6cikjlupVhASwJ2Cj0tOD9wlnrUMHHw3/ISf+uuACzrOMhN6d5fYrbidPzS6MdhJOejuYlvsg4tcBYzjauP3+VU51p77HFAIuObnJT0ff"); var metadata = JObject.FromObject(items.Entries[0].Metadata["enterprise_123456"]); Assert.AreEqual(metadata["someTemplate"]["$parent"], "file_161753469109"); Assert.AreEqual(metadata["someTemplate"]["customerName"], "Phoenix Corp"); Assert.AreEqual(metadata["someTemplate"]["$typeVersion"], 0); Assert.AreEqual(metadata["someTemplate"]["region"], "West"); }
public async Task Metadata_ExecuteQueryWithFieldsAsync_LiveSession() { string folderName = ".Net Metadata Query Integration Test"; string metadataTemplateScope = "enterprise"; string metadataTemplateName = "testMetadataQueryTemplate"; string metadataTemplateField = "testField"; string metadataTemplateFieldValue = "testValue"; // Check that test metadata template exists or create if not there BoxMetadataTemplate template; try { template = await _client.MetadataManager.GetMetadataTemplate(metadataTemplateScope, metadataTemplateName); } catch (BoxException e) { var templateParams = new BoxMetadataTemplate() { TemplateKey = metadataTemplateName, DisplayName = "Test Metadata Query Template", Scope = metadataTemplateScope, Fields = new List <BoxMetadataTemplateField>() { new BoxMetadataTemplateField() { Type = "string", Key = metadataTemplateField, DisplayName = "Test Field" } } }; template = await _client.MetadataManager.CreateMetadataTemplate(templateParams); } // Create folder and apply test metadata template. If folder is already there, assume that the folder has the correct metadata template from a previous integration test that might not have been able to delete the folder. BoxFolder folder = null; try { var folderParams = new BoxFolderRequest() { Name = folderName, Parent = new BoxRequestEntity() { Id = "0" } }; folder = await _client.FoldersManager.CreateAsync(folderParams); var metadataValues = new Dictionary <string, object>() { { metadataTemplateField, metadataTemplateFieldValue } }; Dictionary <string, object> metadata = await _client.MetadataManager.SetFolderMetadataAsync(folder.Id, metadataValues, template.Scope, template.TemplateKey); } catch { } /*** Act ***/ string from = template.Scope + "." + template.TemplateKey; string query = metadataTemplateField + " = :arg"; List <string> fields = new List <string>(); fields.Add("type"); fields.Add("id"); fields.Add("name"); fields.Add("metadata." + template.Scope + "." + template.TemplateKey + "." + metadataTemplateField); var queryParams = new Dictionary <string, object>(); queryParams.Add("arg", metadataTemplateFieldValue); List <BoxMetadataQueryOrderBy> orderByList = new List <BoxMetadataQueryOrderBy>(); var orderBy = new BoxMetadataQueryOrderBy() { FieldKey = metadataTemplateField, Direction = BoxSortDirection.DESC }; orderByList.Add(orderBy); // Run metadata query BoxCollectionMarkerBased <BoxItem> items = await _client.MetadataManager.ExecuteMetadataQueryAsync(from, query : query, fields : fields, queryParameters : queryParams, orderBy : orderByList, ancestorFolderId : "0", autoPaginate : false); // Delete folder if this test created a folder if (folder != null) { await _client.FoldersManager.DeleteAsync(folder.Id, recursive : true); } /*** Assert ***/ Assert.AreEqual(items.Entries.Count, 1); Assert.AreEqual(items.Entries[0].Name, folderName); BoxFolder folderItem = (BoxFolder)items.Entries[0]; Assert.IsNotNull(folderItem.Metadata); }
public async Task ExecuteMetadataQueryWithoutUseIndexWithFields_ValidResponse() { /*** Arrange ***/ IBoxRequest boxRequest = null; Handler.Setup(h => h.ExecuteAsync <BoxCollectionMarkerBased <BoxItem> >(It.IsAny <IBoxRequest>())) .Returns(Task.FromResult <IBoxResponse <BoxCollectionMarkerBased <BoxItem> > >(new BoxResponse <BoxCollectionMarkerBased <BoxItem> >() { Status = ResponseStatus.Success, ContentString = LoadFixtureFromJson("Fixtures/BoxMetadata/ExecuteMetadataWithFieldsQuery200.json") })) .Callback <IBoxRequest>(r => boxRequest = r); /*** Act ***/ var queryParams = new Dictionary <string, object> { { "arg", 100 } }; var orderByList = new List <BoxMetadataQueryOrderBy>(); var orderBy = new BoxMetadataQueryOrderBy() { FieldKey = "amount", Direction = BoxSortDirection.ASC }; orderByList.Add(orderBy); var marker = "q3f87oqf3qygou5t478g9gwrbul"; var metadataRequest = new BoxMetadataQueryRequest { From = "enterprise_67890.catalogImages", Query = "photographer = :arg", QueryParameters = new Dictionary <string, object> { { "arg", "Bob Dylan" } }, AncestorFolderId = "5555", OrderBy = orderByList, Marker = marker, AutoPaginate = false, Fields = new List <string> { "id", "name", "sha1", "metadata.enterprise_240748.catalogImages.photographer" } }; BoxCollectionMarkerBased <BoxItem> items = await _metadataManager.ExecuteMetadataQueryAsync(metadataRequest); /*** Assert ***/ // Request check Assert.IsNotNull(boxRequest); Assert.AreEqual(RequestMethod.Post, boxRequest.Method); Assert.AreEqual(MetadataQueryUri, boxRequest.AbsoluteUri.AbsoluteUri); var payload = JObject.Parse(boxRequest.Payload); Assert.AreEqual("enterprise_67890.catalogImages", payload["from"]); Assert.AreEqual("photographer = :arg", payload["query"]); Assert.AreEqual("5555", payload["ancestor_folder_id"]); var payloadFields = JArray.Parse(payload["fields"].ToString()); Assert.AreEqual("id", payloadFields[0]); Assert.AreEqual("name", payloadFields[1]); Assert.AreEqual("sha1", payloadFields[2]); Assert.AreEqual("metadata.enterprise_240748.catalogImages.photographer", payloadFields[3]); Assert.AreEqual(marker, payload["marker"]); Assert.AreEqual("Bob Dylan", payload["query_params"]["arg"]); var payloadOrderBy = JArray.Parse(payload["order_by"].ToString()); Assert.AreEqual("amount", payloadOrderBy[0]["field_key"]); Assert.AreEqual("ASC", payloadOrderBy[0]["direction"]); // Response check Assert.AreEqual(items.Entries[0].Type, "file"); Assert.AreEqual(items.Entries[0].Id, "1244738582"); Assert.AreEqual(items.Entries[0].Name, "Very Important.docx"); Assert.AreEqual(items.Entries[1].Type, "folder"); Assert.AreEqual(items.Entries[1].Id, "124242482"); Assert.AreEqual(items.Entries[1].Name, "Also Important.docx"); var file = (BoxFile)items.Entries[0]; Assert.AreEqual(file.Metadata["enterprise_67890"]["catalogImages"]["photographer"].Value, "Bob Dylan"); }
public async Task ExecuteMetadataQuery_ValidResponse() { /*** Arrange ***/ IBoxRequest boxRequest = null; Handler.Setup(h => h.ExecuteAsync <BoxCollectionMarkerBased <BoxMetadataQueryItem> >(It.IsAny <IBoxRequest>())) .Returns(Task.FromResult <IBoxResponse <BoxCollectionMarkerBased <BoxMetadataQueryItem> > >(new BoxResponse <BoxCollectionMarkerBased <BoxMetadataQueryItem> >() { Status = ResponseStatus.Success, ContentString = LoadFixtureFromJson("Fixtures/BoxMetadata/ExecuteMetadataQuery200.json") })) .Callback <IBoxRequest>(r => boxRequest = r); /*** Act ***/ var queryParams = new Dictionary <string, object> { { "arg", 100 } }; var orderByList = new List <BoxMetadataQueryOrderBy>(); var orderBy = new BoxMetadataQueryOrderBy() { FieldKey = "amount", Direction = BoxSortDirection.ASC }; orderByList.Add(orderBy); var marker = "q3f87oqf3qygou5t478g9gwrbul"; BoxCollectionMarkerBased <BoxMetadataQueryItem> items = await _metadataManager.ExecuteMetadataQueryAsync(from : "enterprise_123456.someTemplate", query : "amount >= :arg", queryParameters : queryParams, ancestorFolderId : "5555", indexName : "amountAsc", orderBy : orderByList, marker : marker, autoPaginate : false); /*** Assert ***/ // Request check Assert.IsNotNull(boxRequest); Assert.AreEqual(RequestMethod.Post, boxRequest.Method); Assert.AreEqual(MetadataQueryUri, boxRequest.AbsoluteUri.AbsoluteUri); var payload = JObject.Parse(boxRequest.Payload); Assert.AreEqual("enterprise_123456.someTemplate", payload["from"]); Assert.AreEqual("amount >= :arg", payload["query"]); Assert.AreEqual(100, payload["query_params"]["arg"]); Assert.AreEqual("5555", payload["ancestor_folder_id"]); var payloadOrderBy = JArray.Parse(payload["order_by"].ToString()); Assert.AreEqual("amount", payloadOrderBy[0]["field_key"]); Assert.AreEqual("ASC", payloadOrderBy[0]["direction"]); Assert.AreEqual(marker, payload["marker"]); // Response check Assert.AreEqual(items.Entries[0].Item.Type, "file"); Assert.AreEqual(items.Entries[0].Item.Id, "1617554169109"); Assert.AreEqual(items.Entries[0].Item.Name, "My Contract.docx"); Assert.AreEqual(items.Entries[0].Item.SequenceId, "0"); Assert.AreEqual(items.Entries[0].Item.CreatedBy.Type, "user"); Assert.AreEqual(items.Entries[0].Item.CreatedBy.Login, "*****@*****.**"); Assert.AreEqual(items.Entries[0].Item.Parent.Id, "16125613433"); Assert.AreEqual(items.NextMarker, "AAAAAmVYB1FWec8GH6yWu2nwmanfMh07IyYInaa7DZDYjgO1H4KoLW29vPlLY173OKsci6h6xGh61gG73gnaxoS+o0BbI1/h6le6cikjlupVhASwJ2Cj0tOD9wlnrUMHHw3/ISf+uuACzrOMhN6d5fYrbidPzS6MdhJOejuYlvsg4tcBYzjauP3+VU51p77HFAIuObnJT0ff"); var metadata = JObject.FromObject(items.Entries[0].Metadata["enterprise_123456"]); Assert.AreEqual(metadata["someTemplate"]["$parent"], "file_161753469109"); Assert.AreEqual(metadata["someTemplate"]["customerName"], "Phoenix Corp"); Assert.AreEqual(metadata["someTemplate"]["$typeVersion"], 0); Assert.AreEqual(metadata["someTemplate"]["region"], "West"); }