public async void RequestEngineToken_ReturnsSuccess()
        {
            _catapultEngineService.Setup(s => s.GetCatapultEngine(It.IsAny <int>(), It.IsAny <CancellationToken>()))
            .ReturnsAsync((int id, CancellationToken cancellationToken) => new CatapultEngine
            {
                Id       = id,
                Name     = "Engine01",
                IsActive = true
            });
            _catapultEngineService.Setup(s => s.GetCatapultEngineRole(It.IsAny <int>(), It.IsAny <CancellationToken>()))
            .ReturnsAsync(UserRole.Engine);

            _configuration.SetupGet(x => x["Security:Tokens:Key"]).Returns("key12345678910abcdefghijklmnopqrstuvwxyz");
            _configuration.SetupGet(x => x["Security:Tokens:Issuer"]).Returns("issuer");
            _configuration.SetupGet(x => x["Security:Tokens:Audience"]).Returns("audience");


            var controller = new TokenController(_userService.Object, _projectService.Object, _catapultEngineService.Object, _configuration.Object, _logger.Object);

            var dto = new RequestEngineTokenDto();

            var result = await controller.RequestEngineToken(1, dto);

            var okResult    = Assert.IsType <OkObjectResult>(result);
            var returnValue = Assert.IsType <string>(okResult.Value);

            Assert.NotEmpty(returnValue);
        }
        public async void RequestEngineToken_ReturnsEngineIsSuspended()
        {
            _catapultEngineService.Setup(s => s.GetCatapultEngine(It.IsAny <int>(), It.IsAny <CancellationToken>()))
            .ReturnsAsync((int id, CancellationToken cancellationToken) => new CatapultEngine
            {
                Id       = id,
                Name     = "Engine01",
                IsActive = false
            });

            var controller = new TokenController(_userService.Object, _projectService.Object, _catapultEngineService.Object, _configuration.Object, _logger.Object);

            var dto = new RequestEngineTokenDto();

            var result = await controller.RequestEngineToken(1, dto);

            var badRequestResult = Assert.IsType <BadRequestObjectResult>(result);

            Assert.Equal("Engine is suspended", badRequestResult.Value);
        }
Exemplo n.º 3
0
        public async Task <IActionResult> RequestEngineToken(int engineId, RequestEngineTokenDto dto)
        {
            _logger.LogInformation("Requesting token for engine {engineId}. Request body: {@dto}", engineId, dto);

            var engine = await _catapultEngineService.GetCatapultEngine(engineId);

            if (!engine.IsActive)
            {
                _logger.LogWarning("Engine is suspended");
                return(BadRequest("Engine is suspended"));
            }

            var engineRole = await _catapultEngineService.GetCatapultEngineRole(engineId);

            var tokenKey      = _configuration["Security:Tokens:Key"];
            var tokenIssuer   = _configuration["Security:Tokens:Issuer"];
            var tokenAudience = _configuration["Security:Tokens:Audience"];

            var token = AuthorizationToken.GenerateEngineToken(engine.Name, engineRole, tokenKey, tokenIssuer, tokenAudience, dto?.Expires);

            return(Ok(token));
        }
Exemplo n.º 4
0
        public async Task <string> RequestEngineToken(int engineId, RequestEngineTokenDto dto)
        {
            var path = $"token/engine/{engineId}";

            return(await Api.Post(path, dto));
        }