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);
        }
Beispiel #2
0
        /// <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");
        }
Beispiel #7
0
        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");
        }
Beispiel #10
0
        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);
        }
Beispiel #11
0
 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.");
     }
 }
Beispiel #12
0
        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);
        }
Beispiel #13
0
        /// <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");
        }