From 2bad9229ee9f57eae62b8c6d735a1eec7279eb7e Mon Sep 17 00:00:00 2001 From: Neil Ye Date: Wed, 13 Feb 2019 03:30:46 +0800 Subject: [PATCH] fix(provider/azure): Add Application Name Validator for Azure (#6473) fix(provider/azure): Add Application Name Validator for Azure. --- app/scripts/modules/azure/azure.module.js | 1 + .../validation/applicationName.validator.js | 40 +++++++++++++++++++ 2 files changed, 41 insertions(+) create mode 100644 app/scripts/modules/azure/validation/applicationName.validator.js diff --git a/app/scripts/modules/azure/azure.module.js b/app/scripts/modules/azure/azure.module.js index 4c2ce0f08cd..7e67dbcaae2 100644 --- a/app/scripts/modules/azure/azure.module.js +++ b/app/scripts/modules/azure/azure.module.js @@ -34,6 +34,7 @@ module.exports = angular require('./securityGroup/securityGroup.reader').name, require('./image/image.reader').name, require('./cache/cacheConfigurer.service').name, + require('./validation/applicationName.validator').name, ]) .config(function() { CloudProviderRegistry.registerProvider('azure', { diff --git a/app/scripts/modules/azure/validation/applicationName.validator.js b/app/scripts/modules/azure/validation/applicationName.validator.js new file mode 100644 index 00000000000..65eacd965ae --- /dev/null +++ b/app/scripts/modules/azure/validation/applicationName.validator.js @@ -0,0 +1,40 @@ +'use strict'; + +const angular = require('angular'); + +import { ApplicationNameValidator } from '@spinnaker/core'; + +module.exports = angular + .module('spinnaker.azure.validation.applicationName', []) + .factory('azureApplicationNameValidator', function() { + function validateSpecialCharacters(name, errors) { + const pattern = /^([a-zA-Z][a-zA-Z0-9]*)?$/; + if (!pattern.test(name)) { + errors.push( + 'The application name must begin with a letter and must contain only letters or digits. No ' + + 'special characters are allowed.', + ); + } + } + + function validate(name) { + const warnings = [], + errors = []; + + if (name && name.length) { + validateSpecialCharacters(name, errors); + } + + return { + warnings: warnings, + errors: errors, + }; + } + + return { + validate: validate, + }; + }) + .run(function(azureApplicationNameValidator) { + ApplicationNameValidator.registerValidator('azure', azureApplicationNameValidator); + });