コード例 #1
0
        public async Task GetFolderCollaborators_ValidResponse_ValidCollaborators()
        {
            /*** Arrange ***/
            _handler.Setup(h => h.ExecuteAsync <BoxCollection <BoxCollaboration> >(It.IsAny <IBoxRequest>()))
            .Returns(() => Task.FromResult <IBoxResponse <BoxCollection <BoxCollaboration> > >(new BoxResponse <BoxCollection <BoxCollaboration> >()
            {
                Status        = ResponseStatus.Success,
                ContentString = "{ \"total_count\": 1, \"entries\": [ { \"type\": \"collaboration\", \"id\": \"14176246\", \"created_by\": { \"type\": \"user\", \"id\": \"4276790\", \"name\": \"David Lee\", \"login\": \"[email protected]\" }, \"created_at\": \"2011-11-29T12:56:35-08:00\", \"modified_at\": \"2012-09-11T15:12:32-07:00\", \"expires_at\": null, \"status\": \"accepted\", \"accessible_by\": { \"type\": \"user\", \"id\": \"755492\", \"name\": \"Simon Tan\", \"login\": \"[email protected]\" }, \"role\": \"editor\", \"acknowledged_at\": \"2011-11-29T12:59:40-08:00\", \"item\": null } ] }"
            }));

            /*** Act ***/
            BoxCollection <BoxCollaboration> c = await _foldersManager.GetCollaborationsAsync("fakeId");

            BoxCollaboration collab = c.Entries.FirstOrDefault();

            /*** Assert ***/
            Assert.AreEqual(1, c.TotalCount);
            Assert.AreEqual("collaboration", collab.Type);
            Assert.AreEqual("14176246", collab.Id);
            Assert.AreEqual("David Lee", collab.CreatedBy.Name);
            Assert.AreEqual("*****@*****.**", collab.CreatedBy.Login);
            var user = collab.AccessibleBy as BoxUser;

            Assert.AreEqual("Simon Tan", user.Name);
            Assert.AreEqual("*****@*****.**", user.Login);
        }
        public async Task EditCollaboration_ValidResponse_ValidCollaboration()
        {
            /*** Arrange ***/
            string responseString = "{\"type\":\"collaboration\",\"id\":\"791293\",\"created_by\":{\"type\":\"user\",\"id\":\"17738362\",\"name\":\"sean rose\",\"login\":\"[email protected]\"},\"created_at\":\"2012-12-12T10:54:37-08:00\",\"modified_at\":\"2012-12-12T11:30:43-08:00\",\"expires_at\":null,\"status\":\"accepted\",\"accessible_by\":{\"type\":\"user\",\"id\":\"18203124\",\"name\":\"sean\",\"login\":\"[email protected]\"},\"role\":\"viewer\",\"acknowledged_at\":\"2012-12-12T11:30:43-08:00\",\"item\":{\"type\":\"folder\",\"id\":\"11446500\",\"sequence_id\":\"0\",\"etag\":\"0\",\"name\":\"Shared Pictures\"}}";

            Handler.Setup(h => h.ExecuteAsync <BoxCollaboration>(It.IsAny <IBoxRequest>()))
            .Returns(Task.FromResult <IBoxResponse <BoxCollaboration> >(new BoxResponse <BoxCollaboration>()
            {
                Status        = ResponseStatus.Success,
                ContentString = responseString
            }));

            /*** Act ***/
            BoxCollaborationRequest request = new BoxCollaborationRequest()
            {
                Id = "fakeId"
            };

            BoxCollaboration collab = await _collaborationsManager.EditCollaborationAsync(request);

            /*** Assert ***/
            Assert.AreEqual("791293", collab.Id);
            Assert.AreEqual("collaboration", collab.Type);
            Assert.AreEqual("user", collab.CreatedBy.Type);
            Assert.AreEqual("17738362", collab.CreatedBy.Id);
            Assert.AreEqual("*****@*****.**", collab.CreatedBy.Login);
        }
