Merge pull request #10093 from abpframework/Move-ProjectNameValidator-enhancements-to-4.4

Move ProjectNameValidator enhancements to 4.4
pull/10094/head
ebicoglu 4 years ago committed by GitHub
commit 5feb924fee
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -61,10 +61,7 @@ namespace Volo.Abp.Cli.Commands
);
}
if (!ProjectNameValidator.IsValid(projectName))
{
throw new CliUsageException("The project name is invalid! Please specify a different name.");
}
ProjectNameValidator.Validate(projectName);
Logger.LogInformation("Creating your project...");
Logger.LogInformation("Project name: " + projectName);
@ -559,4 +556,4 @@ namespace Volo.Abp.Cli.Commands
}
}
}
}
}

@ -22,70 +22,50 @@ namespace Volo.Abp.Cli.Utils
"Blazor"
};
private static bool HasParentDirectoryString(string projectName)
private static void ValidateParentDirectoryString(string projectName)
{
return projectName.Contains("..");
if (projectName.Contains(".."))
{
throw new CliUsageException("Project name cannot contain \"..\"! Specify a different name.");
}
}
private static bool HasSurrogateOrControlChar(string projectName)
private static void ValidateSurrogateOrControlChar(string projectName)
{
return projectName.Any(chr => char.IsControl(chr) || char.IsSurrogate(chr));
if (projectName.Any(chr => char.IsControl(chr) || char.IsSurrogate(chr)))
{
throw new CliUsageException("Project name cannot contain surrogate or control characters! Specify a different name.");
}
}
private static bool IsIllegalProjectName(string projectName)
private static void ValidateIllegalProjectName(string projectName)
{
foreach (var illegalProjectName in IllegalProjectNames)
{
if (projectName.Equals(illegalProjectName, StringComparison.OrdinalIgnoreCase))
{
return true;
throw new CliUsageException("Project name cannot be \"" + illegalProjectName + "\"! Specify a different name.");
}
}
return false;
}
private static bool HasIllegalKeywords(string projectName)
private static void ValidateIllegalKeywords(string projectName)
{
foreach (var illegalKeyword in IllegalKeywords)
{
if (projectName.Contains(illegalKeyword))
if (projectName.Split(".").Contains(illegalKeyword))
{
return true;
throw new CliUsageException("Project name cannot contain the word \"" + illegalKeyword + "\". Specify a different name.");
}
}
return false;
}
public static bool IsValid(string projectName)
public static void Validate(string projectName)
{
if (projectName == null)
{
throw new CliUsageException("Project name cannot be empty!");
}
if (HasSurrogateOrControlChar(projectName))
{
return false;
}
if (HasParentDirectoryString(projectName))
{
return false;
}
if (IsIllegalProjectName(projectName))
{
return false;
}
if (HasIllegalKeywords(projectName))
{
return false;
}
return true;
ValidateSurrogateOrControlChar(projectName);
ValidateParentDirectoryString(projectName);
ValidateIllegalProjectName(projectName);
ValidateIllegalKeywords(projectName);
}
}
}

@ -18,7 +18,7 @@ namespace Volo.Abp.Cli
}
[Fact]
public async Task IllegalProjectName_Test()
public async Task Illegal_ProjectName_Test()
{
var illegalProjectNames = new[]
{
@ -39,27 +39,28 @@ namespace Volo.Abp.Cli
}
[Fact]
public async Task ParentDirectoryContain_Test()
public async Task Parent_Directory_Char_Contains_Test()
{
var args = new CommandLineArgs("new", "Test..Test");
await _newCommand.ExecuteAsync(args).ShouldThrowAsync<CliUsageException>();
}
[Fact]
public async Task Has_Illegel_Keyword_Test()
public async Task Contains_Illegal_Keyword_Test()
{
var illegalKeywords = new[]
{
"Acme.Blazor",
"MyBlazor",
"Blazor"
};
foreach (var illegalKeyword in illegalKeywords)
{
var args = new CommandLineArgs("new", illegalKeyword);
await _newCommand.ExecuteAsync(args).ShouldThrowAsync<CliUsageException>();
args = new CommandLineArgs("new", "Acme." + illegalKeyword);
await _newCommand.ExecuteAsync(args).ShouldThrowAsync<CliUsageException>();
}
}

Loading…
Cancel
Save