-
-
Notifications
You must be signed in to change notification settings - Fork 829
/
Copy pathConvert-DbaMaskingValue.Tests.ps1
123 lines (106 loc) · 4.77 KB
/
Convert-DbaMaskingValue.Tests.ps1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
#Requires -Module @{ ModuleName="Pester"; ModuleVersion="5.0"}
param(
$ModuleName = "dbatools",
$PSDefaultParameterValues = ($TestConfig = Get-TestConfig).Defaults
)
Describe "Convert-DbaMaskingValue" -Tag "UnitTests" {
Context "Parameter validation" {
BeforeAll {
$command = Get-Command Convert-DbaMaskingValue
$expected = $TestConfig.CommonParameters
$expected += @(
"Value",
"DataType",
"Nullable",
"EnableException"
)
}
It "Has parameter: <_>" -ForEach $expected {
$command | Should -HaveParameter $PSItem
}
It "Should have exactly the number of expected parameters ($($expected.Count))" {
$hasparms = $command.Parameters.Values.Name
Compare-Object -ReferenceObject $expected -DifferenceObject $hasparms | Should -BeNullOrEmpty
}
}
}
Describe "Convert-DbaMaskingValue" -Tag "IntegrationTests" {
Context "Null values" {
It "Should return a single 'NULL' value" {
$value = $null
$convertedValue = Convert-DbaMaskingValue -Value $value -Nullable:$true
$convertedValue.NewValue | Should -Be 'NULL'
}
It "Should return multiple 'NULL' values" {
$value = @($null, $null)
$convertedValues = Convert-DbaMaskingValue -Value $value -Nullable:$true
$convertedValues[0].NewValue | Should -Be 'NULL'
$convertedValues[1].NewValue | Should -Be 'NULL'
}
}
Context "Text data types" {
It "Should return a text value for char data type" {
$value = "this is just text"
$convertedValue = Convert-DbaMaskingValue -Value $value -DataType char
$convertedValue.NewValue | Should -Be "'this is just text'"
}
It "Should return a text value for nchar data type" {
$value = "this is just text"
$convertedValue = Convert-DbaMaskingValue -Value $value -DataType nchar
$convertedValue.NewValue | Should -Be "'this is just text'"
}
It "Should return a text value for nvarchar data type" {
$value = "this is just text"
$convertedValue = Convert-DbaMaskingValue -Value $value -DataType nvarchar
$convertedValue.NewValue | Should -Be "'this is just text'"
}
It "Should return a text value for varchar data type" {
$value = "this is just text"
$convertedValue = Convert-DbaMaskingValue -Value $value -DataType varchar
$convertedValue.NewValue | Should -Be "'this is just text'"
}
It "Should return a text value for numeric string" {
$value = "2.13"
$convertedValue = Convert-DbaMaskingValue -Value $value -DataType varchar
$convertedValue.NewValue | Should -Be "'2.13'"
}
It "Should return a text value with multiple single quotes" {
$value = "'this is just text'"
$convertedValue = Convert-DbaMaskingValue -Value $value -DataType nchar
$convertedValue.NewValue | Should -Be "'''this is just text'''"
}
}
Context "Date and time data types" {
It "Should return a date value" {
$value = "2020-10-05 10:10:10.1234567"
$convertedValue = Convert-DbaMaskingValue -Value $value -DataType date
$convertedValue.NewValue | Should -Be "'2020-10-05'"
}
It "Should return a time value" {
$value = "2020-10-05 10:10:10.1234567"
$convertedValue = Convert-DbaMaskingValue -Value $value -DataType time
$convertedValue.NewValue | Should -Be "'10:10:10.1234567'"
}
It "Should return a datetime value" {
$value = "2020-10-05 10:10:10.1234567"
$convertedValue = Convert-DbaMaskingValue -Value $value -DataType datetime
$convertedValue.NewValue | Should -Be "'2020-10-05 10:10:10.123'"
}
}
Context "Handling multiple values" {
It "Should return a NULL value and text value" {
$value = @($null, "this is just text")
$convertedValues = Convert-DbaMaskingValue -Value $value -Nullable:$true
$convertedValues[0].NewValue | Should -Be 'NULL'
$convertedValues[1].NewValue | Should -Be "'this is just text'"
}
}
Context "Error handling" {
It "Should throw an error when value is missing" {
{ Convert-DbaMaskingValue -Value $null -DataType datetime -EnableException } | Should -Throw "Please enter a value"
}
It "Should throw an error when data type is missing" {
{ Convert-DbaMaskingValue -Value "whatever" -EnableException } | Should -Throw "Please enter a data type"
}
}
}