コード例 #3
0
        public async Task CollaborationsOnFolderWorkflow_LiveSession_ValidResponse()
        {
            const string folderId = "1927307787";

            // Add Collaboration
            BoxCollaborationRequest addRequest = new BoxCollaborationRequest()
            {
                Item = new BoxRequestEntity()
                {
                    Id   = folderId,
                    Type = BoxType.folder
                },
                AccessibleBy = new BoxCollaborationUserRequest()
                {
                    Login = "******"
                },
                Role = "viewer"
            };

            BoxCollaboration collab = await _client.CollaborationsManager.AddCollaborationAsync(addRequest, notify : false);

            Assert.AreEqual(folderId, collab.Item.Id, "Folder and collaboration folder id do not match");
            Assert.AreEqual(BoxCollaborationRoles.Viewer, collab.Role, "Incorrect collaboration role");

            // Edit Collaboration
            BoxCollaborationRequest editRequest = new BoxCollaborationRequest()
            {
                Id          = collab.Id,
                Role        = BoxCollaborationRoles.Editor,
                CanViewPath = true
            };

            BoxCollaboration editCollab = await _client.CollaborationsManager.EditCollaborationAsync(editRequest);

            Assert.AreEqual(collab.Id, editCollab.Id, "Id of original collaboration and updated collaboration do not match");
            Assert.AreEqual(BoxCollaborationRoles.Editor, editCollab.Role, "Incorrect updated role");

            // get existing collaboration
            var existingCollab = await _client.CollaborationsManager.GetCollaborationAsync(collab.Id, fields : new List <string>()
            {
                "can_view_path"
            });

            Assert.IsTrue(existingCollab.CanViewPath.Value, "failed to retrieve existing collab with specific fields");

            // test getting list of collaborations on folder
            var collabs = await _client.FoldersManager.GetCollaborationsAsync(folderId);

            Assert.AreEqual(4, collabs.Entries.Count, "Failed to get correct number of folder collabs.");

            // Test Remove Collaboration
            bool success = await _client.CollaborationsManager.RemoveCollaborationAsync(collab.Id);

            Assert.IsTrue(success, "Collaboration deletion was unsucessful");
        }
コード例 #4
0
ファイル: BoxBaseCommand.cs プロジェクト: jmfrank63/boxcli
 protected virtual void PrintCollaboration(BoxCollaboration c, bool json = false)
 {
     if (json)
     {
         this.OutputJson(c);
         return;
     }
     else
     {
         this.PrintCollaboration(c);
     }
 }
コード例 #5
0
        public async Task CollaborationsOnFileWorkflow_LiveSession_ValidResponse()
        {
            const string fileId = "100699285359";

            // Add Collaboration
            BoxCollaborationRequest addRequest = new BoxCollaborationRequest()
            {
                Item = new BoxRequestEntity()
                {
                    Id   = fileId,
                    Type = BoxType.file
                },
                AccessibleBy = new BoxCollaborationUserRequest()
                {
                    Login = "******"
                },
                Role = "viewer"
            };

            BoxCollaboration collab = await _client.CollaborationsManager.AddCollaborationAsync(addRequest, notify : false);

            Assert.AreEqual(fileId, collab.Item.Id, "File and collaboration file id do not match");
            Assert.AreEqual(BoxCollaborationRoles.Viewer, collab.Role, "Incorrect collaboration role");


            // TODO: Edit Collaboration
            BoxCollaborationRequest editRequest = new BoxCollaborationRequest()
            {
                Id   = collab.Id,
                Role = BoxCollaborationRoles.Editor
            };

            BoxCollaboration editCollab = await _client.CollaborationsManager.EditCollaborationAsync(editRequest);

            Assert.AreEqual(collab.Id, editCollab.Id, "Id of original collaboration and updated collaboration do not match");
            Assert.AreEqual(BoxCollaborationRoles.Editor, editCollab.Role, "Incorrect updated role");

            // get existing collaboration
            var existingCollab = await _client.CollaborationsManager.GetCollaborationAsync(collab.Id);

            Assert.IsTrue(existingCollab.Item.Id == fileId, "failed to retrieve existing collab");

            // test getting list of collaborations on file
            var collabs = await _client.FilesManager.GetCollaborationsAsync(fileId);

            Assert.AreEqual(4, collabs.Entries.Count, "Failed to get correct number of file collabs.");

            // Test Remove Collaboration
            bool success = await _client.CollaborationsManager.RemoveCollaborationAsync(collab.Id);

            Assert.IsTrue(success, "Collaboration deletion was unsucessful");
        }
