コード例 #1
0
        public async Task <ActionResult> AddNamespace([FromBody] AddNamespaceRequest addNamespaceRequest)
        {
            if (!_addNamespaceRequestValidator.TryValidateAddNamespaceRequest(addNamespaceRequest,
                                                                              out string validationError))
            {
                Log.Warning($"Add namespace called with invalid input. Validation error: {validationError}");
                return(BadRequest(validationError));
            }

            try
            {
                await _namespaceRepository.CreateNamespaceAsync(
                    addNamespaceRequest.NamespaceName,
                    addNamespaceRequest.RoleName
                    );

                await _roleRepository
                .CreateNamespaceFullAccessRole(addNamespaceRequest.NamespaceName);

                return(Ok());
            }
            catch (Exception ex)
            {
                Log.Error($"An error occured trying to create the namespace: {ex.Message}");
                return(StatusCode(StatusCodes.Status500InternalServerError,
                                  $"An error occured trying to create the namespace: {ex.Message}"));
            }
        }
コード例 #2
0
        public bool TryValidateAddNamespaceRequest(AddNamespaceRequest request, out string validationError)
        {
            validationError = string.Empty;

            if (string.IsNullOrWhiteSpace(request.NamespaceName))
            {
                validationError = "Namespace name is invalid.";
                return(false);
            }

            // Namespace name 63 char max.
            if (request.NamespaceName.Length > 63)
            {
                validationError = "Namespace name is invalid. A maximum of 63 characters is allowed.";
                return(false);
            }

            // Label must consist of lower case alphanumeric characters or '-', and must start and end with an alphanumeric character.
            var allowedCharactersPattern = "^[a-z0-9]([-a-z0-9]*[a-z0-9])?$";
            var match = Regex.Match(request.NamespaceName, allowedCharactersPattern);

            if (!match.Success)
            {
                validationError = "Namespace name is invalid. It must consist of lower case alphanumeric characters or '-', and must start and end with an alphanumeric character.";
                return(false);
            }

            return(true);
        }
コード例 #3
0
        public void TryValidateAddNamespaceRequest_GivenValidInput_Validates()
        {
            // Arrange
            var sut     = new AddNamespaceRequestValidator();
            var request = new AddNamespaceRequest
            {
                NamespaceName = "my-namespace"
            };
            var validationErrors = string.Empty;

            // Act
            var validRequest = sut.TryValidateAddNamespaceRequest(request, out validationErrors);

            // Assert
            Assert.True(validRequest);
            Assert.Equal(string.Empty, validationErrors);
        }
コード例 #4
0
        public void TryValidateAddNamespaceRequest_GivenUpperCaseNamespaceName_DoesNotValidate()
        {
            // Arrange
            var sut     = new AddNamespaceRequestValidator();
            var request = new AddNamespaceRequest
            {
                NamespaceName = "My-Namespace"
            };
            var validationErrors = string.Empty;

            // Act
            var validRequest = sut.TryValidateAddNamespaceRequest(request, out validationErrors);

            // Assert
            Assert.False(validRequest);
            Assert.NotEqual(string.Empty, validationErrors);
        }
コード例 #5
0
        public void TryValidateAddNamespaceRequest_GivenTooLongNamespaceName_DoesNotValidate()
        {
            // Arrange
            var sut = new AddNamespaceRequestValidator();
            var namespaceNameLongerThan64Characters = new string('a', 64);
            var request = new AddNamespaceRequest
            {
                NamespaceName = namespaceNameLongerThan64Characters
            };
            var validationErrors = string.Empty;

            // Act
            var validRequest = sut.TryValidateAddNamespaceRequest(request, out validationErrors);

            // Assert
            Assert.False(validRequest);
            Assert.NotEqual(string.Empty, validationErrors);
        }