public async Task ThrowIfNull_WorksWithNullable_NoValue()
        {
            var responseString = "{\"type\":\"task\",\"id\":\"1874102965\"}";

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

            var taskRequest = new BoxTaskCreateRequest
            {
                Item = new BoxRequestEntity
                {
                    Id = "1234"
                }
            };

            try
            {
                BoxTask task = await _tasksManager.CreateTaskAsync(taskRequest);
            }
            catch (ArgumentNullException ex)
            {
                Assert.AreEqual("taskCreateRequest.Item.Type", ex.ParamName);
                return;
            }

            Assert.Fail("Exception should have been thrown");
        }
Beispiel #2
0
        private async Task RunCreate()
        {
            base.CheckForValue(this._fileId.Value, this._app, "A file ID is required for this command");
            var boxClient   = base.ConfigureBoxClient(oneCallAsUserId: base._asUser.Value(), oneCallWithToken: base._oneUseToken.Value());
            var taskRequest = new BoxTaskCreateRequest();

            taskRequest.Item = new BoxRequestEntity()
            {
                Id   = this._fileId.Value,
                Type = BoxType.file
            };

            if (this._message.HasValue())
            {
                taskRequest.Message = this._message.Value();
            }
            if (this._due.HasValue())
            {
                taskRequest.DueAt = GeneralUtilities.GetDateTimeFromString(this._due.Value());
            }
            var createdTask = await boxClient.TasksManager.CreateTaskAsync(taskRequest);

            if (this._idOnly.HasValue())
            {
                Reporter.WriteInformation(createdTask.Id);
                return;
            }
            if (base._json.HasValue() || this._home.GetBoxHomeSettings().GetOutputJsonSetting())
            {
                base.OutputJson(createdTask);
                return;
            }
            base.PrintTask(createdTask);
        }
        /// <summary>
        /// Used to create a single task for single user on a single file.
        /// </summary>
        /// <param name="taskCreateRequest">BoxTaskCreateRequest object.</param>
        /// <returns>A new task object will be returned upon success.</returns>
        public async Task <BoxTask> CreateTaskAsync(BoxTaskCreateRequest taskCreateRequest)
        {
            taskCreateRequest.ThrowIfNull("taskCreateRequest")
            .Item.ThrowIfNull("taskCreateRequest.Item")
            .Id.ThrowIfNullOrWhiteSpace("taskCreateRequest.Item.Id");
            taskCreateRequest.Item.Type.ThrowIfNull("taskCreateRequest.Item.Type");
            if (taskCreateRequest.Item.Type != BoxType.file)
            {
                throw new ArgumentException("Currently only file is supported", "taskCreateRequest.Item.Type");
            }
            BoxRequest request = new BoxRequest(_config.TasksEndpointUri)
                                 .Method(RequestMethod.Post)
                                 .Payload(_converter.Serialize(taskCreateRequest));

            IBoxResponse <BoxTask> response = await ToResponseAsync <BoxTask>(request).ConfigureAwait(false);

            return(response.ResponseObject);
        }
        public async Task CreateTask_WithCompletionRule()
        {
            /*** Arrange ***/
            var         responseString = @"{
                                        ""type"": ""task"",
                                        ""id"": ""1839355"",
                                        ""item"": {
                                            ""type"": ""file"",
                                            ""id"": ""7287087200"",
                                            ""sequence_id"": ""0"",
                                            ""etag"": ""0"",
                                            ""sha1"": ""0bbd79a105c504f99573e3799756debba4c760cd"",
                                            ""name"": ""box-logo.png""
                                        },
                                        ""due_at"": ""2014-04-03T11:09:43-07:00"",
                                        ""action"": ""review"",
                                        ""message"": ""REVIEW PLZ K THX"",
                                        ""task_assignment_collection"": {
                                            ""total_count"": 0,
                                            ""entries"": []
                                        },
                                        ""is_completed"": false,
                                        ""created_by"": {
                                            ""type"": ""user"",
                                            ""id"": ""11993747"",
                                            ""name"": ""sean"",
                                            ""login"": ""*****@*****.**""
                                        },
                                        ""created_at"": ""2013-04-03T11:12:54-07:00"",
                                        ""completion_rule"": ""any_assignee""
                                    }";
            IBoxRequest boxRequest     = null;
            var         tasksUri       = new Uri(Constants.TasksEndpointString);

            Config.SetupGet(x => x.TasksEndpointUri).Returns(tasksUri);
            Handler.Setup(h => h.ExecuteAsync <BoxTask>(It.IsAny <IBoxRequest>()))
            .Returns(Task.FromResult <IBoxResponse <BoxTask> >(new BoxResponse <BoxTask>()
            {
                Status        = ResponseStatus.Success,
                ContentString = responseString
            }))
            .Callback <IBoxRequest>(r => boxRequest = r);

            /*** Act ***/
            var taskCreateRequest = new BoxTaskCreateRequest()
            {
                Item = new BoxRequestEntity()
                {
                    Id   = "7287087200",
                    Type = BoxType.file
                },
                Message        = "REVIEW PLZ K THX",
                CompletionRule = BoxCompletionRule.any_assignee
            };
            BoxTask result = await _tasksManager.CreateTaskAsync(taskCreateRequest);

            /*** Assert ***/
            //Request check
            Assert.IsNotNull(boxRequest);
            Assert.AreEqual(RequestMethod.Post, boxRequest.Method);
            Assert.AreEqual(tasksUri, boxRequest.AbsoluteUri.AbsoluteUri);
            BoxTaskCreateRequest payload = JsonConvert.DeserializeObject <BoxTaskCreateRequest>(boxRequest.Payload);

            Assert.AreEqual(taskCreateRequest.Item.Id, payload.Item.Id);
            Assert.AreEqual(taskCreateRequest.Item.Type, payload.Item.Type);
            Assert.AreEqual(taskCreateRequest.Message, payload.Message);
            Assert.AreEqual(taskCreateRequest.CompletionRule, payload.CompletionRule);
            Assert.IsTrue(boxRequest.Payload.ContainsKeyValue("completion_rule", "any_assignee"));

            //Response check
            Assert.AreEqual(BoxCompletionRule.any_assignee, result.CompletionRule);
        }
        /// <summary>
        /// Used to create a single task for single user on a single file.
        /// </summary>
        /// <param name="taskCreateRequest">BoxTaskCreateRequest object.</param>
        /// <returns>A new task object will be returned upon success.</returns>
        public async Task<BoxTask> CreateTaskAsync(BoxTaskCreateRequest taskCreateRequest)
        {
            taskCreateRequest.ThrowIfNull("taskCreateRequest")
                .Item.ThrowIfNull("taskCreateRequest.Item")
                .Id.ThrowIfNullOrWhiteSpace("taskCreateRequest.Item.Id");
            taskCreateRequest.Item.Type.ThrowIfNull("taskCreateRequest.Item.Type");
            if (taskCreateRequest.Item.Type != BoxType.file)
            {
                throw new ArgumentException("Currently only file is supported", "taskCreateRequest.Item.Type");
            }
            BoxRequest request = new BoxRequest(_config.TasksEndpointUri)
                .Method(RequestMethod.Post)
                .Payload(_converter.Serialize(taskCreateRequest));

            IBoxResponse<BoxTask> response = await ToResponseAsync<BoxTask>(request).ConfigureAwait(false);

            return response.ResponseObject;
        }
        public async Task CreateTask_ValidResponse()
        {
            /*** Arrange ***/
            string responseString = @"{
                                        ""type"": ""task"",
                                        ""id"": ""1839355"",
                                        ""item"": {
                                            ""type"": ""file"",
                                            ""id"": ""7287087200"",
                                            ""sequence_id"": ""0"",
                                            ""etag"": ""0"",
                                            ""sha1"": ""0bbd79a105c504f99573e3799756debba4c760cd"",
                                            ""name"": ""box-logo.png""
                                        },
                                        ""due_at"": ""2014-04-03T11:09:43-07:00"",
                                        ""action"": ""review"",
                                        ""message"": ""REVIEW PLZ K THX"",
                                        ""task_assignment_collection"": {
                                            ""total_count"": 0,
                                            ""entries"": []
                                        },
                                        ""is_completed"": false,
                                        ""created_by"": {
                                            ""type"": ""user"",
                                            ""id"": ""11993747"",
                                            ""name"": ""sean"",
                                            ""login"": ""*****@*****.**""
                                        },
                                        ""created_at"": ""2013-04-03T11:12:54-07:00""
                                    }";
            IBoxRequest boxRequest = null;
            Uri tasksUri = new Uri(Constants.TasksEndpointString);
            _config.SetupGet(x => x.TasksEndpointUri).Returns(tasksUri);
            _handler.Setup(h => h.ExecuteAsync<BoxTask>(It.IsAny<IBoxRequest>()))
                .Returns(Task.FromResult<IBoxResponse<BoxTask>>(new BoxResponse<BoxTask>()
                {
                    Status = ResponseStatus.Success,
                    ContentString = responseString
                }))
                .Callback<IBoxRequest>(r => boxRequest = r);

            /*** Act ***/
            BoxTaskCreateRequest taskCreateRequest = new BoxTaskCreateRequest()
            {
                Item = new BoxRequestEntity()
                {
                    Id = "7287087200",
                    Type = BoxType.file
                },
                Message = "REVIEW PLZ K THX"
            };
            BoxTask result = await _tasksManager.CreateTaskAsync(taskCreateRequest);

            /*** Assert ***/
            //Request check
            Assert.IsNotNull(boxRequest);
            Assert.AreEqual(RequestMethod.Post, boxRequest.Method);
            Assert.AreEqual(tasksUri, boxRequest.AbsoluteUri.AbsoluteUri);
            BoxTaskCreateRequest payload = JsonConvert.DeserializeObject<BoxTaskCreateRequest>(boxRequest.Payload);
            Assert.AreEqual(taskCreateRequest.Item.Id, payload.Item.Id);
            Assert.AreEqual(taskCreateRequest.Item.Type, payload.Item.Type);
            Assert.AreEqual(taskCreateRequest.Message, payload.Message);

            //Response check
            Assert.AreEqual("1839355", result.Id);
            Assert.AreEqual("task", result.Type);
            Assert.AreEqual("7287087200", result.Item.Id);
            Assert.AreEqual("file", result.Item.Type);
            Assert.AreEqual("0", result.Item.ETag);
            Assert.AreEqual("REVIEW PLZ K THX", result.Message);
            Assert.AreEqual(false, result.IsCompleted);
            Assert.AreEqual("11993747", result.CreatedBy.Id);
            Assert.AreEqual("*****@*****.**", result.CreatedBy.Login);
            Assert.AreEqual(0, result.TaskAssignments.TotalCount);

        }