コード例 #6
0
ファイル: BoxBaseCommand.cs プロジェクト: jmfrank63/boxcli
 protected virtual void PrintCollaboration(BoxCollaboration c)
 {
     Reporter.WriteInformation($"Collaboration ID: {c.Id}");
     if (c.Item != null)
     {
         Reporter.WriteInformation("Collaboration Item: ");
         this.PrintItem(c.Item);
     }
     Reporter.WriteInformation($"Collaboration Role: {c.Role}");
     Reporter.WriteInformation($"Collaboration Status: {c.Status}");
     if (c.CreatedBy != null)
     {
         Reporter.WriteInformation("Created by: ");
         this.PrintMiniUser(c.CreatedBy);
     }
 }
        public async Task CollaborationsWorkflow_LiveSession_ValidResponse()
        {
            const string folderId = "1927307787";

            // Add Collaboration
            BoxCollaborationRequest addRequest = new BoxCollaborationRequest()
            {
                Item = new BoxRequestEntity()
                {
                    Id   = folderId,
                    Type = BoxType.folder
                },
                AccessibleBy = new BoxCollaborationUserRequest()
                {
                    Login = "******"
                },
                Role = "viewer"
            };

            BoxCollaboration collab = await _client.CollaborationsManager.AddCollaborationAsync(addRequest, notify : false);

            Assert.AreEqual(folderId, collab.Item.Id, "Folder and collaboration folder id do not match");
            Assert.AreEqual(BoxCollaborationRoles.Viewer, collab.Role, "Incorrect collaboration role");

            // Edit Collaboration
            BoxCollaborationRequest editRequest = new BoxCollaborationRequest()
            {
                Id   = collab.Id,
                Role = BoxCollaborationRoles.Editor
            };

            BoxCollaboration editCollab = await _client.CollaborationsManager.EditCollaborationAsync(editRequest);

            Assert.AreEqual(collab.Id, editCollab.Id, "Id of original collaboration and updated collaboration do not match");
            Assert.AreEqual(BoxCollaborationRoles.Editor, editCollab.Role, "Incorrect updated role");

            // Test Remove Collaboration
            bool success = await _client.CollaborationsManager.RemoveCollaborationAsync(collab.Id);

            Assert.IsTrue(success, "Collaboration deletion was unsucessful");
        }
コード例 #8
0
        public async Task CollaborationsWorkflow_LiveSession_ValidResponse()
        {
            // Test Add Collaboration
            BoxCollaborationRequest addRequest = new BoxCollaborationRequest()
            {
                Item = new BoxRequestEntity()
                {
                    Id   = folderId,
                    Type = BoxType.folder
                },
                AccessibleBy = new BoxCollaborationUserRequest()
                {
                    Login = "******"
                },
                Role = "viewer"
            };

            BoxCollaboration collab = await _client.CollaborationsManager.AddCollaborationAsync(addRequest);

            Assert.AreEqual(folderId, collab.Item.Id);
            Assert.AreEqual(BoxCollaborationRoles.Viewer, collab.Role);

            // Test Edit Collaboration
            BoxCollaborationRequest editRequest = new BoxCollaborationRequest()
            {
                Id   = collab.Id,
                Role = BoxCollaborationRoles.Editor
            };

            BoxCollaboration editCollab = await _client.CollaborationsManager.EditCollaborationAsync(editRequest);

            Assert.AreEqual(collab.Id, editCollab.Id);
            Assert.AreEqual(BoxCollaborationRoles.Editor, editCollab.Role);

            // Test Remove Collaboration
            await _client.CollaborationsManager.RemoveCollaborationAsync(collab.Id);
        }
