コード例 #1
0
        public async Task CreateTaskAsync_ReturnsTesCreateTaskResponse()
        {
            // Arrange
            var mockRepo = new Mock <IRepository <TesTask> >();
            var tesTask  = new TesTask()
            {
                Executors = new List <TesExecutor> {
                    new TesExecutor {
                        Image = "ubuntu"
                    }
                }
            };

            var controller = new TaskServiceApiController(mockRepo.Object, new NullLogger <TaskServiceApiController>());

            // Act
            var result = await controller.CreateTaskAsync(tesTask) as ObjectResult;

            // Assert
            Assert.IsNotNull(result);
            mockRepo.Verify(x => x.CreateItemAsync(tesTask));
            Assert.AreEqual(32, tesTask.Id.Length);
            Assert.AreEqual(TesState.QUEUEDEnum, tesTask.State);
            Assert.AreEqual(200, result.StatusCode);
        }
コード例 #2
0
        public async Task GetTaskAsync_ReturnsJsonResult()
        {
            // Arrange
            var mockRepo = new Mock <IRepository <TesTask> >();
            var tesTask  = new TesTask
            {
                State = TesState.RUNNINGEnum
            };

            var repositoryItem = new RepositoryItem <TesTask> {
                ETag = Guid.NewGuid().ToString(), Value = tesTask
            };

            mockRepo.Setup(repo => repo.GetItemAsync(tesTask.Id)).ReturnsAsync(repositoryItem);
            var controller = new TaskServiceApiController(mockRepo.Object, new NullLogger <TaskServiceApiController>());

            // Act
            var result = await controller.GetTaskAsync(tesTask.Id, "MINIMAL") as JsonResult;

            // Assert
            Assert.IsNotNull(result);
            mockRepo.Verify(x => x.GetItemAsync(tesTask.Id));
            Assert.AreEqual(TesState.RUNNINGEnum, tesTask.State);
            Assert.AreEqual(200, result.StatusCode);
        }
コード例 #3
0
        public async Task CancelTaskAsync_ReturnsEmptyObject()
        {
            // Arrange
            var tesTask = new TesTask()
            {
                Id = "testTaskId", State = TesState.QUEUEDEnum
            };
            var repositoryItem = new RepositoryItem <TesTask> {
                ETag = Guid.NewGuid().ToString(), Value = tesTask
            };

            var mockRepo = new Mock <IRepository <TesTask> >();

            mockRepo.Setup(repo => repo.GetItemAsync(tesTask.Id)).ReturnsAsync(repositoryItem);
            var controller = new TaskServiceApiController(mockRepo.Object, new NullLogger <TaskServiceApiController>());

            // Act
            var result = await controller.CancelTask(tesTask.Id) as ObjectResult;

            // Assert
            Assert.IsNotNull(result);
            Assert.AreEqual(200, result.StatusCode);
            Assert.AreEqual(TesState.CANCELEDEnum, repositoryItem.Value.State);
            mockRepo.Verify(x => x.UpdateItemAsync(tesTask.Id, repositoryItem));
        }
コード例 #4
0
        public async Task ListTasks_ReturnsBadRequest_ForInvalidPageSize()
        {
            // Arrange
            var controller = new TaskServiceApiController(new Mock <IRepository <TesTask> >().Object, new NullLogger <TaskServiceApiController>());

            // Act
            var result = await controller.ListTasks(null, 0, null, "BASIC") as BadRequestObjectResult;

            // Assert
            Assert.IsNotNull(result);
            Assert.AreEqual(400, result.StatusCode);
        }
コード例 #5
0
        public void GetServiceInfo_ReturnsInfo()
        {
            // Arrange
            var mockRepo   = new Mock <IRepository <TesTask> >();
            var controller = new TaskServiceApiController(mockRepo.Object, new NullLogger <TaskServiceApiController>());

            // Act
            var result = controller.GetServiceInfo() as ObjectResult;

            // Assert
            Assert.IsNotNull(result);
            Assert.AreEqual(200, result.StatusCode);
        }
コード例 #6
0
        public async Task CreateTaskAsync_ReturnsBadRequest_ForMissingDockerImage()
        {
            // Arrange
            var mockRepo = new Mock <IRepository <TesTask> >();
            var tesTask  = new TesTask();

            var controller = new TaskServiceApiController(mockRepo.Object, new NullLogger <TaskServiceApiController>());

            // Act
            var result = await controller.CreateTaskAsync(tesTask) as ObjectResult;

            // Assert
            Assert.IsNotNull(result);
            Assert.AreEqual(400, result.StatusCode);
        }
コード例 #7
0
        public async Task GetTaskAsync_ReturnsNotFound_ForInvalidId()
        {
            // Arrange
            var mockRepo  = new Mock <IRepository <TesTask> >();
            var tesTaskId = "IdDoesNotExist";

            mockRepo.Setup(repo => repo.GetItemAsync(tesTaskId)).ReturnsAsync((RepositoryItem <TesTask>)null);
            var controller = new TaskServiceApiController(mockRepo.Object, new NullLogger <TaskServiceApiController>());

            // Act
            var result = await controller.GetTaskAsync(tesTaskId, "MINIMAL") as NotFoundObjectResult;

            // Assert
            Assert.IsNotNull(result);
            Assert.AreEqual(404, result.StatusCode);
        }
