From 091421b62efdcba6c1439db0c60b5389268cb83a Mon Sep 17 00:00:00 2001 From: Daniel Scott-Raynsford Date: Sun, 4 Nov 2018 16:48:28 +1300 Subject: [PATCH] Improved validation on User Defined Function Id parameter on *-CosmosDBUser* functions --- CHANGELOG.md | 4 ++ src/en-US/CosmosDB.strings.psd1 | 1 + src/lib/users/Assert-CosmosDbUserIdValid.ps1 | 25 +++++++++++ src/lib/users/Get-CosmosDbUser.ps1 | 6 +-- .../users/Get-CosmosDbUserResourcePath.ps1 | 2 + src/lib/users/New-CosmosDbUser.ps1 | 6 +-- src/lib/users/Remove-CosmosDbUser.ps1 | 6 +-- src/lib/users/Set-CosmosDbUser.ps1 | 8 ++-- test/Unit/CosmosDB.users.Tests.ps1 | 44 +++++++++++++++++++ 9 files changed, 89 insertions(+), 13 deletions(-) create mode 100644 src/lib/users/Assert-CosmosDbUserIdValid.ps1 diff --git a/CHANGELOG.md b/CHANGELOG.md index d8b934b4..c6c976d1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -35,6 +35,10 @@ - Improved validation on Account parameter on `*-CosmosDBUserDefinedFunction*` functions. - Improved validation on Database parameter on `*-CosmosDBUserDefinedFunction*` functions. - Improved validation on Collection parameter on `*-CosmosDBUserDefinedFunction*` functions. +- Improved validation on User Defined Function Id parameter on + `*-CosmosDBUser*` functions - fixes [Issue #217](https://github.com/PlagueHO/CosmosDB/issues/217). +- Improved validation on Account parameter on `*-CosmosDBUser*` functions. +- Improved validation on Database parameter on `*-CosmosDBUser*` functions. ## 2.1.12.137 diff --git a/src/en-US/CosmosDB.strings.psd1 b/src/en-US/CosmosDB.strings.psd1 index b3df0ea2..344d0eec 100644 --- a/src/en-US/CosmosDB.strings.psd1 +++ b/src/en-US/CosmosDB.strings.psd1 @@ -41,4 +41,5 @@ ConvertFrom-StringData -StringData @' StoredProcedureIdInvalid = The Stored Procedure Id '{0}' is invalid. A Stored Procedure Id must not contain characters '\','/','#' or '?', end with a space or be longer than 255 characters. TriggerIdInvalid = The Trigger Id '{0}' is invalid. A Trigger Id must not contain characters '\','/','#' or '?', end with a space or be longer than 255 characters. UserDefinedFunctionIdInvalid = The User Defined Function Id '{0}' is invalid. A User Defined Function Id must not contain characters '\','/','#' or '?', end with a space or be longer than 255 characters. + UserIdInvalid = The User Id '{0}' is invalid. A User Id must not contain characters '\','/','#' or '?', end with a space or be longer than 255 characters. '@ diff --git a/src/lib/users/Assert-CosmosDbUserIdValid.ps1 b/src/lib/users/Assert-CosmosDbUserIdValid.ps1 new file mode 100644 index 00000000..0df1fbf4 --- /dev/null +++ b/src/lib/users/Assert-CosmosDbUserIdValid.ps1 @@ -0,0 +1,25 @@ +<# + .SYNOPSIS + Helper function that asserts a Cosmos DB User Id is valid. +#> +function Assert-CosmosDbUserIdValid +{ + + [CmdletBinding()] + [OutputType([System.Boolean])] + param + ( + [Parameter(Mandatory = $true)] + [ValidateNotNullOrEmpty()] + [System.String] + $Id + ) + + $matches = [regex]::Match($Id,"[^\\/#?]{1,255}(?"' -TestCases $testCases { + param + ( + [System.String] + $Id + ) + + { + Assert-CosmosDbUserIdValid -Id $Id + } | Should -Throw ($LocalizedData.UserIdInvalid -f $Id) + } + } + + Context 'When called with an Id ending with a space' { + It 'Should throw expected exception' { + { + Assert-CosmosDbUserIdValid -Id ('a ') + } | Should -Throw ($LocalizedData.UserIdInvalid -f ('a ')) + } + } + } + Describe 'Get-CosmosDbUserResourcePath' -Tag 'Unit' { It 'Should exist' { { Get-Command -Name Get-CosmosDbUserResourcePath -ErrorAction Stop } | Should -Not -Throw