コード例 #9
0
        public async Task GroupMembershipWorkflow_ValidRequest()
        {
            // Get current user
            var user = await _client.UsersManager.GetCurrentUserInformationAsync();

            // Get all the current memberships for this user
            var current_memberships = await _client.GroupsManager.GetAllGroupMembershipsForUserAsync(user.Id);

            // Create a new group
            string groupName = GetUniqueName();

            BoxGroupRequest groupReq = new BoxGroupRequest()
            {
                Name = groupName,
            };

            var newGroup = await _client.GroupsManager.CreateAsync(groupReq);

            // Create a membership
            BoxGroupMembershipRequest request = new BoxGroupMembershipRequest()
            {
                User = new BoxRequestEntity()
                {
                    Id = user.Id
                },
                Group = new BoxGroupRequest()
                {
                    Id = newGroup.Id
                }
            };

            var responseMembership = await _client.GroupsManager.AddMemberToGroupAsync(request);

            Assert.AreEqual("group_membership", responseMembership.Type, "The type is not group_membership");
            Assert.AreEqual("member", responseMembership.Role, "Membership role is not set correctly");
            Assert.AreEqual(user.Id, responseMembership.User.Id, "User id not set correctly for membership");
            Assert.AreEqual(newGroup.Id, responseMembership.Group.Id, "Group id not set correctly for membership");

            // Get the created group membership
            var membership = await _client.GroupsManager.GetGroupMembershipAsync(responseMembership.Id);

            Assert.AreEqual("group_membership", membership.Type, "The type is not group_membership");
            Assert.AreEqual("member", membership.Role, "Membership role is not set correctly");
            Assert.AreEqual(user.Id, membership.User.Id, "User id not set correctly for membership");
            Assert.AreEqual(newGroup.Id, membership.Group.Id, "Group id not set correctly for membership");

            // Update the group membership's role
            request = new BoxGroupMembershipRequest()
            {
                Role = "admin"
            };
            var updatedMembership = await _client.GroupsManager.UpdateGroupMembershipAsync(responseMembership.Id, request);

            Assert.AreEqual("admin", updatedMembership.Role, "Membership role was not updated correctly");

            // Get all memberships for the given groups
            var memberships = await _client.GroupsManager.GetAllGroupMembershipsForGroupAsync(newGroup.Id);

            Assert.AreEqual(1, memberships.Entries.Count, "Wrong count of memberships");
            Assert.AreEqual(1, memberships.TotalCount, "Wrong total count of memberships");
            Assert.AreEqual("group_membership", memberships.Entries[0].Type, "Wrong type");
            Assert.AreEqual(newGroup.Id, memberships.Entries[0].Group.Id, "Wrong Group id");
            Assert.AreEqual(user.Id, memberships.Entries[0].User.Id, "Wrong User id");

            // Add this group to a folder
            const string folderId = "1927307787";

            // Add Collaboration
            BoxCollaborationRequest addRequest = new BoxCollaborationRequest()
            {
                Item = new BoxRequestEntity()
                {
                    Id   = folderId,
                    Type = BoxType.folder
                },
                AccessibleBy = new BoxCollaborationUserRequest()
                {
                    Type = BoxType.group,
                    Id   = newGroup.Id
                },
                Role = "viewer"
            };

            BoxCollaboration collab = await _client.CollaborationsManager.AddCollaborationAsync(addRequest, notify : false);

            Assert.AreEqual(folderId, collab.Item.Id, "Folder and collaboration folder id do not match");
            Assert.AreEqual(BoxCollaborationRoles.Viewer, collab.Role, "Incorrect collaboration role");

            // Get all collaborations for the give group
            var collabs = await _client.GroupsManager.GetCollaborationsForGroupAsync(newGroup.Id);

            Assert.AreEqual(1, collabs.Entries.Count, "Wrong count of collaborations");
            Assert.AreEqual(1, collabs.TotalCount, "Wrong total count of collaborations");

            collab = collabs.Entries[0];
            Assert.AreEqual <string>(newGroup.Id, collab.AccessibleBy.Id, "Wrong Group Id");
            Assert.AreEqual <string>("viewer", collab.Role, "Wrong Role Type");

            // Get memberships for the user
            memberships = await _client.GroupsManager.GetAllGroupMembershipsForUserAsync(user.Id);

            Assert.AreEqual(current_memberships.TotalCount + 1, memberships.TotalCount, "The total count of memberships for user did not increase");
            Assert.IsTrue(memberships.Entries.Exists(m => m.Id.Equals(membership.Id)), "Newly created group membership does not exist in this users list of memberships");

            // Delete the group membership
            bool success = await _client.GroupsManager.DeleteGroupMembershipAsync(membership.Id);

            memberships = await _client.GroupsManager.GetAllGroupMembershipsForGroupAsync(newGroup.Id);

            Assert.AreEqual(0, memberships.Entries.Count, "Count should be 0");
            Assert.AreEqual(0, memberships.TotalCount, "Total count should be 0");

            // Clean up - delete group
            var delResult = await _client.GroupsManager.DeleteAsync(newGroup.Id);
        }