コード例 #8
0
        public async Task ListTasks_ReturnsJsonResult()
        {
            // Arrange
            var mockRepo     = new Mock <IRepository <TesTask> >();
            var firstTesTask = new TesTask {
                Id = "tesTaskId1", State = TesState.COMPLETEEnum, Name = "tesTask"
            };
            var secondTesTask = new TesTask {
                Id = "tesTaskId2", State = TesState.EXECUTORERROREnum, Name = "tesTask2"
            };
            var thirdTesTask = new TesTask {
                Id = "tesTaskId3", State = TesState.EXECUTORERROREnum, Name = "someOtherTask2"
            };
            var namePrefix = "tesTask";

            var repositoryItem1 = new RepositoryItem <TesTask> {
                ETag = Guid.NewGuid().ToString(), Value = firstTesTask
            };
            var repositoryItem2 = new RepositoryItem <TesTask> {
                ETag = Guid.NewGuid().ToString(), Value = secondTesTask
            };
            var repositoryItem3 = new RepositoryItem <TesTask> {
                ETag = Guid.NewGuid().ToString(), Value = thirdTesTask
            };
            var repositoryItems = new[] { repositoryItem1, repositoryItem2, repositoryItem3 };

            mockRepo.Setup(repo => repo
                           .GetItemsAsync(It.IsAny <Expression <Func <TesTask, bool> > >(), It.IsAny <int>(), It.IsAny <string>()))
            .ReturnsAsync((Expression <Func <TesTask, bool> > predicate, int pageSize, string continuationToken) =>
                          ("", repositoryItems.Where(i => predicate.Compile().Invoke(i.Value)).Take(pageSize)));

            var controller = new TaskServiceApiController(mockRepo.Object, new NullLogger <TaskServiceApiController>());

            // Act
            var result = await controller.ListTasks(namePrefix, 1, null, "BASIC") as JsonResult;

            var listOfTesTasks = (TesListTasksResponse)result.Value;

            // Assert
            Assert.IsNotNull(result);
            Assert.AreEqual(1, listOfTesTasks.Tasks.Count);
            Assert.AreEqual(200, result.StatusCode);
        }
コード例 #9
0
        public async Task CreateTaskAsync_CromwellJobIdIsUsedAsTaskIdPrefix()
        {
            var mockRepo        = new Mock <IRepository <TesTask> >();
            var cromwellJobId   = Guid.NewGuid().ToString();
            var taskDescription = $"{cromwellJobId}:BackendJobDescriptorKey_CommandCallNode_wf_hello.hello:-1:1";
            var tesTask         = new TesTask()
            {
                Description = taskDescription, Executors = new List <TesExecutor> {
                    new TesExecutor {
                        Image = "ubuntu"
                    }
                }
            };
            var controller = new TaskServiceApiController(mockRepo.Object, new NullLogger <TaskServiceApiController>());

            await controller.CreateTaskAsync(tesTask);

            Assert.AreEqual(41, tesTask.Id.Length); // First eight characters of Cromwell's job id + underscore + GUID without dashes
            Assert.IsTrue(tesTask.Id.StartsWith(cromwellJobId.Substring(0, 8) + "_"));
        }
コード例 #10
0
        public async Task GetTaskAsync_ReturnsBadRequest_ForInvalidViewValue()
        {
            // Arrange
            var mockRepo = new Mock <IRepository <TesTask> >();
            var tesTask  = new TesTask();

            var repositoryItem = new RepositoryItem <TesTask> {
                ETag = Guid.NewGuid().ToString(), Value = tesTask
            };

            mockRepo.Setup(repo => repo.GetItemAsync(tesTask.Id)).ReturnsAsync(repositoryItem);
            var controller = new TaskServiceApiController(mockRepo.Object, new NullLogger <TaskServiceApiController>());

            // Act
            var result = await controller.GetTaskAsync(tesTask.Id, "INVALID") as BadRequestObjectResult;

            // Assert
            Assert.IsNotNull(result);
            Assert.AreEqual(400, result.StatusCode);
        }
コード例 #11
0
        public async Task CreateTaskAsync_ReturnsBadRequest_ForInvalidId()
        {
            // Arrange
            var mockRepo = new Mock <IRepository <TesTask> >();
            var tesTask  = new TesTask {
                Id = "ClientProvidedId", Executors = new List <TesExecutor> {
                    new TesExecutor {
                        Image = "ubuntu"
                    }
                }
            };

            var controller = new TaskServiceApiController(mockRepo.Object, new NullLogger <TaskServiceApiController>());

            // Act
            var result = await controller.CreateTaskAsync(tesTask) as BadRequestObjectResult;

            // Assert
            Assert.IsNotNull(result);
            Assert.AreEqual(400, result.StatusCode);
        }