1
+ Invoke-LiveTestScenario - Name " File basics" - Description " Test File basic operation" - ScenarioScript `
2
+ {
3
+ param ($rg )
4
+
5
+ $rgName = $rg.ResourceGroupName
6
+ $storageAccountName = New-LiveTestStorageAccountName
7
+ $shareName = New-LiveTestResourceName
8
+ $testfile512path = " $PSScriptRoot \TestFiles\testfile512"
9
+ $localDestFile = " $PSScriptRoot \TestFiles\dest"
10
+ $location = $rg.Location
11
+ $account = New-AzStorageAccount - ResourceGroupName $rgName - Name $storageAccountName - Location $location - SkuName Standard_GRS - AllowSharedKeyAccess $true - Tag @ {" Az.Sec.DisableAllowSharedKeyAccess::Skip" = " For Powershell test." }
12
+ $ctx = $account.Context
13
+ $ctx1 = New-AzStorageContext - StorageAccountName $storageAccountName - StorageAccountKey (Get-AzStorageAccountKey - ResourceGroupName $rgName - Name $storageAccountName )[0 ].Value
14
+
15
+ $objectName1 = " filetest1.txt."
16
+ $objectName2 = " filetest2.txt"
17
+
18
+ # Create a file share
19
+ New-AzStorageShare $shareName - Context $ctx
20
+ $Share = Get-AzStorageShare - Name $shareName - Context $ctx
21
+ Assert-AreEqual $Share.Count 1
22
+ Assert-AreEqual $Share [0 ].Name $shareName
23
+
24
+ # upload file
25
+ $t = Set-AzStorageFileContent - source $testfile512path - ShareName $shareName - Path $objectName1 - Force - Context $ctx - asjob
26
+ $t | wait-job
27
+ Assert-AreEqual $t.State " Completed"
28
+ Assert-AreEqual $t.Error $null
29
+
30
+ # upload/remove file/dir with -DisAllowTrailingDot
31
+ $dirName1WithTrailingDot = " testdir1.."
32
+ $dirName1WithOutTrailingDot = " testdir1"
33
+ $objectPathWithoutTrailingDot = " testdir1/filetest1.txt"
34
+ New-AzStorageDirectory - ShareName $shareName - Path $dirName1WithTrailingDot - Context $ctx1 - DisAllowTrailingDot
35
+ $file11 = Set-AzStorageFileContent - source $testfile512path - ShareName $shareName - Path " $ ( $dirName1WithTrailingDot ) /$ ( $objectName1 ) " - Force - Context $ctx1 - DisAllowTrailingDot
36
+ $file = Get-AzStorageFile - ShareName $shareName - Path $objectPathWithoutTrailingDot - Context $ctx1 - DisAllowTrailingDot
37
+ Assert-AreEqual $file.Count 1
38
+ Assert-AreEqual $file [0 ].ShareFileClient.Path $objectPathWithoutTrailingDot
39
+ Remove-AzStorageFile - ShareName $shareName - Path " $ ( $dirName1WithTrailingDot ) /$ ( $objectName1 ) " - Context $ctx1 - DisAllowTrailingDot
40
+ Remove-AzStorageDirectory - ShareName $shareName - Path $dirName1WithTrailingDot - Context $ctx1 - DisAllowTrailingDot
41
+
42
+ # list file
43
+ $file = Get-AzStorageFile - ShareName $shareName - Context $ctx
44
+ Assert-AreEqual $file.Count 1
45
+ Assert-AreEqual $file [0 ].Name $objectName1
46
+ Assert-NotNull $file [0 ].ListFileProperties.Properties.ETag
47
+
48
+ if ($Env: OS -eq " Windows_NT" )
49
+ {
50
+ Set-AzStorageFileContent - source $testfile512path - ShareName $shareName - Path $objectName1 - PreserveSMBAttribute - Force - Context $ctx
51
+ }
52
+ else
53
+ {
54
+ Set-AzStorageFileContent - source $testfile512path - ShareName $shareName - Path $objectName1 - Force - Context $ctx
55
+ }
56
+ $file = Get-AzStorageFile - ShareName $shareName - Context $ctx
57
+ Assert-AreEqual $file.Count 1
58
+ Assert-AreEqual $file [0 ].Name $objectName1
59
+ Assert-NotNull $file [0 ].ListFileProperties.Properties.ETag
60
+ if ($Env: OS -eq " Windows_NT" )
61
+ {
62
+ $localFileProperties = Get-ItemProperty $testfile512path
63
+ Assert-AreEqual $localFileProperties.CreationTime.ToUniversalTime ().Ticks $file [0 ].ListFileProperties.Properties.CreatedOn.ToUniversalTime().Ticks
64
+ Assert-AreEqual $localFileProperties.LastWriteTime.ToUniversalTime ().Ticks $file [0 ].ListFileProperties.Properties.LastWrittenOn.ToUniversalTime().Ticks
65
+ Assert-AreEqual $localFileProperties.Attributes.ToString () $file [0 ].ListFileProperties.FileAttributes.ToString()
66
+ }
67
+
68
+ Start-AzStorageFileCopy - SrcShareName $shareName - SrcFilePath $objectName1 - DestShareName $shareName - DestFilePath $objectName2 - Force - Context $ctx - DestContext $ctx
69
+ Get-AzStorageFileCopyState - ShareName $shareName - FilePath $objectName2 - Context $ctx - WaitForComplete
70
+ $file = Get-AzStorageFile - ShareName $shareName - Context $ctx
71
+ Assert-AreEqual $file.Count 2
72
+ Assert-AreEqual $file [0 ].Name $objectName1
73
+ Assert-AreEqual $file [1 ].Name $objectName2
74
+
75
+ $t = Get-AzStorageFileContent - ShareName $shareName - Path $objectName1 - Destination $localDestFile - Force - Context $ctx - asjob
76
+ $t | wait-job
77
+ Assert-AreEqual $t.State " Completed"
78
+ Assert-AreEqual $t.Error $null
79
+ Assert-AreEqual (Get-FileHash - Path $localDestFile - Algorithm MD5).Hash (Get-FileHash - Path $testfile512path - Algorithm MD5).Hash
80
+
81
+ if ($Env: OS -eq " Windows_NT" )
82
+ {
83
+ Get-AzStorageFileContent - ShareName $shareName - Path $objectName1 - Destination $localDestFile - PreserveSMBAttribute - Force - Context $ctx1
84
+ }
85
+ else
86
+ {
87
+ Get-AzStorageFileContent - ShareName $shareName - Path $objectName1 - Destination $localDestFile - Force - Context $ctx
88
+ }
89
+ Assert-AreEqual (Get-FileHash - Path $localDestFile - Algorithm MD5).Hash (Get-FileHash - Path $testfile512path - Algorithm MD5).Hash
90
+ if ($Env: OS -eq " Windows_NT" )
91
+ {
92
+ $file = Get-AzStorageFile - ShareName $shareName - Path $objectName1 - Context $ctx1
93
+ $localFileProperties = Get-ItemProperty $testfile512path
94
+ Assert-AreEqual $localFileProperties.CreationTime.ToUniversalTime ().Ticks $file [0 ].FileProperties.SmbProperties.FileCreatedOn.ToUniversalTime().Ticks
95
+ Assert-AreEqual $localFileProperties.LastWriteTime.ToUniversalTime ().Ticks $file [0 ].FileProperties.SmbProperties.FileLastWrittenOn.ToUniversalTime().Ticks
96
+ Assert-AreEqual $localFileProperties.Attributes.ToString () $file [0 ].FileProperties.SmbProperties.FileAttributes.ToString()
97
+ }
98
+
99
+ $fileName1 = " new" + $objectName1
100
+ $file = Get-AzStorageFile - ShareName $shareName - Path $objectName1 - Context $ctx
101
+
102
+ $file2 = Rename-AzStorageFile - ShareName $shareName - SourcePath $objectName1 - DestinationPath $fileName1 - Context $ctx
103
+ Assert-AreEqual $file2.Name $fileName1
104
+ Assert-AreEqual $file.FileProperties.ContentType $file2.FileProperties.ContentType
105
+ Assert-AreEqual $file.FileProperties.ContentLength $file2.FileProperties.ContentLength
106
+
107
+ $file3 = $file2 | Rename-AzStorageFile - DestinationPath $fileName1 - Context $ctx1 - Force
108
+ Assert-AreEqual $file3.Name $fileName1
109
+ Assert-AreEqual $file2.FileProperties.ContentType $file3.FileProperties.ContentType
110
+ Assert-AreEqual $file2.FileProperties.ContentLength $file3.FileProperties.ContentLength
111
+
112
+ Remove-AzStorageFile - ShareName $shareName - Path $fileName1 - Context $ctx
113
+ $file = Get-AzStorageFile - ShareName $shareName - Context $ctx
114
+ Assert-AreEqual $file.Count 1
115
+ Assert-AreEqual $file [0 ].Name $objectName2
116
+
117
+ $dirName = " filetestdir"
118
+ New-AzStorageDirectory - ShareName $shareName - Path $dirName - Context $ctx
119
+ $file = Get-AzStorageShare - Name $shareName - Context $ctx1 | Get-AzStorageFile - ExcludeExtendedInfo
120
+ Assert-AreEqual $file.Count 2
121
+ Assert-AreEqual $file [0 ].Name $dirName
122
+ Assert-AreEqual $file [0 ].GetType().Name " AzureStorageFileDirectory"
123
+ Assert-Null $file [0 ].ListFileProperties.Properties.ETag
124
+ Assert-AreEqual $file [1 ].Name $objectName2
125
+ Assert-AreEqual $file [1 ].GetType().Name " AzureStorageFile"
126
+ Assert-Null $file [1 ].ListFileProperties.Properties.ETag
127
+
128
+ $newDir = " new" + $dirName + " .."
129
+ $dir = Get-AzStorageFile - ShareName $shareName - Path $dirName - Context $ctx
130
+ $dir2 = Rename-AzStorageDirectory - ShareName $shareName - SourcePath $dirName - DestinationPath $newDir - Context $ctx1
131
+ Assert-AreEqual $newDir $dir2.Name
132
+ Assert-AreEqual $dir.ListFileProperties.IsDirectory $dir2.ListFileProperties.IsDirectory
133
+ Assert-AreEqual $dir.ListFileProperties.FileAttributes $dir2.ListFileProperties.FileAttributes
134
+
135
+ $newDir2 = " new2" + $dirName
136
+ $dir3 = $dir2 | Rename-AzStorageDirectory - DestinationPath $newDir2 - Context $ctx1
137
+ Assert-AreEqual $newDir2 $dir3.Name
138
+ Assert-AreEqual $dir2.ListFileProperties.IsDirectory $dir3.ListFileProperties.IsDirectory
139
+ Assert-AreEqual $dir2.ListFileProperties.FileAttributes $dir3.ListFileProperties.FileAttributes
140
+
141
+ $dir3 | Remove-AzStorageDirectory
142
+ $file = Get-AzStorageFile - ShareName $shareName - Context $ctx
143
+ Assert-AreEqual $file.Count 1
144
+ Assert-AreEqual $file [0 ].Name $objectName2
145
+ Assert-AreEqual $file [0 ].GetType().Name " AzureStorageFile"
146
+
147
+ # Clean Storage Account
148
+ Remove-AzStorageShare - Name $shareName - Force - Context $ctx
149
+ }
0 commit comments