コード例 #10
0
        protected async Task ProcessAddCollaborationsFromFile(string path, BoxType t,
                                                              string command, List <string> fields,
                                                              bool save = false, string overrideSavePath    = "",
                                                              string overrideSaveFileFormat = "", bool json = false)
        {
            var boxClient = base.ConfigureBoxClient(oneCallAsUserId: this._asUser.Value(), oneCallWithToken: base._oneUseToken.Value());
            var processedCollaborations = new List <BoxCollaboration>();

            if (!string.IsNullOrEmpty(path))
            {
                path = GeneralUtilities.TranslatePath(path);
            }
            try
            {
                var collaborationRequests = new List <BoxCollaborationRequest>();
                if (command.ToLower() == CollaborationAddCommand.commandName)
                {
                    collaborationRequests = base.ReadFile <BoxCollaborationRequest, BoxCollaborationRequestMap>(path);
                }
                else if (command.ToLower() == CollaborationUpdateCommand.commandName)
                {
                    collaborationRequests = base.ReadFile <BoxCollaborationRequest, BoxCollaborationUpdateRequestMap>(path);
                }
                else
                {
                    throw new Exception("Cannot use bulk-file-path with this command.");
                }

                foreach (var collaborationRequest in collaborationRequests)
                {
                    try
                    {
                        var createdCollaboration = new BoxCollaboration();
                        if (command.ToLower() == CollaborationAddCommand.commandName)
                        {
                            Reporter.WriteInformation($"Processing collaboration for item ID: {collaborationRequest.Item.Id}");
                            Reporter.WriteInformation($"Processing collaboration for item type: {collaborationRequest.Item.Type}");
                            createdCollaboration = await boxClient.CollaborationsManager.AddCollaborationAsync(collaborationRequest, fields : fields);
                        }
                        else if (command.ToLower() == CollaborationUpdateCommand.commandName)
                        {
                            Reporter.WriteInformation($"Processing update on collaboration ID: {collaborationRequest.Id}");
                            createdCollaboration = await boxClient.CollaborationsManager.EditCollaborationAsync(collaborationRequest, fields : fields);
                        }
                        else
                        {
                            throw new Exception("Cannot use bulk-file-path with this command.");
                        }
                        if (createdCollaboration != null)
                        {
                            this.PrintCollaboration(createdCollaboration, json);
                            if (save || !string.IsNullOrEmpty(overrideSavePath) || base._settings.GetAutoSaveSetting())
                            {
                                processedCollaborations.Add(createdCollaboration);
                            }
                        }
                    }
                    catch (BoxException e)
                    {
                        var errorMessage = JObject.Parse(e.Message);
                        var code         = errorMessage.GetValue("code").ToString();
                        if (code == "user_already_collaborator" || code == "conflict")
                        {
                            Reporter.WriteWarning("Collaboration already exists...");

                            var existingCollaborations = new BoxCollection <BoxCollaboration>();
                            var itemId = collaborationRequest.Item.Id;
                            if (collaborationRequest.Item.Type == BoxType.folder)
                            {
                                existingCollaborations = await boxClient.FoldersManager.GetCollaborationsAsync(itemId, fields : fields);
                            }
                            else if (collaborationRequest.Item.Type == BoxType.file)
                            {
                                existingCollaborations = await boxClient.FilesManager.GetCollaborationsAsync(itemId, fields : fields);
                            }
                            else
                            {
                                throw e;
                            }

                            var existingCollab = new BoxCollaboration();
                            if (!string.IsNullOrEmpty(collaborationRequest.AccessibleBy.Id))
                            {
                                existingCollab = existingCollaborations.Entries.Find((collaboration) =>
                                {
                                    return(collaboration.AccessibleBy.Id == collaborationRequest.AccessibleBy.Id);
                                });
                            }
                            else if (!string.IsNullOrEmpty(collaborationRequest.AccessibleBy.Login))
                            {
                                var user = (await boxClient.UsersManager.GetEnterpriseUsersAsync(filterTerm: collaborationRequest.AccessibleBy.Login)).Entries.FirstOrDefault();
                                if (user != null)
                                {
                                    existingCollab = existingCollaborations.Entries.Find((collaboration) =>
                                    {
                                        return(collaboration.AccessibleBy.Id == user.Id);
                                    });
                                }
                                else
                                {
                                    throw e;
                                }
                            }
                            if (existingCollab != null)
                            {
                                processedCollaborations.Add(existingCollab);
                            }
                            else
                            {
                                throw e;
                            }
                        }
                        else
                        {
                            Reporter.WriteError("Failed processing on collaboration:");
                            if (!String.IsNullOrEmpty(collaborationRequest.Id))
                            {
                                Reporter.WriteError($"Collaboration ID: {collaborationRequest.Id}");
                            }
                            Reporter.WriteError($"Role: {collaborationRequest.Role}");
                            if (!String.IsNullOrEmpty(collaborationRequest.Status))
                            {
                                Reporter.WriteError($"Status: {collaborationRequest.Status}");
                            }
                            if (collaborationRequest.Item != null)
                            {
                                Reporter.WriteError($"Item ID: {collaborationRequest.Item.Id}");
                                Reporter.WriteError($"Item type: {collaborationRequest.Item.Type}");
                            }
                            if (collaborationRequest.AccessibleBy != null)
                            {
                                Reporter.WriteError($"Accessible by ID: {collaborationRequest.AccessibleBy.Id}");
                                Reporter.WriteError($"Accessible by type: {collaborationRequest.AccessibleBy.Type}");
                            }
                            Reporter.WriteError("Reason:");
                            Reporter.WriteError(e.Message);
                        }
                    }
                    catch (Exception e)
                    {
                        Reporter.WriteError("Failed processing on collaboration:");
                        if (!String.IsNullOrEmpty(collaborationRequest.Id))
                        {
                            Reporter.WriteError($"Collaboration ID: {collaborationRequest.Id}");
                        }
                        Reporter.WriteError($"Role: {collaborationRequest.Role}");
                        if (!String.IsNullOrEmpty(collaborationRequest.Status))
                        {
                            Reporter.WriteError($"Status: {collaborationRequest.Status}");
                        }
                        if (collaborationRequest.Item != null)
                        {
                            Reporter.WriteError($"Item ID: {collaborationRequest.Item.Id}");
                            Reporter.WriteError($"Item type: {collaborationRequest.Item.Type}");
                        }
                        if (collaborationRequest.AccessibleBy != null)
                        {
                            Reporter.WriteError($"Accessible by ID: {collaborationRequest.AccessibleBy.Id}");
                            Reporter.WriteError($"Accessible by type: {collaborationRequest.AccessibleBy.Type}");
                        }
                        Reporter.WriteError("Reason:");
                        Reporter.WriteError(e.Message);
                    }
                }
            }
            catch (Exception e)
            {
                Reporter.WriteError(e.Message);
            }

            if (save || !string.IsNullOrEmpty(overrideSavePath) || base._settings.GetAutoSaveSetting())
            {
                var fileFormat = base._settings.GetBoxReportsFileFormatSetting();
                if (!string.IsNullOrEmpty(overrideSaveFileFormat))
                {
                    fileFormat = overrideSaveFileFormat;
                }
                var savePath = base._settings.GetBoxReportsFolderPath();
                if (!string.IsNullOrEmpty(overrideSavePath))
                {
                    savePath = overrideSavePath;
                }
                var fileName = String.Empty;
                if (command.ToLower() == CollaborationAddCommand.commandName)
                {
                    fileName = $"{base._names.CommandNames.Collaborations}-{base._names.SubCommandNames.Add}-{DateTime.Now.ToString(GeneralUtilities.GetDateFormatString())}";
                }
                else if (command.ToLower() == CollaborationUpdateCommand.commandName)
                {
                    fileName = $"{base._names.CommandNames.Collaborations}-{base._names.SubCommandNames.Update}-{DateTime.Now.ToString(GeneralUtilities.GetDateFormatString())}";
                }
                if (!String.IsNullOrEmpty(fileName))
                {
                    base.WriteListResultsToReport <BoxCollaboration, BoxCollaborationMap>(processedCollaborations, fileName, savePath, fileFormat);
                }
            }
        }