public async Task <IActionResult> RegisterTaskProvider(NewTaskProviderDto dto)
        {
            _logger.LogRequest("Registering task provider. Request body: {@dto}", dto);

            try
            {
                var taskProvider = await _taskProviderService.AddTaskProvider(dto.Name, dto.Type, dto.Author, dto.Version, dto.RequiredServices, dto.DisplayName, dto.Description,
                                                                              dto.ThumbnailUrl, dto.Tags, dto.Created, dto.Updated);

                var result = _mapper.Map <TaskProviderDto>(taskProvider);

                if (dto.AdditionalConfigs != null && dto.AdditionalConfigs.Length > 0)
                {
                    var additionalConfigs = _mapper.Map <List <TaskProviderAdditionalConfig> >(dto.AdditionalConfigs);
                    var _ = await _taskProviderAdditionalConfigService.AddAdditionalConfigs(taskProvider.Id, additionalConfigs);
                }

                _logger.LogResponse("Task provider created. Response body: {@result}", result);

                return(CreatedAtRoute("GetProviderById", new { taskProviderId = taskProvider.Id }, result));
            }
            catch (RequiredServicesNotSupportedException ex)
            {
                return(BadRequest(ex.Message));
            }
        }
        public async void RegisterProvider_ReturnsCreatedProvider()
        {
            _providerService
            .Setup(s => s.AddTaskProvider(It.IsAny <string>(), It.IsAny <string>(), It.IsAny <string>(), It.IsAny <string>(), It.IsAny <string[]>(),
                                          It.IsAny <string>(), It.IsAny <string>(), It.IsAny <string>(), It.IsAny <string>(), It.IsAny <DateTime>(), It.IsAny <DateTime?>(), It.IsAny <CancellationToken>()))
            .ReturnsAsync((string name, string type, string author, string version, string[] requiredServices,
                           string displayName, string description, string thumnailUrl, string tags, DateTime created, DateTime? updated, CancellationToken cancellationToken) =>
                          new TaskProvider
            {
                Id      = 1,
                Name    = name,
                Type    = type,
                Author  = author,
                Version = version,
                RequiredServicesString = string.Join(",", requiredServices)
            });
            _providerAdditionalConfigService.Setup(s => s.AddAdditionalConfigs(It.IsAny <int>(), It.IsAny <List <TaskProviderAdditionalConfig> >(), It.IsAny <CancellationToken>()))
            .ReturnsAsync(new List <int> {
                1
            });

            var controller = new TaskProviderController(_providerService.Object, _providerAdditionalConfigService.Object, _mapper, _logger.Object);

            var dto = new NewTaskProviderDto
            {
                Name             = "AspMvcNet",
                Type             = "GeneratorProvider",
                Author           = "polyrific",
                Version          = "1.0.0",
                RequiredServices = new string[] { "test" }
            };
            var result = await controller.RegisterTaskProvider(dto);

            var createAtRouteActionResult = Assert.IsType <CreatedAtRouteResult>(result);
            var returnValue = Assert.IsType <TaskProviderDto>(createAtRouteActionResult.Value);

            Assert.Equal(1, returnValue.Id);
            Assert.Equal("AspMvcNet", returnValue.Name);
            Assert.Equal("GeneratorProvider", returnValue.Type);
            Assert.Equal("polyrific", returnValue.Author);
            Assert.Equal("1.0.0", returnValue.Version);
            Assert.NotEmpty(returnValue.RequiredServices);
        }
        public void ProviderRegister_Execute_ReturnsSuccessMessage()
        {
            var testFile = Path.Combine(AppContext.BaseDirectory, "providerTest.yaml");

            if (File.Exists(testFile))
            {
                File.Delete(testFile);
            }

            var testContent = new NewTaskProviderDto
            {
                Name    = "AProvider01",
                Type    = TaskProviderType.HostingProvider,
                Author  = "Frandi",
                Version = "1.0"
            };
            var stringContent = YamlSerialize(testContent);

            File.WriteAllText(testFile, stringContent);

            _providerService.Setup(s => s.AddProvider(It.IsAny <NewTaskProviderDto>())).ReturnsAsync((NewTaskProviderDto dto) => new TaskProviderDto
            {
                Id      = 1,
                Name    = dto.Name,
                Type    = dto.Type,
                Author  = dto.Author,
                Version = dto.Version
            });

            var command = new RegisterCommand(_providerService.Object, _console, LoggerMock.GetLogger <RegisterCommand>().Object)
            {
                MetadataFile = testFile
            };

            var message = command.Execute();

            Assert.Equal("Task provider AProvider01 (v1.0) by Frandi has been registered successfully.", message);
        }
        private string YamlSerialize(NewTaskProviderDto dto)
        {
            var serializer = new SerializerBuilder().WithNamingConvention(new HyphenatedNamingConvention()).Build();

            return(serializer.Serialize(dto));
        }
예제 #5
0
        public async Task <TaskProviderDto> AddProvider(NewTaskProviderDto dto)
        {
            var path = "task-provider";

            return(await Api.Post <NewTaskProviderDto, TaskProviderDto>(path, dto));
        }