diff --git a/sdk/storage/storage-file-share/CHANGELOG.md b/sdk/storage/storage-file-share/CHANGELOG.md
index a5c0cd5ed944..ffef8916ac37 100644
--- a/sdk/storage/storage-file-share/CHANGELOG.md
+++ b/sdk/storage/storage-file-share/CHANGELOG.md
@@ -4,9 +4,8 @@
### Features Added
-### Breaking Changes
-
-### Bugs Fixed
+- Added support for service version 2021-12-02.
+- Added support for invalid XML characters in file and directory names for ShareDirectoryClient.listFilesAndDirectories(), .listHandles(), and ShareFileClient.listHandles().
### Other Changes
diff --git a/sdk/storage/storage-file-share/recordings/browsers/directoryclient/recording_listfilesanddirectories__with_invalid_char.json b/sdk/storage/storage-file-share/recordings/browsers/directoryclient/recording_listfilesanddirectories__with_invalid_char.json
new file mode 100644
index 000000000000..78bce817540e
--- /dev/null
+++ b/sdk/storage/storage-file-share/recordings/browsers/directoryclient/recording_listfilesanddirectories__with_invalid_char.json
@@ -0,0 +1,460 @@
+{
+ "recordings": [
+ {
+ "method": "PUT",
+ "url": "https://fakestorageaccount.file.core.windows.net/share167569082541901026",
+ "query": {
+ "restype": "share"
+ },
+ "requestBody": null,
+ "status": 201,
+ "response": "",
+ "responseHeaders": {
+ "content-length": "0",
+ "date": "Mon, 06 Feb 2023 13:40:25 GMT",
+ "etag": "\"0x8DB0847B3F65F9D\"",
+ "last-modified": "Mon, 06 Feb 2023 13:40:25 GMT",
+ "server": "Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0",
+ "x-ms-client-request-id": "d2f752b8-8a1b-4d5c-934a-280254901eb4",
+ "x-ms-request-id": "4656dc60-d01a-0043-1b30-3aa7a2000000",
+ "x-ms-version": "2021-12-02"
+ }
+ },
+ {
+ "method": "PUT",
+ "url": "https://fakestorageaccount.file.core.windows.net/share167569082541901026/dir167569082581300115",
+ "query": {
+ "restype": "directory"
+ },
+ "requestBody": null,
+ "status": 201,
+ "response": "",
+ "responseHeaders": {
+ "content-length": "0",
+ "date": "Mon, 06 Feb 2023 13:40:25 GMT",
+ "etag": "\"0x8DB0847B3FC9C4B\"",
+ "last-modified": "Mon, 06 Feb 2023 13:40:25 GMT",
+ "server": "Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0",
+ "x-ms-client-request-id": "2f65e701-addf-4ad0-bd39-48d2dd074b5c",
+ "x-ms-file-attributes": "Directory",
+ "x-ms-file-change-time": "2023-02-06T13:40:25.8434123Z",
+ "x-ms-file-creation-time": "2023-02-06T13:40:25.8434123Z",
+ "x-ms-file-id": "13835128424026341376",
+ "x-ms-file-last-write-time": "2023-02-06T13:40:25.8434123Z",
+ "x-ms-file-parent-id": "0",
+ "x-ms-file-permission-key": "9212185477508673717*1658283376881248060",
+ "x-ms-request-id": "4656dc63-d01a-0043-1d30-3aa7a2000000",
+ "x-ms-request-server-encrypted": "true",
+ "x-ms-version": "2021-12-02"
+ }
+ },
+ {
+ "method": "PUT",
+ "url": "https://fakestorageaccount.file.core.windows.net/share167569082541901026/dir%EF%BF%BE167569082584204303",
+ "query": {
+ "restype": "directory"
+ },
+ "requestBody": null,
+ "status": 201,
+ "response": "",
+ "responseHeaders": {
+ "content-length": "0",
+ "date": "Mon, 06 Feb 2023 13:40:25 GMT",
+ "etag": "\"0x8DB0847B3FF8214\"",
+ "last-modified": "Mon, 06 Feb 2023 13:40:25 GMT",
+ "server": "Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0",
+ "x-ms-client-request-id": "fdca07f7-a064-4765-a9bd-6731e39d1aaf",
+ "x-ms-file-attributes": "Directory",
+ "x-ms-file-change-time": "2023-02-06T13:40:25.8624020Z",
+ "x-ms-file-creation-time": "2023-02-06T13:40:25.8624020Z",
+ "x-ms-file-id": "11529285414812647424",
+ "x-ms-file-last-write-time": "2023-02-06T13:40:25.8624020Z",
+ "x-ms-file-parent-id": "0",
+ "x-ms-file-permission-key": "9212185477508673717*1658283376881248060",
+ "x-ms-request-id": "4656dc66-d01a-0043-1f30-3aa7a2000000",
+ "x-ms-request-server-encrypted": "true",
+ "x-ms-version": "2021-12-02"
+ }
+ },
+ {
+ "method": "PUT",
+ "url": "https://fakestorageaccount.file.core.windows.net/share167569082541901026/dir%EF%BF%BE167569082584204303/dir%EF%BF%BE0167569082585804736",
+ "query": {
+ "restype": "directory"
+ },
+ "requestBody": null,
+ "status": 201,
+ "response": "",
+ "responseHeaders": {
+ "content-length": "0",
+ "date": "Mon, 06 Feb 2023 13:40:25 GMT",
+ "etag": "\"0x8DB0847B401CBB1\"",
+ "last-modified": "Mon, 06 Feb 2023 13:40:25 GMT",
+ "server": "Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0",
+ "x-ms-client-request-id": "644cb451-5fab-47c9-9869-c52938ff776a",
+ "x-ms-file-attributes": "Directory",
+ "x-ms-file-change-time": "2023-02-06T13:40:25.8773937Z",
+ "x-ms-file-creation-time": "2023-02-06T13:40:25.8773937Z",
+ "x-ms-file-id": "16140971433240035328",
+ "x-ms-file-last-write-time": "2023-02-06T13:40:25.8773937Z",
+ "x-ms-file-parent-id": "11529285414812647424",
+ "x-ms-file-permission-key": "9212185477508673717*1658283376881248060",
+ "x-ms-request-id": "4656dc68-d01a-0043-2130-3aa7a2000000",
+ "x-ms-request-server-encrypted": "true",
+ "x-ms-version": "2021-12-02"
+ }
+ },
+ {
+ "method": "PUT",
+ "url": "https://fakestorageaccount.file.core.windows.net/share167569082541901026/dir%EF%BF%BE167569082584204303/dir%EF%BF%BE1167569082587604658",
+ "query": {
+ "restype": "directory"
+ },
+ "requestBody": null,
+ "status": 201,
+ "response": "",
+ "responseHeaders": {
+ "content-length": "0",
+ "date": "Mon, 06 Feb 2023 13:40:25 GMT",
+ "etag": "\"0x8DB0847B4046367\"",
+ "last-modified": "Mon, 06 Feb 2023 13:40:25 GMT",
+ "server": "Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0",
+ "x-ms-client-request-id": "de63a4ce-c2a0-4da8-94e9-d5db0f98703f",
+ "x-ms-file-attributes": "Directory",
+ "x-ms-file-change-time": "2023-02-06T13:40:25.8943847Z",
+ "x-ms-file-creation-time": "2023-02-06T13:40:25.8943847Z",
+ "x-ms-file-id": "10376363910205800448",
+ "x-ms-file-last-write-time": "2023-02-06T13:40:25.8943847Z",
+ "x-ms-file-parent-id": "11529285414812647424",
+ "x-ms-file-permission-key": "9212185477508673717*1658283376881248060",
+ "x-ms-request-id": "4656dc6a-d01a-0043-2330-3aa7a2000000",
+ "x-ms-request-server-encrypted": "true",
+ "x-ms-version": "2021-12-02"
+ }
+ },
+ {
+ "method": "PUT",
+ "url": "https://fakestorageaccount.file.core.windows.net/share167569082541901026/dir%EF%BF%BE167569082584204303/dir%EF%BF%BE2167569082589108104",
+ "query": {
+ "restype": "directory"
+ },
+ "requestBody": null,
+ "status": 201,
+ "response": "",
+ "responseHeaders": {
+ "content-length": "0",
+ "date": "Mon, 06 Feb 2023 13:40:25 GMT",
+ "etag": "\"0x8DB0847B406FB27\"",
+ "last-modified": "Mon, 06 Feb 2023 13:40:25 GMT",
+ "server": "Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0",
+ "x-ms-client-request-id": "2eac19a4-b42d-4619-a81e-ad7a2b5b762d",
+ "x-ms-file-attributes": "Directory",
+ "x-ms-file-change-time": "2023-02-06T13:40:25.9113767Z",
+ "x-ms-file-creation-time": "2023-02-06T13:40:25.9113767Z",
+ "x-ms-file-id": "14988049928633188352",
+ "x-ms-file-last-write-time": "2023-02-06T13:40:25.9113767Z",
+ "x-ms-file-parent-id": "11529285414812647424",
+ "x-ms-file-permission-key": "9212185477508673717*1658283376881248060",
+ "x-ms-request-id": "4656dc6c-d01a-0043-2530-3aa7a2000000",
+ "x-ms-request-server-encrypted": "true",
+ "x-ms-version": "2021-12-02"
+ }
+ },
+ {
+ "method": "PUT",
+ "url": "https://fakestorageaccount.file.core.windows.net/share167569082541901026/dir%EF%BF%BE167569082584204303/file%EF%BF%BE0167569082590808961",
+ "query": {},
+ "requestBody": null,
+ "status": 201,
+ "response": "",
+ "responseHeaders": {
+ "content-length": "0",
+ "date": "Mon, 06 Feb 2023 13:40:25 GMT",
+ "etag": "\"0x8DB0847B409E0E3\"",
+ "last-modified": "Mon, 06 Feb 2023 13:40:25 GMT",
+ "server": "Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0",
+ "x-ms-client-request-id": "bd4eeded-9118-44f4-a9d9-438348d08bce",
+ "x-ms-file-attributes": "Archive",
+ "x-ms-file-change-time": "2023-02-06T13:40:25.9303651Z",
+ "x-ms-file-creation-time": "2023-02-06T13:40:25.9303651Z",
+ "x-ms-file-id": "12682206919419494400",
+ "x-ms-file-last-write-time": "2023-02-06T13:40:25.9303651Z",
+ "x-ms-file-parent-id": "11529285414812647424",
+ "x-ms-file-permission-key": "13809038870468939698*1658283376881248060",
+ "x-ms-request-id": "4656dc6e-d01a-0043-2730-3aa7a2000000",
+ "x-ms-request-server-encrypted": "true",
+ "x-ms-version": "2021-12-02"
+ }
+ },
+ {
+ "method": "PUT",
+ "url": "https://fakestorageaccount.file.core.windows.net/share167569082541901026/dir%EF%BF%BE167569082584204303/file%EF%BF%BE1167569082592707285",
+ "query": {},
+ "requestBody": null,
+ "status": 201,
+ "response": "",
+ "responseHeaders": {
+ "content-length": "0",
+ "date": "Mon, 06 Feb 2023 13:40:25 GMT",
+ "etag": "\"0x8DB0847B40C2A89\"",
+ "last-modified": "Mon, 06 Feb 2023 13:40:25 GMT",
+ "server": "Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0",
+ "x-ms-client-request-id": "50eea863-5e9e-4afd-80cb-71fb39d701be",
+ "x-ms-file-attributes": "Archive",
+ "x-ms-file-change-time": "2023-02-06T13:40:25.9453577Z",
+ "x-ms-file-creation-time": "2023-02-06T13:40:25.9453577Z",
+ "x-ms-file-id": "17293892937846882304",
+ "x-ms-file-last-write-time": "2023-02-06T13:40:25.9453577Z",
+ "x-ms-file-parent-id": "11529285414812647424",
+ "x-ms-file-permission-key": "13809038870468939698*1658283376881248060",
+ "x-ms-request-id": "4656dc70-d01a-0043-2930-3aa7a2000000",
+ "x-ms-request-server-encrypted": "true",
+ "x-ms-version": "2021-12-02"
+ }
+ },
+ {
+ "method": "PUT",
+ "url": "https://fakestorageaccount.file.core.windows.net/share167569082541901026/dir%EF%BF%BE167569082584204303/file%EF%BF%BE2167569082594209898",
+ "query": {},
+ "requestBody": null,
+ "status": 201,
+ "response": "",
+ "responseHeaders": {
+ "content-length": "0",
+ "date": "Mon, 06 Feb 2023 13:40:25 GMT",
+ "etag": "\"0x8DB0847B40E9B2F\"",
+ "last-modified": "Mon, 06 Feb 2023 13:40:25 GMT",
+ "server": "Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0",
+ "x-ms-client-request-id": "a28af494-4ff8-4a98-9669-e2d5b56e3ae3",
+ "x-ms-file-attributes": "Archive",
+ "x-ms-file-change-time": "2023-02-06T13:40:25.9613487Z",
+ "x-ms-file-creation-time": "2023-02-06T13:40:25.9613487Z",
+ "x-ms-file-id": "9799903157902376960",
+ "x-ms-file-last-write-time": "2023-02-06T13:40:25.9613487Z",
+ "x-ms-file-parent-id": "11529285414812647424",
+ "x-ms-file-permission-key": "13809038870468939698*1658283376881248060",
+ "x-ms-request-id": "4656dc72-d01a-0043-2b30-3aa7a2000000",
+ "x-ms-request-server-encrypted": "true",
+ "x-ms-version": "2021-12-02"
+ }
+ },
+ {
+ "method": "GET",
+ "url": "https://fakestorageaccount.file.core.windows.net/share167569082541901026/dir%EF%BF%BE167569082584204303",
+ "query": {
+ "comp": "list",
+ "restype": "directory",
+ "include": "Timestamps,Etag,Attributes,PermissionKey"
+ },
+ "requestBody": null,
+ "status": 200,
+ "response": "11529285414812647424dir%EF%BF%BE0167569082585804736161409714332400353282023-02-06T13:40:25.8773937Z2023-02-06T13:40:25.8773937Z2023-02-06T13:40:25.8773937Z2023-02-06T13:40:25.8773937ZMon, 06 Feb 2023 13:40:25 GMT\"0x8DB0847B401CBB1\"Directory9212185477508673717*1658283376881248060dir%EF%BF%BE1167569082587604658103763639102058004482023-02-06T13:40:25.8943847Z2023-02-06T13:40:25.8943847Z2023-02-06T13:40:25.8943847Z2023-02-06T13:40:25.8943847ZMon, 06 Feb 2023 13:40:25 GMT\"0x8DB0847B4046367\"Directory9212185477508673717*1658283376881248060dir%EF%BF%BE2167569082589108104149880499286331883522023-02-06T13:40:25.9113767Z2023-02-06T13:40:25.9113767Z2023-02-06T13:40:25.9113767Z2023-02-06T13:40:25.9113767ZMon, 06 Feb 2023 13:40:25 GMT\"0x8DB0847B406FB27\"Directory9212185477508673717*1658283376881248060file%EF%BF%BE01675690825908089611268220691941949440010242023-02-06T13:40:25.9303651Z2023-02-06T13:40:25.9303651Z2023-02-06T13:40:25.9303651Z2023-02-06T13:40:25.9303651ZMon, 06 Feb 2023 13:40:25 GMT\"0x8DB0847B409E0E3\"Archive13809038870468939698*1658283376881248060file%EF%BF%BE11675690825927072851729389293784688230410242023-02-06T13:40:25.9453577Z2023-02-06T13:40:25.9453577Z2023-02-06T13:40:25.9453577Z2023-02-06T13:40:25.9453577ZMon, 06 Feb 2023 13:40:25 GMT\"0x8DB0847B40C2A89\"Archive13809038870468939698*1658283376881248060file%EF%BF%BE2167569082594209898979990315790237696010242023-02-06T13:40:25.9613487Z2023-02-06T13:40:25.9613487Z2023-02-06T13:40:25.9613487Z2023-02-06T13:40:25.9613487ZMon, 06 Feb 2023 13:40:25 GMT\"0x8DB0847B40E9B2F\"Archive13809038870468939698*1658283376881248060",
+ "responseHeaders": {
+ "content-type": "application/xml",
+ "date": "Mon, 06 Feb 2023 13:40:25 GMT",
+ "server": "Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0",
+ "transfer-encoding": "chunked",
+ "x-ms-client-request-id": "4344fd85-e605-4929-81e0-92c34178a578",
+ "x-ms-request-id": "4656dc74-d01a-0043-2d30-3aa7a2000000",
+ "x-ms-version": "2021-12-02"
+ }
+ },
+ {
+ "method": "GET",
+ "url": "https://fakestorageaccount.file.core.windows.net/share167569082541901026/dir%EF%BF%BE167569082584204303",
+ "query": {
+ "comp": "list",
+ "prefix": "dir",
+ "restype": "directory",
+ "include": "Timestamps,Etag,Attributes,PermissionKey"
+ },
+ "requestBody": null,
+ "status": 200,
+ "response": "dir%EF%BF%BE11529285414812647424dir%EF%BF%BE0167569082585804736161409714332400353282023-02-06T13:40:25.8773937Z2023-02-06T13:40:25.8773937Z2023-02-06T13:40:25.8773937Z2023-02-06T13:40:25.8773937ZMon, 06 Feb 2023 13:40:25 GMT\"0x8DB0847B401CBB1\"Directory9212185477508673717*1658283376881248060dir%EF%BF%BE1167569082587604658103763639102058004482023-02-06T13:40:25.8943847Z2023-02-06T13:40:25.8943847Z2023-02-06T13:40:25.8943847Z2023-02-06T13:40:25.8943847ZMon, 06 Feb 2023 13:40:25 GMT\"0x8DB0847B4046367\"Directory9212185477508673717*1658283376881248060dir%EF%BF%BE2167569082589108104149880499286331883522023-02-06T13:40:25.9113767Z2023-02-06T13:40:25.9113767Z2023-02-06T13:40:25.9113767Z2023-02-06T13:40:25.9113767ZMon, 06 Feb 2023 13:40:25 GMT\"0x8DB0847B406FB27\"Directory9212185477508673717*1658283376881248060",
+ "responseHeaders": {
+ "content-type": "application/xml",
+ "date": "Mon, 06 Feb 2023 13:40:25 GMT",
+ "server": "Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0",
+ "transfer-encoding": "chunked",
+ "x-ms-client-request-id": "d6542046-b87b-464e-a546-1c2d9c25d068",
+ "x-ms-request-id": "4656dc79-d01a-0043-3030-3aa7a2000000",
+ "x-ms-version": "2021-12-02"
+ }
+ },
+ {
+ "method": "GET",
+ "url": "https://fakestorageaccount.file.core.windows.net/share167569082541901026/dir%EF%BF%BE167569082584204303",
+ "query": {
+ "comp": "list",
+ "prefix": "file",
+ "restype": "directory",
+ "include": "Timestamps,Etag,Attributes,PermissionKey"
+ },
+ "requestBody": null,
+ "status": 200,
+ "response": "file%EF%BF%BE11529285414812647424file%EF%BF%BE01675690825908089611268220691941949440010242023-02-06T13:40:25.9303651Z2023-02-06T13:40:25.9303651Z2023-02-06T13:40:25.9303651Z2023-02-06T13:40:25.9303651ZMon, 06 Feb 2023 13:40:25 GMT\"0x8DB0847B409E0E3\"Archive13809038870468939698*1658283376881248060file%EF%BF%BE11675690825927072851729389293784688230410242023-02-06T13:40:25.9453577Z2023-02-06T13:40:25.9453577Z2023-02-06T13:40:25.9453577Z2023-02-06T13:40:25.9453577ZMon, 06 Feb 2023 13:40:25 GMT\"0x8DB0847B40C2A89\"Archive13809038870468939698*1658283376881248060file%EF%BF%BE2167569082594209898979990315790237696010242023-02-06T13:40:25.9613487Z2023-02-06T13:40:25.9613487Z2023-02-06T13:40:25.9613487Z2023-02-06T13:40:25.9613487ZMon, 06 Feb 2023 13:40:25 GMT\"0x8DB0847B40E9B2F\"Archive13809038870468939698*1658283376881248060",
+ "responseHeaders": {
+ "content-type": "application/xml",
+ "date": "Mon, 06 Feb 2023 13:40:25 GMT",
+ "server": "Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0",
+ "transfer-encoding": "chunked",
+ "x-ms-client-request-id": "5c99468b-3870-410c-8728-ff6fd7ea095e",
+ "x-ms-request-id": "4656dc7b-d01a-0043-3230-3aa7a2000000",
+ "x-ms-version": "2021-12-02"
+ }
+ },
+ {
+ "method": "DELETE",
+ "url": "https://fakestorageaccount.file.core.windows.net/share167569082541901026/dir%EF%BF%BE167569082584204303/file%EF%BF%BE0167569082590808961",
+ "query": {},
+ "requestBody": null,
+ "status": 202,
+ "response": "",
+ "responseHeaders": {
+ "content-length": "0",
+ "date": "Mon, 06 Feb 2023 13:40:25 GMT",
+ "server": "Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0",
+ "x-ms-client-request-id": "73ec0081-9510-43a7-a777-6ba19077a16f",
+ "x-ms-request-id": "4656dc7d-d01a-0043-3430-3aa7a2000000",
+ "x-ms-version": "2021-12-02"
+ }
+ },
+ {
+ "method": "DELETE",
+ "url": "https://fakestorageaccount.file.core.windows.net/share167569082541901026/dir%EF%BF%BE167569082584204303/file%EF%BF%BE1167569082592707285",
+ "query": {},
+ "requestBody": null,
+ "status": 202,
+ "response": "",
+ "responseHeaders": {
+ "content-length": "0",
+ "date": "Mon, 06 Feb 2023 13:40:25 GMT",
+ "server": "Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0",
+ "x-ms-client-request-id": "d8bb0382-735d-4e0c-b8eb-bccb7f0095cc",
+ "x-ms-request-id": "4656dc80-d01a-0043-3730-3aa7a2000000",
+ "x-ms-version": "2021-12-02"
+ }
+ },
+ {
+ "method": "DELETE",
+ "url": "https://fakestorageaccount.file.core.windows.net/share167569082541901026/dir%EF%BF%BE167569082584204303/file%EF%BF%BE2167569082594209898",
+ "query": {},
+ "requestBody": null,
+ "status": 202,
+ "response": "",
+ "responseHeaders": {
+ "content-length": "0",
+ "date": "Mon, 06 Feb 2023 13:40:25 GMT",
+ "server": "Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0",
+ "x-ms-client-request-id": "8d7dcf87-f2d8-4277-815b-85f276520ad5",
+ "x-ms-request-id": "4656dc82-d01a-0043-3930-3aa7a2000000",
+ "x-ms-version": "2021-12-02"
+ }
+ },
+ {
+ "method": "DELETE",
+ "url": "https://fakestorageaccount.file.core.windows.net/share167569082541901026/dir%EF%BF%BE167569082584204303/dir%EF%BF%BE0167569082585804736",
+ "query": {
+ "restype": "directory"
+ },
+ "requestBody": null,
+ "status": 202,
+ "response": "",
+ "responseHeaders": {
+ "content-length": "0",
+ "date": "Mon, 06 Feb 2023 13:40:25 GMT",
+ "server": "Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0",
+ "x-ms-client-request-id": "25ec1225-90de-417d-ab7a-bb502ab95cc9",
+ "x-ms-request-id": "4656dc84-d01a-0043-3b30-3aa7a2000000",
+ "x-ms-version": "2021-12-02"
+ }
+ },
+ {
+ "method": "DELETE",
+ "url": "https://fakestorageaccount.file.core.windows.net/share167569082541901026/dir%EF%BF%BE167569082584204303/dir%EF%BF%BE1167569082587604658",
+ "query": {
+ "restype": "directory"
+ },
+ "requestBody": null,
+ "status": 202,
+ "response": "",
+ "responseHeaders": {
+ "content-length": "0",
+ "date": "Mon, 06 Feb 2023 13:40:25 GMT",
+ "server": "Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0",
+ "x-ms-client-request-id": "1b316a73-2adc-4800-9015-3177561c46ed",
+ "x-ms-request-id": "4656dc86-d01a-0043-3d30-3aa7a2000000",
+ "x-ms-version": "2021-12-02"
+ }
+ },
+ {
+ "method": "DELETE",
+ "url": "https://fakestorageaccount.file.core.windows.net/share167569082541901026/dir%EF%BF%BE167569082584204303/dir%EF%BF%BE2167569082589108104",
+ "query": {
+ "restype": "directory"
+ },
+ "requestBody": null,
+ "status": 202,
+ "response": "",
+ "responseHeaders": {
+ "content-length": "0",
+ "date": "Mon, 06 Feb 2023 13:40:25 GMT",
+ "server": "Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0",
+ "x-ms-client-request-id": "db512f55-643d-4fef-9277-1e03e777a4c0",
+ "x-ms-request-id": "4656dc88-d01a-0043-3f30-3aa7a2000000",
+ "x-ms-version": "2021-12-02"
+ }
+ },
+ {
+ "method": "DELETE",
+ "url": "https://fakestorageaccount.file.core.windows.net/share167569082541901026/dir%EF%BF%BE167569082584204303",
+ "query": {
+ "restype": "directory"
+ },
+ "requestBody": null,
+ "status": 202,
+ "response": "",
+ "responseHeaders": {
+ "content-length": "0",
+ "date": "Mon, 06 Feb 2023 13:40:25 GMT",
+ "server": "Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0",
+ "x-ms-client-request-id": "24c3a082-c2ef-4ee3-9780-205ebd816e43",
+ "x-ms-request-id": "4656dc8a-d01a-0043-4130-3aa7a2000000",
+ "x-ms-version": "2021-12-02"
+ }
+ },
+ {
+ "method": "DELETE",
+ "url": "https://fakestorageaccount.file.core.windows.net/share167569082541901026",
+ "query": {
+ "restype": "share"
+ },
+ "requestBody": null,
+ "status": 202,
+ "response": "",
+ "responseHeaders": {
+ "content-length": "0",
+ "date": "Mon, 06 Feb 2023 13:40:25 GMT",
+ "server": "Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0",
+ "x-ms-client-request-id": "e927244e-dc5e-4d79-a8f9-2dfb6837a188",
+ "x-ms-request-id": "4656dc8c-d01a-0043-4330-3aa7a2000000",
+ "x-ms-version": "2021-12-02"
+ }
+ }
+ ],
+ "uniqueTestInfo": {
+ "uniqueName": {
+ "share": "share167569082541901026",
+ "dir": "dir167569082581300115",
+ "dir": "dir167569082584204303",
+ "dir0": "dir0167569082585804736",
+ "dir1": "dir1167569082587604658",
+ "dir2": "dir2167569082589108104",
+ "file0": "file0167569082590808961",
+ "file1": "file1167569082592707285",
+ "file2": "file2167569082594209898"
+ },
+ "newDate": {}
+ },
+ "hash": "e5d3cbc4015a2f00998c72fc6bfcb62a"
+}
\ No newline at end of file
diff --git a/sdk/storage/storage-file-share/recordings/browsers/directoryclient/recording_listhandles_for_directory_with_invalid_char_should_work.json b/sdk/storage/storage-file-share/recordings/browsers/directoryclient/recording_listhandles_for_directory_with_invalid_char_should_work.json
new file mode 100644
index 000000000000..dbd6aa14bf6e
--- /dev/null
+++ b/sdk/storage/storage-file-share/recordings/browsers/directoryclient/recording_listhandles_for_directory_with_invalid_char_should_work.json
@@ -0,0 +1,126 @@
+{
+ "recordings": [
+ {
+ "method": "PUT",
+ "url": "https://fakestorageaccount.file.core.windows.net/share167569200217605047",
+ "query": {
+ "restype": "share"
+ },
+ "requestBody": null,
+ "status": 201,
+ "response": "",
+ "responseHeaders": {
+ "content-length": "0",
+ "date": "Mon, 06 Feb 2023 14:00:02 GMT",
+ "etag": "\"0x8DB084A71342D00\"",
+ "last-modified": "Mon, 06 Feb 2023 14:00:02 GMT",
+ "server": "Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0",
+ "x-ms-client-request-id": "7e588e38-8f04-4233-9e45-8758d8495293",
+ "x-ms-request-id": "30838675-801a-0036-1433-3a2019000000",
+ "x-ms-version": "2021-12-02"
+ }
+ },
+ {
+ "method": "PUT",
+ "url": "https://fakestorageaccount.file.core.windows.net/share167569200217605047/dir167569200229600411",
+ "query": {
+ "restype": "directory"
+ },
+ "requestBody": null,
+ "status": 201,
+ "response": "",
+ "responseHeaders": {
+ "content-length": "0",
+ "date": "Mon, 06 Feb 2023 14:00:02 GMT",
+ "etag": "\"0x8DB084A7137F400\"",
+ "last-modified": "Mon, 06 Feb 2023 14:00:02 GMT",
+ "server": "Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0",
+ "x-ms-client-request-id": "840c061c-61f9-486b-bd91-29a180be03c5",
+ "x-ms-file-attributes": "Directory",
+ "x-ms-file-change-time": "2023-02-06T14:00:02.3151616Z",
+ "x-ms-file-creation-time": "2023-02-06T14:00:02.3151616Z",
+ "x-ms-file-id": "13835128424026341376",
+ "x-ms-file-last-write-time": "2023-02-06T14:00:02.3151616Z",
+ "x-ms-file-parent-id": "0",
+ "x-ms-file-permission-key": "9212185477508673717*1658283376881248060",
+ "x-ms-request-id": "30838678-801a-0036-1633-3a2019000000",
+ "x-ms-request-server-encrypted": "true",
+ "x-ms-version": "2021-12-02"
+ }
+ },
+ {
+ "method": "PUT",
+ "url": "https://fakestorageaccount.file.core.windows.net/share167569200217605047/dir%EF%BF%BE167569200231909213",
+ "query": {
+ "restype": "directory"
+ },
+ "requestBody": null,
+ "status": 201,
+ "response": "",
+ "responseHeaders": {
+ "content-length": "0",
+ "date": "Mon, 06 Feb 2023 14:00:02 GMT",
+ "etag": "\"0x8DB084A713AB2BE\"",
+ "last-modified": "Mon, 06 Feb 2023 14:00:02 GMT",
+ "server": "Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0",
+ "x-ms-client-request-id": "626523a6-4cd5-40e6-9a7d-01a4e913a727",
+ "x-ms-file-attributes": "Directory",
+ "x-ms-file-change-time": "2023-02-06T14:00:02.3331518Z",
+ "x-ms-file-creation-time": "2023-02-06T14:00:02.3331518Z",
+ "x-ms-file-id": "11529285414812647424",
+ "x-ms-file-last-write-time": "2023-02-06T14:00:02.3331518Z",
+ "x-ms-file-parent-id": "0",
+ "x-ms-file-permission-key": "9212185477508673717*1658283376881248060",
+ "x-ms-request-id": "3083867a-801a-0036-1833-3a2019000000",
+ "x-ms-request-server-encrypted": "true",
+ "x-ms-version": "2021-12-02"
+ }
+ },
+ {
+ "method": "GET",
+ "url": "https://fakestorageaccount.file.core.windows.net/share167569200217605047/dir%EF%BF%BE167569200231909213",
+ "query": {
+ "comp": "listhandles"
+ },
+ "requestBody": null,
+ "status": 200,
+ "response": "",
+ "responseHeaders": {
+ "content-type": "application/xml",
+ "date": "Mon, 06 Feb 2023 14:00:02 GMT",
+ "server": "Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0",
+ "transfer-encoding": "chunked",
+ "x-ms-client-request-id": "c9a45544-0c9d-409c-af07-6be2ef208640",
+ "x-ms-request-id": "3083867c-801a-0036-1a33-3a2019000000",
+ "x-ms-version": "2021-12-02"
+ }
+ },
+ {
+ "method": "DELETE",
+ "url": "https://fakestorageaccount.file.core.windows.net/share167569200217605047",
+ "query": {
+ "restype": "share"
+ },
+ "requestBody": null,
+ "status": 202,
+ "response": "",
+ "responseHeaders": {
+ "content-length": "0",
+ "date": "Mon, 06 Feb 2023 14:00:02 GMT",
+ "server": "Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0",
+ "x-ms-client-request-id": "f993ba61-c83a-48c8-a6c1-21c3bf79944f",
+ "x-ms-request-id": "3083867e-801a-0036-1c33-3a2019000000",
+ "x-ms-version": "2021-12-02"
+ }
+ }
+ ],
+ "uniqueTestInfo": {
+ "uniqueName": {
+ "share": "share167569200217605047",
+ "dir": "dir167569200229600411",
+ "dir": "dir167569200231909213"
+ },
+ "newDate": {}
+ },
+ "hash": "9a3311a03d3e10383af42b2cde295d11"
+}
\ No newline at end of file
diff --git a/sdk/storage/storage-file-share/recordings/browsers/fileclient/recording_listhandles_for_file_with_invalid_char_should_work.json b/sdk/storage/storage-file-share/recordings/browsers/fileclient/recording_listhandles_for_file_with_invalid_char_should_work.json
new file mode 100644
index 000000000000..bd8e3a86b179
--- /dev/null
+++ b/sdk/storage/storage-file-share/recordings/browsers/fileclient/recording_listhandles_for_file_with_invalid_char_should_work.json
@@ -0,0 +1,125 @@
+{
+ "recordings": [
+ {
+ "method": "PUT",
+ "url": "https://fakestorageaccount.file.core.windows.net/share167569200237501977",
+ "query": {
+ "restype": "share"
+ },
+ "requestBody": null,
+ "status": 201,
+ "response": "",
+ "responseHeaders": {
+ "content-length": "0",
+ "date": "Mon, 06 Feb 2023 14:00:02 GMT",
+ "etag": "\"0x8DB084A714345F2\"",
+ "last-modified": "Mon, 06 Feb 2023 14:00:02 GMT",
+ "server": "Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0",
+ "x-ms-client-request-id": "73e0945e-c9db-40fe-baa5-e9203d734407",
+ "x-ms-request-id": "30838680-801a-0036-1e33-3a2019000000",
+ "x-ms-version": "2021-12-02"
+ }
+ },
+ {
+ "method": "PUT",
+ "url": "https://fakestorageaccount.file.core.windows.net/share167569200237501977/dir167569200239707803",
+ "query": {
+ "restype": "directory"
+ },
+ "requestBody": null,
+ "status": 201,
+ "response": "",
+ "responseHeaders": {
+ "content-length": "0",
+ "date": "Mon, 06 Feb 2023 14:00:02 GMT",
+ "etag": "\"0x8DB084A71470D19\"",
+ "last-modified": "Mon, 06 Feb 2023 14:00:02 GMT",
+ "server": "Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0",
+ "x-ms-client-request-id": "f53c5ba4-ed03-4e80-9daa-94963d84fd32",
+ "x-ms-file-attributes": "Directory",
+ "x-ms-file-change-time": "2023-02-06T14:00:02.4141081Z",
+ "x-ms-file-creation-time": "2023-02-06T14:00:02.4141081Z",
+ "x-ms-file-id": "13835128424026341376",
+ "x-ms-file-last-write-time": "2023-02-06T14:00:02.4141081Z",
+ "x-ms-file-parent-id": "0",
+ "x-ms-file-permission-key": "9212185477508673717*1658283376881248060",
+ "x-ms-request-id": "30838683-801a-0036-2033-3a2019000000",
+ "x-ms-request-server-encrypted": "true",
+ "x-ms-version": "2021-12-02"
+ }
+ },
+ {
+ "method": "PUT",
+ "url": "https://fakestorageaccount.file.core.windows.net/share167569200237501977/file%EF%BF%BE167569200241708959",
+ "query": {},
+ "requestBody": null,
+ "status": 201,
+ "response": "",
+ "responseHeaders": {
+ "content-length": "0",
+ "date": "Mon, 06 Feb 2023 14:00:02 GMT",
+ "etag": "\"0x8DB084A7149F2E2\"",
+ "last-modified": "Mon, 06 Feb 2023 14:00:02 GMT",
+ "server": "Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0",
+ "x-ms-client-request-id": "d5ce828e-f946-4b4b-a145-03b7fcfa4b17",
+ "x-ms-file-attributes": "Archive",
+ "x-ms-file-change-time": "2023-02-06T14:00:02.4330978Z",
+ "x-ms-file-creation-time": "2023-02-06T14:00:02.4330978Z",
+ "x-ms-file-id": "11529285414812647424",
+ "x-ms-file-last-write-time": "2023-02-06T14:00:02.4330978Z",
+ "x-ms-file-parent-id": "0",
+ "x-ms-file-permission-key": "13809038870468939698*1658283376881248060",
+ "x-ms-request-id": "30838685-801a-0036-2233-3a2019000000",
+ "x-ms-request-server-encrypted": "true",
+ "x-ms-version": "2021-12-02"
+ }
+ },
+ {
+ "method": "GET",
+ "url": "https://fakestorageaccount.file.core.windows.net/share167569200237501977/file%EF%BF%BE167569200241708959",
+ "query": {
+ "comp": "listhandles"
+ },
+ "requestBody": null,
+ "status": 200,
+ "response": "",
+ "responseHeaders": {
+ "content-type": "application/xml",
+ "date": "Mon, 06 Feb 2023 14:00:02 GMT",
+ "server": "Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0",
+ "transfer-encoding": "chunked",
+ "x-ms-client-request-id": "5dca5ee0-9310-4879-953a-9dfea2bebfaf",
+ "x-ms-request-id": "30838687-801a-0036-2433-3a2019000000",
+ "x-ms-version": "2021-12-02"
+ }
+ },
+ {
+ "method": "DELETE",
+ "url": "https://fakestorageaccount.file.core.windows.net/share167569200237501977",
+ "query": {
+ "restype": "share"
+ },
+ "requestBody": null,
+ "status": 202,
+ "response": "",
+ "responseHeaders": {
+ "content-length": "0",
+ "date": "Mon, 06 Feb 2023 14:00:02 GMT",
+ "server": "Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0",
+ "x-ms-client-request-id": "d9a03f23-5041-4183-a305-c5636126192f",
+ "x-ms-request-id": "30838689-801a-0036-2633-3a2019000000",
+ "x-ms-version": "2021-12-02"
+ }
+ }
+ ],
+ "uniqueTestInfo": {
+ "uniqueName": {
+ "share": "share167569200237501977",
+ "dir": "dir167569200239707803",
+ "file": "file167569200241605955",
+ "file": "file167569200241708959"
+ },
+ "newDate": {}
+ },
+ "hash": "6b7f3584a4ae0792b69333e602a45441"
+}
\ No newline at end of file
diff --git a/sdk/storage/storage-file-share/recordings/node/directoryclient/recording_listfilesanddirectories__with_all_attributes.js b/sdk/storage/storage-file-share/recordings/node/directoryclient/recording_listfilesanddirectories__with_all_attributes.js
index a640467e7bde..ae30e87620d4 100644
--- a/sdk/storage/storage-file-share/recordings/node/directoryclient/recording_listfilesanddirectories__with_all_attributes.js
+++ b/sdk/storage/storage-file-share/recordings/node/directoryclient/recording_listfilesanddirectories__with_all_attributes.js
@@ -1,59 +1,57 @@
let nock = require('nock');
-module.exports.hash = "0ba5d11d96baf3c058812eb3399db78b";
+module.exports.hash = "6d46174a2d93c2dd4e45919c7b9e5a19";
-module.exports.testInfo = {"uniqueName":{"share":"share162544901424303651","dir":"dir162544901554302397","dir0":"dir0162544901674306002","dir1":"dir1162544901762104700","dir2":"dir2162544901879908426","file0":"file0162544901999203768","file1":"file1162544902118808840","file2":"file2162544902239106310"},"newDate":{}}
+module.exports.testInfo = {"uniqueName":{"share":"share167566673899109627","dir":"dir167566673963409154","dir0":"dir0167566673966804575","dir1":"dir1167566673968408551","dir2":"dir2167566673969806061","file0":"file0167566673971408633","file1":"file1167566673972907464","file2":"file2167566673974309764"},"newDate":{}}
nock('https://fakestorageaccount.file.core.windows.net:443', {"encodedQueryParams":true})
- .put('/share162544901424303651')
+ .put('/share167566673899109627')
.query(true)
.reply(201, "", [
- 'Transfer-Encoding',
- 'chunked',
+ 'Content-Length',
+ '0',
'Last-Modified',
- 'Mon, 05 Jul 2021 01:36:55 GMT',
+ 'Mon, 06 Feb 2023 06:58:59 GMT',
'ETag',
- '"0x8D93F555F9EBEAC"',
+ '"0x8DB080F9F740071"',
'Server',
'Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0',
'x-ms-request-id',
- 'd1550721-001a-0007-5c3e-71dd0f000000',
+ '93b391a6-b01a-00b6-68f8-3983b3000000',
'x-ms-client-request-id',
- 'aad2a6a2-594f-4035-80a7-51655f24e0c8',
+ 'ef5519ad-a881-4283-838d-975ecda560e6',
'x-ms-version',
- '2020-10-02',
+ '2021-12-02',
'Date',
- 'Mon, 05 Jul 2021 01:36:55 GMT',
- 'Connection',
- 'close'
+ 'Mon, 06 Feb 2023 06:58:59 GMT'
]);
nock('https://fakestorageaccount.file.core.windows.net:443', {"encodedQueryParams":true})
- .put('/share162544901424303651/dir162544901554302397')
+ .put('/share167566673899109627/dir167566673963409154')
.query(true)
.reply(201, "", [
- 'Transfer-Encoding',
- 'chunked',
+ 'Content-Length',
+ '0',
'Last-Modified',
- 'Mon, 05 Jul 2021 01:36:57 GMT',
+ 'Mon, 06 Feb 2023 06:58:59 GMT',
'ETag',
- '"0x8D93F55605808BB"',
+ '"0x8DB080F9F80864F"',
'Server',
'Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0',
'x-ms-request-id',
- '58794bb4-d01a-0012-783e-71af7f000000',
+ '93b391ae-b01a-00b6-69f8-3983b3000000',
'x-ms-client-request-id',
- 'e6f56cf9-7236-41ab-91a1-18939ffb0c18',
+ '99aef8f3-e353-43b3-a86a-b077ce7bf727',
'x-ms-version',
- '2020-10-02',
+ '2021-12-02',
'x-ms-file-change-time',
- '2021-07-05T01:36:57.0788027Z',
+ '2023-02-06T06:58:59.6589135Z',
'x-ms-file-last-write-time',
- '2021-07-05T01:36:57.0788027Z',
+ '2023-02-06T06:58:59.6589135Z',
'x-ms-file-creation-time',
- '2021-07-05T01:36:57.0788027Z',
+ '2023-02-06T06:58:59.6589135Z',
'x-ms-file-permission-key',
- '7735077018765312711*253227986890839374',
+ '9212185477508673717*1658283376881248060',
'x-ms-file-attributes',
'Directory',
'x-ms-file-id',
@@ -63,37 +61,35 @@ nock('https://fakestorageaccount.file.core.windows.net:443', {"encodedQueryParam
'x-ms-request-server-encrypted',
'true',
'Date',
- 'Mon, 05 Jul 2021 01:36:56 GMT',
- 'Connection',
- 'close'
+ 'Mon, 06 Feb 2023 06:58:59 GMT'
]);
nock('https://fakestorageaccount.file.core.windows.net:443', {"encodedQueryParams":true})
- .put('/share162544901424303651/dir162544901554302397/dir0162544901674306002')
+ .put('/share167566673899109627/dir167566673963409154/dir0167566673966804575')
.query(true)
.reply(201, "", [
- 'Transfer-Encoding',
- 'chunked',
+ 'Content-Length',
+ '0',
'Last-Modified',
- 'Mon, 05 Jul 2021 01:36:57 GMT',
+ 'Mon, 06 Feb 2023 06:58:59 GMT',
'ETag',
- '"0x8D93F5560DE6350"',
+ '"0x8DB080F9F83BA31"',
'Server',
'Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0',
'x-ms-request-id',
- '58794bc3-d01a-0012-023e-71af7f000000',
+ '93b391af-b01a-00b6-6af8-3983b3000000',
'x-ms-client-request-id',
- 'b11205b6-2c44-468f-aa1f-2164e6573f17',
+ '364c7d6d-6eac-44f1-9365-0d7fcf35c235',
'x-ms-version',
- '2020-10-02',
+ '2021-12-02',
'x-ms-file-change-time',
- '2021-07-05T01:36:57.9593040Z',
+ '2023-02-06T06:58:59.6799025Z',
'x-ms-file-last-write-time',
- '2021-07-05T01:36:57.9593040Z',
+ '2023-02-06T06:58:59.6799025Z',
'x-ms-file-creation-time',
- '2021-07-05T01:36:57.9593040Z',
+ '2023-02-06T06:58:59.6799025Z',
'x-ms-file-permission-key',
- '7735077018765312711*253227986890839374',
+ '9212185477508673717*1658283376881248060',
'x-ms-file-attributes',
'Directory',
'x-ms-file-id',
@@ -103,212 +99,200 @@ nock('https://fakestorageaccount.file.core.windows.net:443', {"encodedQueryParam
'x-ms-request-server-encrypted',
'true',
'Date',
- 'Mon, 05 Jul 2021 01:36:57 GMT',
- 'Connection',
- 'close'
+ 'Mon, 06 Feb 2023 06:58:59 GMT'
]);
nock('https://fakestorageaccount.file.core.windows.net:443', {"encodedQueryParams":true})
- .put('/share162544901424303651/dir162544901554302397/dir1162544901762104700')
+ .put('/share167566673899109627/dir167566673963409154/dir1167566673968408551')
.query(true)
.reply(201, "", [
- 'Transfer-Encoding',
- 'chunked',
+ 'Content-Length',
+ '0',
'Last-Modified',
- 'Mon, 05 Jul 2021 01:36:59 GMT',
+ 'Mon, 06 Feb 2023 06:58:59 GMT',
'ETag',
- '"0x8D93F5561922FEB"',
+ '"0x8DB080F9F85DCC2"',
'Server',
'Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0',
'x-ms-request-id',
- '7965f41d-a01a-0005-6b3e-71e2e0000000',
+ '93b391b0-b01a-00b6-6bf8-3983b3000000',
'x-ms-client-request-id',
- '8c206338-cd21-4cc7-ba43-afff22de36e0',
+ '801bbded-aca1-4a68-9544-dbceefa19474',
'x-ms-version',
- '2020-10-02',
+ '2021-12-02',
'x-ms-file-change-time',
- '2021-07-05T01:36:59.1376363Z',
+ '2023-02-06T06:58:59.6938946Z',
'x-ms-file-last-write-time',
- '2021-07-05T01:36:59.1376363Z',
+ '2023-02-06T06:58:59.6938946Z',
'x-ms-file-creation-time',
- '2021-07-05T01:36:59.1376363Z',
+ '2023-02-06T06:58:59.6938946Z',
'x-ms-file-permission-key',
- '7735077018765312711*253227986890839374',
+ '9212185477508673717*1658283376881248060',
'x-ms-file-attributes',
'Directory',
'x-ms-file-id',
- '13835093239654252544',
+ '16140971433240035328',
'x-ms-file-parent-id',
'13835128424026341376',
'x-ms-request-server-encrypted',
'true',
'Date',
- 'Mon, 05 Jul 2021 01:36:59 GMT',
- 'Connection',
- 'close'
+ 'Mon, 06 Feb 2023 06:58:59 GMT'
]);
nock('https://fakestorageaccount.file.core.windows.net:443', {"encodedQueryParams":true})
- .put('/share162544901424303651/dir162544901554302397/dir2162544901879908426')
+ .put('/share167566673899109627/dir167566673963409154/dir2167566673969806061')
.query(true)
.reply(201, "", [
- 'Transfer-Encoding',
- 'chunked',
+ 'Content-Length',
+ '0',
'Last-Modified',
- 'Mon, 05 Jul 2021 01:37:00 GMT',
+ 'Mon, 06 Feb 2023 06:58:59 GMT',
'ETag',
- '"0x8D93F556247D104"',
+ '"0x8DB080F9F884D6C"',
'Server',
'Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0',
'x-ms-request-id',
- '29283fba-501a-0022-0b3e-71632e000000',
+ '93b391b1-b01a-00b6-6cf8-3983b3000000',
'x-ms-client-request-id',
- 'ee6b6244-291a-4b04-92aa-5e32fdc20763',
+ 'd22f8f39-e7c6-42ea-b88a-b10fb43500fe',
'x-ms-version',
- '2020-10-02',
+ '2021-12-02',
'x-ms-file-change-time',
- '2021-07-05T01:37:00.3279620Z',
+ '2023-02-06T06:58:59.7098860Z',
'x-ms-file-last-write-time',
- '2021-07-05T01:37:00.3279620Z',
+ '2023-02-06T06:58:59.7098860Z',
'x-ms-file-creation-time',
- '2021-07-05T01:37:00.3279620Z',
+ '2023-02-06T06:58:59.7098860Z',
'x-ms-file-permission-key',
- '7735077018765312711*253227986890839374',
+ '9212185477508673717*1658283376881248060',
'x-ms-file-attributes',
'Directory',
'x-ms-file-id',
- '13835163608398430208',
+ '10376363910205800448',
'x-ms-file-parent-id',
'13835128424026341376',
'x-ms-request-server-encrypted',
'true',
'Date',
- 'Mon, 05 Jul 2021 01:36:59 GMT',
- 'Connection',
- 'close'
+ 'Mon, 06 Feb 2023 06:58:59 GMT'
]);
nock('https://fakestorageaccount.file.core.windows.net:443', {"encodedQueryParams":true})
- .put('/share162544901424303651/dir162544901554302397/file0162544901999203768')
+ .put('/share167566673899109627/dir167566673963409154/file0167566673971408633')
.reply(201, "", [
- 'Transfer-Encoding',
- 'chunked',
+ 'Content-Length',
+ '0',
'Last-Modified',
- 'Mon, 05 Jul 2021 01:37:01 GMT',
+ 'Mon, 06 Feb 2023 06:58:59 GMT',
'ETag',
- '"0x8D93F5562FEAA70"',
+ '"0x8DB080F9F8ABE14"',
'Server',
'Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0',
'x-ms-request-id',
- 'c99a6225-101a-001b-473e-7145f9000000',
+ '93b391b2-b01a-00b6-6df8-3983b3000000',
'x-ms-client-request-id',
- '805d54f5-7d5a-4b88-ac9b-b44d533341d8',
+ 'c4a3e946-afc9-43bb-b42a-b2ce1b115f09',
'x-ms-version',
- '2020-10-02',
+ '2021-12-02',
'x-ms-file-change-time',
- '2021-07-05T01:37:01.5262832Z',
+ '2023-02-06T06:58:59.7258772Z',
'x-ms-file-last-write-time',
- '2021-07-05T01:37:01.5262832Z',
+ '2023-02-06T06:58:59.7258772Z',
'x-ms-file-creation-time',
- '2021-07-05T01:37:01.5262832Z',
+ '2023-02-06T06:58:59.7258772Z',
'x-ms-file-permission-key',
- '12331785703007272384*253227986890839374',
+ '13809038870468939698*1658283376881248060',
'x-ms-file-attributes',
'Archive',
'x-ms-file-id',
- '13835075647468208128',
+ '14988049928633188352',
'x-ms-file-parent-id',
'13835128424026341376',
'x-ms-request-server-encrypted',
'true',
'Date',
- 'Mon, 05 Jul 2021 01:37:00 GMT',
- 'Connection',
- 'close'
+ 'Mon, 06 Feb 2023 06:58:59 GMT'
]);
nock('https://fakestorageaccount.file.core.windows.net:443', {"encodedQueryParams":true})
- .put('/share162544901424303651/dir162544901554302397/file1162544902118808840')
+ .put('/share167566673899109627/dir167566673963409154/file1167566673972907464')
.reply(201, "", [
- 'Transfer-Encoding',
- 'chunked',
+ 'Content-Length',
+ '0',
'Last-Modified',
- 'Mon, 05 Jul 2021 01:37:02 GMT',
+ 'Mon, 06 Feb 2023 06:58:59 GMT',
'ETag',
- '"0x8D93F5563B69524"',
+ '"0x8DB080F9F8CB99B"',
'Server',
'Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0',
'x-ms-request-id',
- '1c116c67-d01a-000d-6f3e-71ef2a000000',
+ '93b391b3-b01a-00b6-6ef8-3983b3000000',
'x-ms-client-request-id',
- '73025b60-0134-4d5e-8e50-f9d8961b0ce2',
+ '5b3a4d2e-9313-407c-a045-4dd088baea3f',
'x-ms-version',
- '2020-10-02',
+ '2021-12-02',
'x-ms-file-change-time',
- '2021-07-05T01:37:02.7316004Z',
+ '2023-02-06T06:58:59.7388699Z',
'x-ms-file-last-write-time',
- '2021-07-05T01:37:02.7316004Z',
+ '2023-02-06T06:58:59.7388699Z',
'x-ms-file-creation-time',
- '2021-07-05T01:37:02.7316004Z',
+ '2023-02-06T06:58:59.7388699Z',
'x-ms-file-permission-key',
- '12331785703007272384*253227986890839374',
+ '13809038870468939698*1658283376881248060',
'x-ms-file-attributes',
'Archive',
'x-ms-file-id',
- '13835146016212385792',
+ '12682206919419494400',
'x-ms-file-parent-id',
'13835128424026341376',
'x-ms-request-server-encrypted',
'true',
'Date',
- 'Mon, 05 Jul 2021 01:37:02 GMT',
- 'Connection',
- 'close'
+ 'Mon, 06 Feb 2023 06:58:59 GMT'
]);
nock('https://fakestorageaccount.file.core.windows.net:443', {"encodedQueryParams":true})
- .put('/share162544901424303651/dir162544901554302397/file2162544902239106310')
+ .put('/share167566673899109627/dir167566673963409154/file2167566673974309764')
.reply(201, "", [
- 'Transfer-Encoding',
- 'chunked',
+ 'Content-Length',
+ '0',
'Last-Modified',
- 'Mon, 05 Jul 2021 01:37:03 GMT',
+ 'Mon, 06 Feb 2023 06:58:59 GMT',
'ETag',
- '"0x8D93F556469296E"',
+ '"0x8DB080F9F8F2A4C"',
'Server',
'Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0',
'x-ms-request-id',
- '3c203c64-a01a-001a-483e-71a2b5000000',
+ '93b391b4-b01a-00b6-6ff8-3983b3000000',
'x-ms-client-request-id',
- 'd186798d-4fe6-415b-81f6-c9fd01dde77b',
+ 'baea980f-9665-4eab-9d4d-9b6f0fcff7f2',
'x-ms-version',
- '2020-10-02',
+ '2021-12-02',
'x-ms-file-change-time',
- '2021-07-05T01:37:03.9019374Z',
+ '2023-02-06T06:58:59.7548620Z',
'x-ms-file-last-write-time',
- '2021-07-05T01:37:03.9019374Z',
+ '2023-02-06T06:58:59.7548620Z',
'x-ms-file-creation-time',
- '2021-07-05T01:37:03.9019374Z',
+ '2023-02-06T06:58:59.7548620Z',
'x-ms-file-permission-key',
- '12331785703007272384*253227986890839374',
+ '13809038870468939698*1658283376881248060',
'x-ms-file-attributes',
'Archive',
'x-ms-file-id',
- '13835110831840296960',
+ '17293892937846882304',
'x-ms-file-parent-id',
'13835128424026341376',
'x-ms-request-server-encrypted',
'true',
'Date',
- 'Mon, 05 Jul 2021 01:37:03 GMT',
- 'Connection',
- 'close'
+ 'Mon, 06 Feb 2023 06:58:59 GMT'
]);
nock('https://fakestorageaccount.file.core.windows.net:443', {"encodedQueryParams":true})
- .get('/share162544901424303651/dir162544901554302397')
+ .get('/share167566673899109627/dir167566673963409154')
.query(true)
- .reply(200, "13835128424026341376dir0162544901674306002115292854148126474242021-07-05T01:36:57.9593040Z2021-07-05T01:36:57.9593040Z2021-07-05T01:36:57.9593040Z2021-07-05T01:36:57.9593040ZMon, 05 Jul 2021 01:36:57 GMT\"0x8D93F5560DE6350\"Directory7735077018765312711*253227986890839374dir1162544901762104700138350932396542525442021-07-05T01:36:59.1376363Z2021-07-05T01:36:59.1376363Z2021-07-05T01:36:59.1376363Z2021-07-05T01:36:59.1376363ZMon, 05 Jul 2021 01:36:59 GMT\"0x8D93F5561922FEB\"Directory7735077018765312711*253227986890839374dir2162544901879908426138351636083984302082021-07-05T01:37:00.3279620Z2021-07-05T01:37:00.3279620Z2021-07-05T01:37:00.3279620Z2021-07-05T01:37:00.3279620ZMon, 05 Jul 2021 01:37:00 GMT\"0x8D93F556247D104\"Directory7735077018765312711*253227986890839374file01625449019992037681383507564746820812810242021-07-05T01:37:01.5262832Z2021-07-05T01:37:01.5262832Z2021-07-05T01:37:01.5262832Z2021-07-05T01:37:01.5262832ZMon, 05 Jul 2021 01:37:01 GMT\"0x8D93F5562FEAA70\"Archive12331785703007272384*253227986890839374file11625449021188088401383514601621238579210242021-07-05T01:37:02.7316004Z2021-07-05T01:37:02.7316004Z2021-07-05T01:37:02.7316004Z2021-07-05T01:37:02.7316004ZMon, 05 Jul 2021 01:37:02 GMT\"0x8D93F5563B69524\"Archive12331785703007272384*253227986890839374file21625449022391063101383511083184029696010242021-07-05T01:37:03.9019374Z2021-07-05T01:37:03.9019374Z2021-07-05T01:37:03.9019374Z2021-07-05T01:37:03.9019374ZMon, 05 Jul 2021 01:37:03 GMT\"0x8D93F556469296E\"Archive12331785703007272384*253227986890839374", [
+ .reply(200, "13835128424026341376dir0167566673966804575115292854148126474242023-02-06T06:58:59.6799025Z2023-02-06T06:58:59.6799025Z2023-02-06T06:58:59.6799025Z2023-02-06T06:58:59.6799025ZMon, 06 Feb 2023 06:58:59 GMT\"0x8DB080F9F83BA31\"Directory9212185477508673717*1658283376881248060dir1167566673968408551161409714332400353282023-02-06T06:58:59.6938946Z2023-02-06T06:58:59.6938946Z2023-02-06T06:58:59.6938946Z2023-02-06T06:58:59.6938946ZMon, 06 Feb 2023 06:58:59 GMT\"0x8DB080F9F85DCC2\"Directory9212185477508673717*1658283376881248060dir2167566673969806061103763639102058004482023-02-06T06:58:59.7098860Z2023-02-06T06:58:59.7098860Z2023-02-06T06:58:59.7098860Z2023-02-06T06:58:59.7098860ZMon, 06 Feb 2023 06:58:59 GMT\"0x8DB080F9F884D6C\"Directory9212185477508673717*1658283376881248060file01675666739714086331498804992863318835210242023-02-06T06:58:59.7258772Z2023-02-06T06:58:59.7258772Z2023-02-06T06:58:59.7258772Z2023-02-06T06:58:59.7258772ZMon, 06 Feb 2023 06:58:59 GMT\"0x8DB080F9F8ABE14\"Archive13809038870468939698*1658283376881248060file11675666739729074641268220691941949440010242023-02-06T06:58:59.7388699Z2023-02-06T06:58:59.7388699Z2023-02-06T06:58:59.7388699Z2023-02-06T06:58:59.7388699ZMon, 06 Feb 2023 06:58:59 GMT\"0x8DB080F9F8CB99B\"Archive13809038870468939698*1658283376881248060file21675666739743097641729389293784688230410242023-02-06T06:58:59.7548620Z2023-02-06T06:58:59.7548620Z2023-02-06T06:58:59.7548620Z2023-02-06T06:58:59.7548620ZMon, 06 Feb 2023 06:58:59 GMT\"0x8DB080F9F8F2A4C\"Archive13809038870468939698*1658283376881248060", [
'Transfer-Encoding',
'chunked',
'Content-Type',
@@ -316,154 +300,138 @@ nock('https://fakestorageaccount.file.core.windows.net:443', {"encodedQueryParam
'Server',
'Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0',
'x-ms-request-id',
- '7965f42b-a01a-0005-6f3e-71e2e0000000',
+ '93b391b5-b01a-00b6-70f8-3983b3000000',
'x-ms-client-request-id',
- 'd9f14a82-ab68-466c-afaf-b073300401a0',
+ '383c7356-a6aa-42c6-8c54-7a1a65f6e34e',
'x-ms-version',
- '2020-10-02',
+ '2021-12-02',
'Access-Control-Expose-Headers',
'x-ms-request-id,x-ms-client-request-id,Server,x-ms-version,Content-Type,Content-Length,Date,Transfer-Encoding',
'Access-Control-Allow-Origin',
'*',
'Date',
- 'Mon, 05 Jul 2021 01:37:04 GMT',
- 'Connection',
- 'close'
+ 'Mon, 06 Feb 2023 06:58:59 GMT'
]);
nock('https://fakestorageaccount.file.core.windows.net:443', {"encodedQueryParams":true})
- .delete('/share162544901424303651/dir162544901554302397/file0162544901999203768')
+ .delete('/share167566673899109627/dir167566673963409154/file0167566673971408633')
.reply(202, "", [
- 'Transfer-Encoding',
- 'chunked',
+ 'Content-Length',
+ '0',
'Server',
'Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0',
'x-ms-request-id',
- '8f44c0fa-201a-0014-043e-71ee4e000000',
+ '93b391b6-b01a-00b6-71f8-3983b3000000',
'x-ms-client-request-id',
- '124c0aab-6fd5-42a7-8fa8-eb1a2096cc1a',
+ '3fbf6ed4-42d6-4684-b33c-fc1cffac9394',
'x-ms-version',
- '2020-10-02',
+ '2021-12-02',
'Date',
- 'Mon, 05 Jul 2021 01:37:06 GMT',
- 'Connection',
- 'close'
+ 'Mon, 06 Feb 2023 06:58:59 GMT'
]);
nock('https://fakestorageaccount.file.core.windows.net:443', {"encodedQueryParams":true})
- .delete('/share162544901424303651/dir162544901554302397/file1162544902118808840')
+ .delete('/share167566673899109627/dir167566673963409154/file1167566673972907464')
.reply(202, "", [
- 'Transfer-Encoding',
- 'chunked',
+ 'Content-Length',
+ '0',
'Server',
'Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0',
'x-ms-request-id',
- 'd2b1e341-701a-0031-243e-71506f000000',
+ '93b391b7-b01a-00b6-72f8-3983b3000000',
'x-ms-client-request-id',
- '5218d437-96b7-4b99-8700-63eed914551e',
+ '3af4a130-ae27-43a7-a5db-780f7d2f4d38',
'x-ms-version',
- '2020-10-02',
+ '2021-12-02',
'Date',
- 'Mon, 05 Jul 2021 01:37:07 GMT',
- 'Connection',
- 'close'
+ 'Mon, 06 Feb 2023 06:58:59 GMT'
]);
nock('https://fakestorageaccount.file.core.windows.net:443', {"encodedQueryParams":true})
- .delete('/share162544901424303651/dir162544901554302397/file2162544902239106310')
+ .delete('/share167566673899109627/dir167566673963409154/file2167566673974309764')
.reply(202, "", [
- 'Transfer-Encoding',
- 'chunked',
+ 'Content-Length',
+ '0',
'Server',
'Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0',
'x-ms-request-id',
- 'bc2c3dac-801a-0016-5e3e-71d1a1000000',
+ '93b391b8-b01a-00b6-73f8-3983b3000000',
'x-ms-client-request-id',
- 'b32d3407-b217-4c70-83de-e7d075b9954a',
+ 'ddf79141-8bdf-4a38-b4cc-75fe43f704d3',
'x-ms-version',
- '2020-10-02',
+ '2021-12-02',
'Date',
- 'Mon, 05 Jul 2021 01:37:08 GMT',
- 'Connection',
- 'close'
+ 'Mon, 06 Feb 2023 06:58:59 GMT'
]);
nock('https://fakestorageaccount.file.core.windows.net:443', {"encodedQueryParams":true})
- .delete('/share162544901424303651/dir162544901554302397/dir0162544901674306002')
+ .delete('/share167566673899109627/dir167566673963409154/dir0167566673966804575')
.query(true)
.reply(202, "", [
- 'Transfer-Encoding',
- 'chunked',
+ 'Content-Length',
+ '0',
'Server',
'Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0',
'x-ms-request-id',
- 'f0d220d0-b01a-0006-7e3e-713a43000000',
+ '93b391b9-b01a-00b6-74f8-3983b3000000',
'x-ms-client-request-id',
- '26763e67-26f7-41e8-b7b3-1a42f16d70f5',
+ '7d58eff3-6b62-4b55-b4fc-3b14a91a18e4',
'x-ms-version',
- '2020-10-02',
+ '2021-12-02',
'Date',
- 'Mon, 05 Jul 2021 01:37:09 GMT',
- 'Connection',
- 'close'
+ 'Mon, 06 Feb 2023 06:58:59 GMT'
]);
nock('https://fakestorageaccount.file.core.windows.net:443', {"encodedQueryParams":true})
- .delete('/share162544901424303651/dir162544901554302397/dir1162544901762104700')
+ .delete('/share167566673899109627/dir167566673963409154/dir1167566673968408551')
.query(true)
.reply(202, "", [
- 'Transfer-Encoding',
- 'chunked',
+ 'Content-Length',
+ '0',
'Server',
'Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0',
'x-ms-request-id',
- '927e9cd7-e01a-001d-4c3e-7104c8000000',
+ '93b391ba-b01a-00b6-75f8-3983b3000000',
'x-ms-client-request-id',
- 'bfc25ffe-dc0f-4144-8ffe-321d4cb8de6c',
+ 'de40aaf2-750a-423f-9b17-14f6f23e0990',
'x-ms-version',
- '2020-10-02',
+ '2021-12-02',
'Date',
- 'Mon, 05 Jul 2021 01:37:11 GMT',
- 'Connection',
- 'close'
+ 'Mon, 06 Feb 2023 06:58:59 GMT'
]);
nock('https://fakestorageaccount.file.core.windows.net:443', {"encodedQueryParams":true})
- .delete('/share162544901424303651/dir162544901554302397/dir2162544901879908426')
+ .delete('/share167566673899109627/dir167566673963409154/dir2167566673969806061')
.query(true)
.reply(202, "", [
- 'Transfer-Encoding',
- 'chunked',
+ 'Content-Length',
+ '0',
'Server',
'Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0',
'x-ms-request-id',
- 'f998818f-301a-0029-503e-71b647000000',
+ '93b391bb-b01a-00b6-76f8-3983b3000000',
'x-ms-client-request-id',
- '042186c9-4999-4064-9f62-a0e15df5b4b2',
+ '5a498b2b-a346-4812-b707-4d0c5d04065d',
'x-ms-version',
- '2020-10-02',
+ '2021-12-02',
'Date',
- 'Mon, 05 Jul 2021 01:37:12 GMT',
- 'Connection',
- 'close'
+ 'Mon, 06 Feb 2023 06:58:59 GMT'
]);
nock('https://fakestorageaccount.file.core.windows.net:443', {"encodedQueryParams":true})
- .delete('/share162544901424303651')
+ .delete('/share167566673899109627')
.query(true)
.reply(202, "", [
- 'Transfer-Encoding',
- 'chunked',
+ 'Content-Length',
+ '0',
'Server',
'Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0',
'x-ms-request-id',
- '2ccaed12-c01a-000e-563e-713789000000',
+ '93b391bc-b01a-00b6-77f8-3983b3000000',
'x-ms-client-request-id',
- '3cf0fe7b-9f2c-4389-b351-100f8d3db0d4',
+ '8dfd827d-3c4e-4cdc-a572-1d387f9992e5',
'x-ms-version',
- '2020-10-02',
+ '2021-12-02',
'Date',
- 'Mon, 05 Jul 2021 01:37:13 GMT',
- 'Connection',
- 'close'
+ 'Mon, 06 Feb 2023 06:58:59 GMT'
]);
diff --git a/sdk/storage/storage-file-share/recordings/node/directoryclient/recording_listfilesanddirectories__with_invalid_char.js b/sdk/storage/storage-file-share/recordings/node/directoryclient/recording_listfilesanddirectories__with_invalid_char.js
new file mode 100644
index 000000000000..d23bfc560cf1
--- /dev/null
+++ b/sdk/storage/storage-file-share/recordings/node/directoryclient/recording_listfilesanddirectories__with_invalid_char.js
@@ -0,0 +1,541 @@
+let nock = require('nock');
+
+module.exports.hash = "92047cee93d29add57ac952974071c20";
+
+module.exports.testInfo = {"uniqueName":{"share":"share167569224623704808","dir":"dir167569224680600559","dir":"dir167569224683404257","dir0":"dir0167569224685102864","dir1":"dir1167569224686508907","dir2":"dir2167569224687908739","file0":"file0167569224689300993","file1":"file1167569224690703211","file2":"file2167569224692105512"},"newDate":{}}
+
+nock('https://fakestorageaccount.file.core.windows.net:443', {"encodedQueryParams":true})
+ .put('/share167569224623704808')
+ .query(true)
+ .reply(201, "", [
+ 'Content-Length',
+ '0',
+ 'Last-Modified',
+ 'Mon, 06 Feb 2023 14:04:06 GMT',
+ 'ETag',
+ '"0x8DB084B02F06EA7"',
+ 'Server',
+ 'Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0',
+ 'x-ms-request-id',
+ 'e05329b2-301a-0006-6f33-3a7a33000000',
+ 'x-ms-client-request-id',
+ 'a9b9c9f6-906e-4447-9e04-09527605acb7',
+ 'x-ms-version',
+ '2021-12-02',
+ 'Date',
+ 'Mon, 06 Feb 2023 14:04:06 GMT'
+]);
+
+nock('https://fakestorageaccount.file.core.windows.net:443', {"encodedQueryParams":true})
+ .put('/share167569224623704808/dir167569224680600559')
+ .query(true)
+ .reply(201, "", [
+ 'Content-Length',
+ '0',
+ 'Last-Modified',
+ 'Mon, 06 Feb 2023 14:04:06 GMT',
+ 'ETag',
+ '"0x8DB084B02F6FB73"',
+ 'Server',
+ 'Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0',
+ 'x-ms-request-id',
+ 'e05329d0-301a-0006-0833-3a7a33000000',
+ 'x-ms-client-request-id',
+ '9c5a45e6-7f3c-4502-87e9-45d67b4f8afe',
+ 'x-ms-version',
+ '2021-12-02',
+ 'x-ms-file-change-time',
+ '2023-02-06T14:04:06.8367219Z',
+ 'x-ms-file-last-write-time',
+ '2023-02-06T14:04:06.8367219Z',
+ 'x-ms-file-creation-time',
+ '2023-02-06T14:04:06.8367219Z',
+ 'x-ms-file-permission-key',
+ '9212185477508673717*1658283376881248060',
+ 'x-ms-file-attributes',
+ 'Directory',
+ 'x-ms-file-id',
+ '13835128424026341376',
+ 'x-ms-file-parent-id',
+ '0',
+ 'x-ms-request-server-encrypted',
+ 'true',
+ 'Date',
+ 'Mon, 06 Feb 2023 14:04:06 GMT'
+]);
+
+nock('https://fakestorageaccount.file.core.windows.net:443', {"encodedQueryParams":true})
+ .put('/share167569224623704808/dir%EF%BF%BE167569224683404257')
+ .query(true)
+ .reply(201, "", [
+ 'Content-Length',
+ '0',
+ 'Last-Modified',
+ 'Mon, 06 Feb 2023 14:04:06 GMT',
+ 'ETag',
+ '"0x8DB084B02FA2F4A"',
+ 'Server',
+ 'Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0',
+ 'x-ms-request-id',
+ 'e05329d4-301a-0006-0b33-3a7a33000000',
+ 'x-ms-client-request-id',
+ '9e30e8d9-c35c-48bc-a7b5-1728edaa6af7',
+ 'x-ms-version',
+ '2021-12-02',
+ 'x-ms-file-change-time',
+ '2023-02-06T14:04:06.8577098Z',
+ 'x-ms-file-last-write-time',
+ '2023-02-06T14:04:06.8577098Z',
+ 'x-ms-file-creation-time',
+ '2023-02-06T14:04:06.8577098Z',
+ 'x-ms-file-permission-key',
+ '9212185477508673717*1658283376881248060',
+ 'x-ms-file-attributes',
+ 'Directory',
+ 'x-ms-file-id',
+ '11529285414812647424',
+ 'x-ms-file-parent-id',
+ '0',
+ 'x-ms-request-server-encrypted',
+ 'true',
+ 'Date',
+ 'Mon, 06 Feb 2023 14:04:06 GMT'
+]);
+
+nock('https://fakestorageaccount.file.core.windows.net:443', {"encodedQueryParams":true})
+ .put('/share167569224623704808/dir%EF%BF%BE167569224683404257/dir%EF%BF%BE0167569224685102864')
+ .query(true)
+ .reply(201, "", [
+ 'Content-Length',
+ '0',
+ 'Last-Modified',
+ 'Mon, 06 Feb 2023 14:04:06 GMT',
+ 'ETag',
+ '"0x8DB084B02FC2AD8"',
+ 'Server',
+ 'Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0',
+ 'x-ms-request-id',
+ 'e05329d6-301a-0006-0d33-3a7a33000000',
+ 'x-ms-client-request-id',
+ '7cf950f6-2978-4040-abf3-375b2ae35097',
+ 'x-ms-version',
+ '2021-12-02',
+ 'x-ms-file-change-time',
+ '2023-02-06T14:04:06.8707032Z',
+ 'x-ms-file-last-write-time',
+ '2023-02-06T14:04:06.8707032Z',
+ 'x-ms-file-creation-time',
+ '2023-02-06T14:04:06.8707032Z',
+ 'x-ms-file-permission-key',
+ '9212185477508673717*1658283376881248060',
+ 'x-ms-file-attributes',
+ 'Directory',
+ 'x-ms-file-id',
+ '16140971433240035328',
+ 'x-ms-file-parent-id',
+ '11529285414812647424',
+ 'x-ms-request-server-encrypted',
+ 'true',
+ 'Date',
+ 'Mon, 06 Feb 2023 14:04:06 GMT'
+]);
+
+nock('https://fakestorageaccount.file.core.windows.net:443', {"encodedQueryParams":true})
+ .put('/share167569224623704808/dir%EF%BF%BE167569224683404257/dir%EF%BF%BE1167569224686508907')
+ .query(true)
+ .reply(201, "", [
+ 'Content-Length',
+ '0',
+ 'Last-Modified',
+ 'Mon, 06 Feb 2023 14:04:06 GMT',
+ 'ETag',
+ '"0x8DB084B02FE4D6C"',
+ 'Server',
+ 'Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0',
+ 'x-ms-request-id',
+ 'e05329d7-301a-0006-0e33-3a7a33000000',
+ 'x-ms-client-request-id',
+ '9b816e37-547b-43b3-862d-6eb724dded01',
+ 'x-ms-version',
+ '2021-12-02',
+ 'x-ms-file-change-time',
+ '2023-02-06T14:04:06.8846956Z',
+ 'x-ms-file-last-write-time',
+ '2023-02-06T14:04:06.8846956Z',
+ 'x-ms-file-creation-time',
+ '2023-02-06T14:04:06.8846956Z',
+ 'x-ms-file-permission-key',
+ '9212185477508673717*1658283376881248060',
+ 'x-ms-file-attributes',
+ 'Directory',
+ 'x-ms-file-id',
+ '10376363910205800448',
+ 'x-ms-file-parent-id',
+ '11529285414812647424',
+ 'x-ms-request-server-encrypted',
+ 'true',
+ 'Date',
+ 'Mon, 06 Feb 2023 14:04:06 GMT'
+]);
+
+nock('https://fakestorageaccount.file.core.windows.net:443', {"encodedQueryParams":true})
+ .put('/share167569224623704808/dir%EF%BF%BE167569224683404257/dir%EF%BF%BE2167569224687908739')
+ .query(true)
+ .reply(201, "", [
+ 'Content-Length',
+ '0',
+ 'Last-Modified',
+ 'Mon, 06 Feb 2023 14:04:06 GMT',
+ 'ETag',
+ '"0x8DB084B030048F6"',
+ 'Server',
+ 'Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0',
+ 'x-ms-request-id',
+ 'e05329d8-301a-0006-0f33-3a7a33000000',
+ 'x-ms-client-request-id',
+ 'bd7afc91-b053-4b1b-ad0a-0880d85fc614',
+ 'x-ms-version',
+ '2021-12-02',
+ 'x-ms-file-change-time',
+ '2023-02-06T14:04:06.8976886Z',
+ 'x-ms-file-last-write-time',
+ '2023-02-06T14:04:06.8976886Z',
+ 'x-ms-file-creation-time',
+ '2023-02-06T14:04:06.8976886Z',
+ 'x-ms-file-permission-key',
+ '9212185477508673717*1658283376881248060',
+ 'x-ms-file-attributes',
+ 'Directory',
+ 'x-ms-file-id',
+ '14988049928633188352',
+ 'x-ms-file-parent-id',
+ '11529285414812647424',
+ 'x-ms-request-server-encrypted',
+ 'true',
+ 'Date',
+ 'Mon, 06 Feb 2023 14:04:06 GMT'
+]);
+
+nock('https://fakestorageaccount.file.core.windows.net:443', {"encodedQueryParams":true})
+ .put('/share167569224623704808/dir%EF%BF%BE167569224683404257/file%EF%BF%BE0167569224689300993')
+ .reply(201, "", [
+ 'Content-Length',
+ '0',
+ 'Last-Modified',
+ 'Mon, 06 Feb 2023 14:04:06 GMT',
+ 'ETag',
+ '"0x8DB084B0302B9A4"',
+ 'Server',
+ 'Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0',
+ 'x-ms-request-id',
+ 'e05329db-301a-0006-1233-3a7a33000000',
+ 'x-ms-client-request-id',
+ '6f6a1f49-7e5e-4b90-8e9d-15c89373f113',
+ 'x-ms-version',
+ '2021-12-02',
+ 'x-ms-file-change-time',
+ '2023-02-06T14:04:06.9136804Z',
+ 'x-ms-file-last-write-time',
+ '2023-02-06T14:04:06.9136804Z',
+ 'x-ms-file-creation-time',
+ '2023-02-06T14:04:06.9136804Z',
+ 'x-ms-file-permission-key',
+ '13809038870468939698*1658283376881248060',
+ 'x-ms-file-attributes',
+ 'Archive',
+ 'x-ms-file-id',
+ '12682206919419494400',
+ 'x-ms-file-parent-id',
+ '11529285414812647424',
+ 'x-ms-request-server-encrypted',
+ 'true',
+ 'Date',
+ 'Mon, 06 Feb 2023 14:04:06 GMT'
+]);
+
+nock('https://fakestorageaccount.file.core.windows.net:443', {"encodedQueryParams":true})
+ .put('/share167569224623704808/dir%EF%BF%BE167569224683404257/file%EF%BF%BE1167569224690703211')
+ .reply(201, "", [
+ 'Content-Length',
+ '0',
+ 'Last-Modified',
+ 'Mon, 06 Feb 2023 14:04:06 GMT',
+ 'ETag',
+ '"0x8DB084B0304DC34"',
+ 'Server',
+ 'Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0',
+ 'x-ms-request-id',
+ 'e05329dc-301a-0006-1333-3a7a33000000',
+ 'x-ms-client-request-id',
+ '2acbbf79-85e2-4d9b-8721-ccf2ef39aea2',
+ 'x-ms-version',
+ '2021-12-02',
+ 'x-ms-file-change-time',
+ '2023-02-06T14:04:06.9276724Z',
+ 'x-ms-file-last-write-time',
+ '2023-02-06T14:04:06.9276724Z',
+ 'x-ms-file-creation-time',
+ '2023-02-06T14:04:06.9276724Z',
+ 'x-ms-file-permission-key',
+ '13809038870468939698*1658283376881248060',
+ 'x-ms-file-attributes',
+ 'Archive',
+ 'x-ms-file-id',
+ '17293892937846882304',
+ 'x-ms-file-parent-id',
+ '11529285414812647424',
+ 'x-ms-request-server-encrypted',
+ 'true',
+ 'Date',
+ 'Mon, 06 Feb 2023 14:04:06 GMT'
+]);
+
+nock('https://fakestorageaccount.file.core.windows.net:443', {"encodedQueryParams":true})
+ .put('/share167569224623704808/dir%EF%BF%BE167569224683404257/file%EF%BF%BE2167569224692105512')
+ .reply(201, "", [
+ 'Content-Length',
+ '0',
+ 'Last-Modified',
+ 'Mon, 06 Feb 2023 14:04:06 GMT',
+ 'ETag',
+ '"0x8DB084B0306FECB"',
+ 'Server',
+ 'Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0',
+ 'x-ms-request-id',
+ 'e05329df-301a-0006-1633-3a7a33000000',
+ 'x-ms-client-request-id',
+ 'c289d77c-5fda-486f-b9ca-4acbcbcc7212',
+ 'x-ms-version',
+ '2021-12-02',
+ 'x-ms-file-change-time',
+ '2023-02-06T14:04:06.9416651Z',
+ 'x-ms-file-last-write-time',
+ '2023-02-06T14:04:06.9416651Z',
+ 'x-ms-file-creation-time',
+ '2023-02-06T14:04:06.9416651Z',
+ 'x-ms-file-permission-key',
+ '13809038870468939698*1658283376881248060',
+ 'x-ms-file-attributes',
+ 'Archive',
+ 'x-ms-file-id',
+ '9799903157902376960',
+ 'x-ms-file-parent-id',
+ '11529285414812647424',
+ 'x-ms-request-server-encrypted',
+ 'true',
+ 'Date',
+ 'Mon, 06 Feb 2023 14:04:06 GMT'
+]);
+
+nock('https://fakestorageaccount.file.core.windows.net:443', {"encodedQueryParams":true})
+ .get('/share167569224623704808/dir%EF%BF%BE167569224683404257')
+ .query(true)
+ .reply(200, "11529285414812647424dir%EF%BF%BE0167569224685102864161409714332400353282023-02-06T14:04:06.8707032Z2023-02-06T14:04:06.8707032Z2023-02-06T14:04:06.8707032Z2023-02-06T14:04:06.8707032ZMon, 06 Feb 2023 14:04:06 GMT\"0x8DB084B02FC2AD8\"Directory9212185477508673717*1658283376881248060dir%EF%BF%BE1167569224686508907103763639102058004482023-02-06T14:04:06.8846956Z2023-02-06T14:04:06.8846956Z2023-02-06T14:04:06.8846956Z2023-02-06T14:04:06.8846956ZMon, 06 Feb 2023 14:04:06 GMT\"0x8DB084B02FE4D6C\"Directory9212185477508673717*1658283376881248060dir%EF%BF%BE2167569224687908739149880499286331883522023-02-06T14:04:06.8976886Z2023-02-06T14:04:06.8976886Z2023-02-06T14:04:06.8976886Z2023-02-06T14:04:06.8976886ZMon, 06 Feb 2023 14:04:06 GMT\"0x8DB084B030048F6\"Directory9212185477508673717*1658283376881248060file%EF%BF%BE01675692246893009931268220691941949440010242023-02-06T14:04:06.9136804Z2023-02-06T14:04:06.9136804Z2023-02-06T14:04:06.9136804Z2023-02-06T14:04:06.9136804ZMon, 06 Feb 2023 14:04:06 GMT\"0x8DB084B0302B9A4\"Archive13809038870468939698*1658283376881248060file%EF%BF%BE11675692246907032111729389293784688230410242023-02-06T14:04:06.9276724Z2023-02-06T14:04:06.9276724Z2023-02-06T14:04:06.9276724Z2023-02-06T14:04:06.9276724ZMon, 06 Feb 2023 14:04:06 GMT\"0x8DB084B0304DC34\"Archive13809038870468939698*1658283376881248060file%EF%BF%BE2167569224692105512979990315790237696010242023-02-06T14:04:06.9416651Z2023-02-06T14:04:06.9416651Z2023-02-06T14:04:06.9416651Z2023-02-06T14:04:06.9416651ZMon, 06 Feb 2023 14:04:06 GMT\"0x8DB084B0306FECB\"Archive13809038870468939698*1658283376881248060", [
+ 'Transfer-Encoding',
+ 'chunked',
+ 'Content-Type',
+ 'application/xml',
+ 'Server',
+ 'Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0',
+ 'x-ms-request-id',
+ 'e05329e0-301a-0006-1733-3a7a33000000',
+ 'x-ms-client-request-id',
+ 'fb4d9a65-42e7-4ec5-af3c-603778539106',
+ 'x-ms-version',
+ '2021-12-02',
+ 'Access-Control-Expose-Headers',
+ 'x-ms-request-id,x-ms-client-request-id,Server,x-ms-version,Content-Type,Content-Length,Date,Transfer-Encoding',
+ 'Access-Control-Allow-Origin',
+ '*',
+ 'Date',
+ 'Mon, 06 Feb 2023 14:04:06 GMT'
+]);
+
+nock('https://fakestorageaccount.file.core.windows.net:443', {"encodedQueryParams":true})
+ .get('/share167569224623704808/dir%EF%BF%BE167569224683404257')
+ .query(true)
+ .reply(200, "dir%EF%BF%BE11529285414812647424dir%EF%BF%BE0167569224685102864161409714332400353282023-02-06T14:04:06.8707032Z2023-02-06T14:04:06.8707032Z2023-02-06T14:04:06.8707032Z2023-02-06T14:04:06.8707032ZMon, 06 Feb 2023 14:04:06 GMT\"0x8DB084B02FC2AD8\"Directory9212185477508673717*1658283376881248060dir%EF%BF%BE1167569224686508907103763639102058004482023-02-06T14:04:06.8846956Z2023-02-06T14:04:06.8846956Z2023-02-06T14:04:06.8846956Z2023-02-06T14:04:06.8846956ZMon, 06 Feb 2023 14:04:06 GMT\"0x8DB084B02FE4D6C\"Directory9212185477508673717*1658283376881248060dir%EF%BF%BE2167569224687908739149880499286331883522023-02-06T14:04:06.8976886Z2023-02-06T14:04:06.8976886Z2023-02-06T14:04:06.8976886Z2023-02-06T14:04:06.8976886ZMon, 06 Feb 2023 14:04:06 GMT\"0x8DB084B030048F6\"Directory9212185477508673717*1658283376881248060", [
+ 'Transfer-Encoding',
+ 'chunked',
+ 'Content-Type',
+ 'application/xml',
+ 'Server',
+ 'Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0',
+ 'x-ms-request-id',
+ 'e05329e4-301a-0006-1b33-3a7a33000000',
+ 'x-ms-client-request-id',
+ '8d7e8669-da21-49f9-a9f1-7dda9a89085a',
+ 'x-ms-version',
+ '2021-12-02',
+ 'Access-Control-Expose-Headers',
+ 'x-ms-request-id,x-ms-client-request-id,Server,x-ms-version,Content-Type,Content-Length,Date,Transfer-Encoding',
+ 'Access-Control-Allow-Origin',
+ '*',
+ 'Date',
+ 'Mon, 06 Feb 2023 14:04:06 GMT'
+]);
+
+nock('https://fakestorageaccount.file.core.windows.net:443', {"encodedQueryParams":true})
+ .get('/share167569224623704808/dir%EF%BF%BE167569224683404257')
+ .query(true)
+ .reply(200, "file%EF%BF%BE11529285414812647424file%EF%BF%BE01675692246893009931268220691941949440010242023-02-06T14:04:06.9136804Z2023-02-06T14:04:06.9136804Z2023-02-06T14:04:06.9136804Z2023-02-06T14:04:06.9136804ZMon, 06 Feb 2023 14:04:06 GMT\"0x8DB084B0302B9A4\"Archive13809038870468939698*1658283376881248060file%EF%BF%BE11675692246907032111729389293784688230410242023-02-06T14:04:06.9276724Z2023-02-06T14:04:06.9276724Z2023-02-06T14:04:06.9276724Z2023-02-06T14:04:06.9276724ZMon, 06 Feb 2023 14:04:06 GMT\"0x8DB084B0304DC34\"Archive13809038870468939698*1658283376881248060file%EF%BF%BE2167569224692105512979990315790237696010242023-02-06T14:04:06.9416651Z2023-02-06T14:04:06.9416651Z2023-02-06T14:04:06.9416651Z2023-02-06T14:04:06.9416651ZMon, 06 Feb 2023 14:04:06 GMT\"0x8DB084B0306FECB\"Archive13809038870468939698*1658283376881248060", [
+ 'Transfer-Encoding',
+ 'chunked',
+ 'Content-Type',
+ 'application/xml',
+ 'Server',
+ 'Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0',
+ 'x-ms-request-id',
+ 'e05329e6-301a-0006-1d33-3a7a33000000',
+ 'x-ms-client-request-id',
+ '8fec8bf2-f6b2-4e1f-b7da-2d5f81883f58',
+ 'x-ms-version',
+ '2021-12-02',
+ 'Access-Control-Expose-Headers',
+ 'x-ms-request-id,x-ms-client-request-id,Server,x-ms-version,Content-Type,Content-Length,Date,Transfer-Encoding',
+ 'Access-Control-Allow-Origin',
+ '*',
+ 'Date',
+ 'Mon, 06 Feb 2023 14:04:06 GMT'
+]);
+
+nock('https://fakestorageaccount.file.core.windows.net:443', {"encodedQueryParams":true})
+ .delete('/share167569224623704808/dir%EF%BF%BE167569224683404257/file%EF%BF%BE0167569224689300993')
+ .reply(202, "", [
+ 'Content-Length',
+ '0',
+ 'Server',
+ 'Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0',
+ 'x-ms-request-id',
+ 'e05329e7-301a-0006-1e33-3a7a33000000',
+ 'x-ms-client-request-id',
+ 'a952686b-fc64-419b-92a8-5778a89755f8',
+ 'x-ms-version',
+ '2021-12-02',
+ 'Date',
+ 'Mon, 06 Feb 2023 14:04:06 GMT'
+]);
+
+nock('https://fakestorageaccount.file.core.windows.net:443', {"encodedQueryParams":true})
+ .delete('/share167569224623704808/dir%EF%BF%BE167569224683404257/file%EF%BF%BE1167569224690703211')
+ .reply(202, "", [
+ 'Content-Length',
+ '0',
+ 'Server',
+ 'Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0',
+ 'x-ms-request-id',
+ 'e05329e8-301a-0006-1f33-3a7a33000000',
+ 'x-ms-client-request-id',
+ '19539a19-1a67-40b7-8626-b9bd5d15671c',
+ 'x-ms-version',
+ '2021-12-02',
+ 'Date',
+ 'Mon, 06 Feb 2023 14:04:06 GMT'
+]);
+
+nock('https://fakestorageaccount.file.core.windows.net:443', {"encodedQueryParams":true})
+ .delete('/share167569224623704808/dir%EF%BF%BE167569224683404257/file%EF%BF%BE2167569224692105512')
+ .reply(202, "", [
+ 'Content-Length',
+ '0',
+ 'Server',
+ 'Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0',
+ 'x-ms-request-id',
+ 'e05329e9-301a-0006-2033-3a7a33000000',
+ 'x-ms-client-request-id',
+ '9abc0e9b-8fc8-4f42-8d59-bfc7f8099d70',
+ 'x-ms-version',
+ '2021-12-02',
+ 'Date',
+ 'Mon, 06 Feb 2023 14:04:06 GMT'
+]);
+
+nock('https://fakestorageaccount.file.core.windows.net:443', {"encodedQueryParams":true})
+ .delete('/share167569224623704808/dir%EF%BF%BE167569224683404257/dir%EF%BF%BE0167569224685102864')
+ .query(true)
+ .reply(202, "", [
+ 'Content-Length',
+ '0',
+ 'Server',
+ 'Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0',
+ 'x-ms-request-id',
+ 'e05329eb-301a-0006-2233-3a7a33000000',
+ 'x-ms-client-request-id',
+ '8705cfcf-a154-43e9-899f-92db0446f39d',
+ 'x-ms-version',
+ '2021-12-02',
+ 'Date',
+ 'Mon, 06 Feb 2023 14:04:06 GMT'
+]);
+
+nock('https://fakestorageaccount.file.core.windows.net:443', {"encodedQueryParams":true})
+ .delete('/share167569224623704808/dir%EF%BF%BE167569224683404257/dir%EF%BF%BE1167569224686508907')
+ .query(true)
+ .reply(202, "", [
+ 'Content-Length',
+ '0',
+ 'Server',
+ 'Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0',
+ 'x-ms-request-id',
+ 'e05329ec-301a-0006-2333-3a7a33000000',
+ 'x-ms-client-request-id',
+ 'c8aab6ba-fcf1-4e10-ac55-d68a273eedf9',
+ 'x-ms-version',
+ '2021-12-02',
+ 'Date',
+ 'Mon, 06 Feb 2023 14:04:06 GMT'
+]);
+
+nock('https://fakestorageaccount.file.core.windows.net:443', {"encodedQueryParams":true})
+ .delete('/share167569224623704808/dir%EF%BF%BE167569224683404257/dir%EF%BF%BE2167569224687908739')
+ .query(true)
+ .reply(202, "", [
+ 'Content-Length',
+ '0',
+ 'Server',
+ 'Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0',
+ 'x-ms-request-id',
+ 'e05329ed-301a-0006-2433-3a7a33000000',
+ 'x-ms-client-request-id',
+ '1710c029-1d48-402f-b0eb-6092ad36d025',
+ 'x-ms-version',
+ '2021-12-02',
+ 'Date',
+ 'Mon, 06 Feb 2023 14:04:06 GMT'
+]);
+
+nock('https://fakestorageaccount.file.core.windows.net:443', {"encodedQueryParams":true})
+ .delete('/share167569224623704808/dir%EF%BF%BE167569224683404257')
+ .query(true)
+ .reply(202, "", [
+ 'Content-Length',
+ '0',
+ 'Server',
+ 'Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0',
+ 'x-ms-request-id',
+ 'e05329ef-301a-0006-2633-3a7a33000000',
+ 'x-ms-client-request-id',
+ '9d15eef4-0fbe-4a66-b232-afb8373737ee',
+ 'x-ms-version',
+ '2021-12-02',
+ 'Date',
+ 'Mon, 06 Feb 2023 14:04:06 GMT'
+]);
+
+nock('https://fakestorageaccount.file.core.windows.net:443', {"encodedQueryParams":true})
+ .delete('/share167569224623704808')
+ .query(true)
+ .reply(202, "", [
+ 'Content-Length',
+ '0',
+ 'Server',
+ 'Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0',
+ 'x-ms-request-id',
+ '41caf96e-001a-0063-1d33-3acb6e000000',
+ 'x-ms-client-request-id',
+ 'd66f5e43-2c4f-4a51-951e-4f8922e6fafd',
+ 'x-ms-version',
+ '2021-12-02',
+ 'Date',
+ 'Mon, 06 Feb 2023 14:04:06 GMT'
+]);
diff --git a/sdk/storage/storage-file-share/recordings/node/directoryclient/recording_listhandles_for_directory_with_invalid_char_should_work.js b/sdk/storage/storage-file-share/recordings/node/directoryclient/recording_listhandles_for_directory_with_invalid_char_should_work.js
new file mode 100644
index 000000000000..7cc4d28a2588
--- /dev/null
+++ b/sdk/storage/storage-file-share/recordings/node/directoryclient/recording_listhandles_for_directory_with_invalid_char_should_work.js
@@ -0,0 +1,145 @@
+let nock = require('nock');
+
+module.exports.hash = "330c64727056aa653d660eb906525078";
+
+module.exports.testInfo = {"uniqueName":{"share":"share167569196732709778","dir":"dir167569196782704897","dir":"dir167569196785709313"},"newDate":{}}
+
+nock('https://fakestorageaccount.file.core.windows.net:443', {"encodedQueryParams":true})
+ .put('/share167569196732709778')
+ .query(true)
+ .reply(201, "", [
+ 'Content-Length',
+ '0',
+ 'Last-Modified',
+ 'Mon, 06 Feb 2023 13:59:27 GMT',
+ 'ETag',
+ '"0x8DB084A5CA74647"',
+ 'Server',
+ 'Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0',
+ 'x-ms-request-id',
+ '7091c9ed-c01a-0090-4e33-3a1807000000',
+ 'x-ms-client-request-id',
+ 'cdb5ab03-bdd4-4f5b-8660-72d8e0fc9050',
+ 'x-ms-version',
+ '2021-12-02',
+ 'Date',
+ 'Mon, 06 Feb 2023 13:59:27 GMT'
+]);
+
+nock('https://fakestorageaccount.file.core.windows.net:443', {"encodedQueryParams":true})
+ .put('/share167569196732709778/dir167569196782704897')
+ .query(true)
+ .reply(201, "", [
+ 'Content-Length',
+ '0',
+ 'Last-Modified',
+ 'Mon, 06 Feb 2023 13:59:27 GMT',
+ 'ETag',
+ '"0x8DB084A5CAEEBD9"',
+ 'Server',
+ 'Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0',
+ 'x-ms-request-id',
+ '7091c9f1-c01a-0090-4f33-3a1807000000',
+ 'x-ms-client-request-id',
+ '83045fac-0912-4d0c-b4f4-fbd98cfdb976',
+ 'x-ms-version',
+ '2021-12-02',
+ 'x-ms-file-change-time',
+ '2023-02-06T13:59:27.8626777Z',
+ 'x-ms-file-last-write-time',
+ '2023-02-06T13:59:27.8626777Z',
+ 'x-ms-file-creation-time',
+ '2023-02-06T13:59:27.8626777Z',
+ 'x-ms-file-permission-key',
+ '9212185477508673717*1658283376881248060',
+ 'x-ms-file-attributes',
+ 'Directory',
+ 'x-ms-file-id',
+ '13835128424026341376',
+ 'x-ms-file-parent-id',
+ '0',
+ 'x-ms-request-server-encrypted',
+ 'true',
+ 'Date',
+ 'Mon, 06 Feb 2023 13:59:27 GMT'
+]);
+
+nock('https://fakestorageaccount.file.core.windows.net:443', {"encodedQueryParams":true})
+ .put('/share167569196732709778/dir%EF%BF%BE167569196785709313')
+ .query(true)
+ .reply(201, "", [
+ 'Content-Length',
+ '0',
+ 'Last-Modified',
+ 'Mon, 06 Feb 2023 13:59:27 GMT',
+ 'ETag',
+ '"0x8DB084A5CB1D1A5"',
+ 'Server',
+ 'Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0',
+ 'x-ms-request-id',
+ '7091c9f3-c01a-0090-5033-3a1807000000',
+ 'x-ms-client-request-id',
+ '572eecb6-b9cd-44e7-881b-698b2a872b98',
+ 'x-ms-version',
+ '2021-12-02',
+ 'x-ms-file-change-time',
+ '2023-02-06T13:59:27.8816677Z',
+ 'x-ms-file-last-write-time',
+ '2023-02-06T13:59:27.8816677Z',
+ 'x-ms-file-creation-time',
+ '2023-02-06T13:59:27.8816677Z',
+ 'x-ms-file-permission-key',
+ '9212185477508673717*1658283376881248060',
+ 'x-ms-file-attributes',
+ 'Directory',
+ 'x-ms-file-id',
+ '11529285414812647424',
+ 'x-ms-file-parent-id',
+ '0',
+ 'x-ms-request-server-encrypted',
+ 'true',
+ 'Date',
+ 'Mon, 06 Feb 2023 13:59:27 GMT'
+]);
+
+nock('https://fakestorageaccount.file.core.windows.net:443', {"encodedQueryParams":true})
+ .get('/share167569196732709778/dir%EF%BF%BE167569196785709313')
+ .query(true)
+ .reply(200, "", [
+ 'Transfer-Encoding',
+ 'chunked',
+ 'Content-Type',
+ 'application/xml',
+ 'Server',
+ 'Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0',
+ 'x-ms-request-id',
+ '7091c9f4-c01a-0090-5133-3a1807000000',
+ 'x-ms-client-request-id',
+ '0fd39e5e-7290-4725-b35c-fe5b26fe69aa',
+ 'x-ms-version',
+ '2021-12-02',
+ 'Access-Control-Expose-Headers',
+ 'x-ms-request-id,x-ms-client-request-id,Server,x-ms-version,Content-Type,Content-Length,Date,Transfer-Encoding',
+ 'Access-Control-Allow-Origin',
+ '*',
+ 'Date',
+ 'Mon, 06 Feb 2023 13:59:27 GMT'
+]);
+
+nock('https://fakestorageaccount.file.core.windows.net:443', {"encodedQueryParams":true})
+ .delete('/share167569196732709778')
+ .query(true)
+ .reply(202, "", [
+ 'Content-Length',
+ '0',
+ 'Server',
+ 'Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0',
+ 'x-ms-request-id',
+ '7091c9f5-c01a-0090-5233-3a1807000000',
+ 'x-ms-client-request-id',
+ '839f3c09-cc8f-48de-9ea6-6d6015dde959',
+ 'x-ms-version',
+ '2021-12-02',
+ 'Date',
+ 'Mon, 06 Feb 2023 13:59:27 GMT'
+]);
diff --git a/sdk/storage/storage-file-share/recordings/node/fileclient/recording_listhandles_for_file_with_invalid_char_should_work.js b/sdk/storage/storage-file-share/recordings/node/fileclient/recording_listhandles_for_file_with_invalid_char_should_work.js
new file mode 100644
index 000000000000..a2e56a4068b0
--- /dev/null
+++ b/sdk/storage/storage-file-share/recordings/node/fileclient/recording_listhandles_for_file_with_invalid_char_should_work.js
@@ -0,0 +1,144 @@
+let nock = require('nock');
+
+module.exports.hash = "dd4542059d39a7de420bdb64fea81cdc";
+
+module.exports.testInfo = {"uniqueName":{"share":"share167569196797808310","dir":"dir167569196799104222","file":"file167569196801400947","file":"file167569196801503745"},"newDate":{}}
+
+nock('https://fakestorageaccount.file.core.windows.net:443', {"encodedQueryParams":true})
+ .put('/share167569196797808310')
+ .query(true)
+ .reply(201, "", [
+ 'Content-Length',
+ '0',
+ 'Last-Modified',
+ 'Mon, 06 Feb 2023 13:59:27 GMT',
+ 'ETag',
+ '"0x8DB084A5CC355D8"',
+ 'Server',
+ 'Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0',
+ 'x-ms-request-id',
+ '7091c9f6-c01a-0090-5333-3a1807000000',
+ 'x-ms-client-request-id',
+ 'b577ae0c-aa17-4243-a09d-5308b5dba2d3',
+ 'x-ms-version',
+ '2021-12-02',
+ 'Date',
+ 'Mon, 06 Feb 2023 13:59:27 GMT'
+]);
+
+nock('https://fakestorageaccount.file.core.windows.net:443', {"encodedQueryParams":true})
+ .put('/share167569196797808310/dir167569196799104222')
+ .query(true)
+ .reply(201, "", [
+ 'Content-Length',
+ '0',
+ 'Last-Modified',
+ 'Mon, 06 Feb 2023 13:59:28 GMT',
+ 'ETag',
+ '"0x8DB084A5CC72B78"',
+ 'Server',
+ 'Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0',
+ 'x-ms-request-id',
+ '7091c9f8-c01a-0090-5433-3a1807000000',
+ 'x-ms-client-request-id',
+ '26cca839-6558-4760-a2fe-471f9e75c93f',
+ 'x-ms-version',
+ '2021-12-02',
+ 'x-ms-file-change-time',
+ '2023-02-06T13:59:28.0215928Z',
+ 'x-ms-file-last-write-time',
+ '2023-02-06T13:59:28.0215928Z',
+ 'x-ms-file-creation-time',
+ '2023-02-06T13:59:28.0215928Z',
+ 'x-ms-file-permission-key',
+ '9212185477508673717*1658283376881248060',
+ 'x-ms-file-attributes',
+ 'Directory',
+ 'x-ms-file-id',
+ '13835128424026341376',
+ 'x-ms-file-parent-id',
+ '0',
+ 'x-ms-request-server-encrypted',
+ 'true',
+ 'Date',
+ 'Mon, 06 Feb 2023 13:59:27 GMT'
+]);
+
+nock('https://fakestorageaccount.file.core.windows.net:443', {"encodedQueryParams":true})
+ .put('/share167569196797808310/file%EF%BF%BE167569196801503745')
+ .reply(201, "", [
+ 'Content-Length',
+ '0',
+ 'Last-Modified',
+ 'Mon, 06 Feb 2023 13:59:28 GMT',
+ 'ETag',
+ '"0x8DB084A5CC9C32E"',
+ 'Server',
+ 'Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0',
+ 'x-ms-request-id',
+ '7091c9f9-c01a-0090-5533-3a1807000000',
+ 'x-ms-client-request-id',
+ 'aa1fbc95-d39e-448b-a305-2057c3fc0e85',
+ 'x-ms-version',
+ '2021-12-02',
+ 'x-ms-file-change-time',
+ '2023-02-06T13:59:28.0385838Z',
+ 'x-ms-file-last-write-time',
+ '2023-02-06T13:59:28.0385838Z',
+ 'x-ms-file-creation-time',
+ '2023-02-06T13:59:28.0385838Z',
+ 'x-ms-file-permission-key',
+ '13809038870468939698*1658283376881248060',
+ 'x-ms-file-attributes',
+ 'Archive',
+ 'x-ms-file-id',
+ '11529285414812647424',
+ 'x-ms-file-parent-id',
+ '0',
+ 'x-ms-request-server-encrypted',
+ 'true',
+ 'Date',
+ 'Mon, 06 Feb 2023 13:59:27 GMT'
+]);
+
+nock('https://fakestorageaccount.file.core.windows.net:443', {"encodedQueryParams":true})
+ .get('/share167569196797808310/file%EF%BF%BE167569196801503745')
+ .query(true)
+ .reply(200, "", [
+ 'Transfer-Encoding',
+ 'chunked',
+ 'Content-Type',
+ 'application/xml',
+ 'Server',
+ 'Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0',
+ 'x-ms-request-id',
+ '7091c9fa-c01a-0090-5633-3a1807000000',
+ 'x-ms-client-request-id',
+ '76d8c2cb-625f-44e0-a220-e91a18347b10',
+ 'x-ms-version',
+ '2021-12-02',
+ 'Access-Control-Expose-Headers',
+ 'x-ms-request-id,x-ms-client-request-id,Server,x-ms-version,Content-Type,Content-Length,Date,Transfer-Encoding',
+ 'Access-Control-Allow-Origin',
+ '*',
+ 'Date',
+ 'Mon, 06 Feb 2023 13:59:27 GMT'
+]);
+
+nock('https://fakestorageaccount.file.core.windows.net:443', {"encodedQueryParams":true})
+ .delete('/share167569196797808310')
+ .query(true)
+ .reply(202, "", [
+ 'Content-Length',
+ '0',
+ 'Server',
+ 'Windows-Azure-File/1.0 Microsoft-HTTPAPI/2.0',
+ 'x-ms-request-id',
+ '7091c9fb-c01a-0090-5733-3a1807000000',
+ 'x-ms-client-request-id',
+ 'ca613457-61af-4e49-ab54-8bd8c8d9f43c',
+ 'x-ms-version',
+ '2021-12-02',
+ 'Date',
+ 'Mon, 06 Feb 2023 13:59:27 GMT'
+]);
diff --git a/sdk/storage/storage-file-share/src/Clients.ts b/sdk/storage/storage-file-share/src/Clients.ts
index 8ead863ba0f7..352f2ba5d31e 100644
--- a/sdk/storage/storage-file-share/src/Clients.ts
+++ b/sdk/storage/storage-file-share/src/Clients.ts
@@ -77,6 +77,8 @@ import {
setURLPath,
setURLQueries,
EscapePath,
+ ConvertInternalResponseOfListFiles,
+ ConvertInternalResponseOfListHandles,
} from "./utils/utils.common";
import { Credential } from "./credentials/Credential";
import { StorageSharedKeyCredential } from "./credentials/StorageSharedKeyCredential";
@@ -2438,11 +2440,20 @@ export class ShareDirectoryClient extends StorageClient {
}
try {
- return await this.context.listFilesAndDirectoriesSegment({
+ const response = await this.context.listFilesAndDirectoriesSegment({
marker,
...options,
...convertTracingToRequestOptionsBase(updatedOptions),
});
+
+ const wrappedResponse: DirectoryListFilesAndDirectoriesSegmentResponse = {
+ ...ConvertInternalResponseOfListFiles(response),
+ _response: {
+ ...response._response,
+ parsedBody: ConvertInternalResponseOfListFiles(response._response.parsedBody),
+ }, // _response is made non-enumerable
+ };
+ return wrappedResponse;
} catch (e: any) {
span.setStatus({
code: SpanStatusCode.ERROR,
@@ -2631,7 +2642,16 @@ export class ShareDirectoryClient extends StorageClient {
if ((response.handleList as any) === "") {
response.handleList = undefined;
}
- return response;
+
+ const wrappedResponse: DirectoryListHandlesResponse = {
+ ...ConvertInternalResponseOfListHandles(response),
+ _response: {
+ ...response._response,
+ parsedBody: ConvertInternalResponseOfListHandles(response._response.parsedBody),
+ },
+ };
+
+ return wrappedResponse;
} catch (e: any) {
span.setStatus({
code: SpanStatusCode.ERROR,
@@ -5098,7 +5118,16 @@ export class ShareFileClient extends StorageClient {
if ((response.handleList as any) === "") {
response.handleList = undefined;
}
- return response;
+
+ const wrappedResponse: DirectoryListHandlesResponse = {
+ ...ConvertInternalResponseOfListHandles(response),
+ _response: {
+ ...response._response,
+ parsedBody: ConvertInternalResponseOfListHandles(response._response.parsedBody),
+ },
+ };
+
+ return wrappedResponse;
} catch (e: any) {
span.setStatus({
code: SpanStatusCode.ERROR,
diff --git a/sdk/storage/storage-file-share/src/generated/src/models/index.ts b/sdk/storage/storage-file-share/src/generated/src/models/index.ts
index cea6fa380f71..afc651868f81 100644
--- a/sdk/storage/storage-file-share/src/generated/src/models/index.ts
+++ b/sdk/storage/storage-file-share/src/generated/src/models/index.ts
@@ -159,8 +159,9 @@ export interface ListFilesAndDirectoriesSegmentResponse {
serviceEndpoint: string;
shareName: string;
shareSnapshot?: string;
+ encoded?: boolean;
directoryPath: string;
- prefix: string;
+ prefix: StringEncoded;
marker?: string;
maxResults?: number;
/** Abstract for entries that can be listed from Directory. */
@@ -169,6 +170,11 @@ export interface ListFilesAndDirectoriesSegmentResponse {
directoryId?: string;
}
+export interface StringEncoded {
+ encoded?: boolean;
+ content?: string;
+}
+
/** Abstract for entries that can be listed from Directory. */
export interface FilesAndDirectoriesListSegment {
directoryItems: DirectoryItem[];
@@ -177,7 +183,7 @@ export interface FilesAndDirectoriesListSegment {
/** A listed directory item. */
export interface DirectoryItem {
- name: string;
+ name: StringEncoded;
fileId?: string;
/** File properties. */
properties?: FileProperty;
@@ -199,7 +205,7 @@ export interface FileProperty {
/** A listed file item. */
export interface FileItem {
- name: string;
+ name: StringEncoded;
fileId?: string;
/** File properties. */
properties: FileProperty;
@@ -217,8 +223,7 @@ export interface ListHandlesResponse {
export interface HandleItem {
/** XSMB service handle ID */
handleId: string;
- /** File or directory name including full path starting from share root */
- path: string;
+ path: StringEncoded;
/** FileId uniquely identifies the file or directory. */
fileId: string;
/** ParentId uniquely identifies the parent directory of the object. */
diff --git a/sdk/storage/storage-file-share/src/generated/src/models/mappers.ts b/sdk/storage/storage-file-share/src/generated/src/models/mappers.ts
index e6c990230df1..a812dd40b066 100644
--- a/sdk/storage/storage-file-share/src/generated/src/models/mappers.ts
+++ b/sdk/storage/storage-file-share/src/generated/src/models/mappers.ts
@@ -656,6 +656,14 @@ export const ListFilesAndDirectoriesSegmentResponse: coreHttp.CompositeMapper =
name: "String"
}
},
+ encoded: {
+ serializedName: "Encoded",
+ xmlName: "Encoded",
+ xmlIsAttribute: true,
+ type: {
+ name: "Boolean"
+ }
+ },
directoryPath: {
serializedName: "DirectoryPath",
required: true,
@@ -667,10 +675,10 @@ export const ListFilesAndDirectoriesSegmentResponse: coreHttp.CompositeMapper =
},
prefix: {
serializedName: "Prefix",
- required: true,
xmlName: "Prefix",
type: {
- name: "String"
+ name: "Composite",
+ className: "StringEncoded"
}
},
marker: {
@@ -714,6 +722,32 @@ export const ListFilesAndDirectoriesSegmentResponse: coreHttp.CompositeMapper =
}
};
+export const StringEncoded: coreHttp.CompositeMapper = {
+ serializedName: "StringEncoded",
+ type: {
+ name: "Composite",
+ className: "StringEncoded",
+ modelProperties: {
+ encoded: {
+ serializedName: "Encoded",
+ xmlName: "Encoded",
+ xmlIsAttribute: true,
+ type: {
+ name: "Boolean"
+ }
+ },
+ content: {
+ serializedName: "content",
+ xmlName: "content",
+ xmlIsMsText: true,
+ type: {
+ name: "String"
+ }
+ }
+ }
+ }
+};
+
export const FilesAndDirectoriesListSegment: coreHttp.CompositeMapper = {
serializedName: "FilesAndDirectoriesListSegment",
xmlName: "Entries",
@@ -764,10 +798,10 @@ export const DirectoryItem: coreHttp.CompositeMapper = {
modelProperties: {
name: {
serializedName: "Name",
- required: true,
xmlName: "Name",
type: {
- name: "String"
+ name: "Composite",
+ className: "StringEncoded"
}
},
fileId: {
@@ -872,10 +906,10 @@ export const FileItem: coreHttp.CompositeMapper = {
modelProperties: {
name: {
serializedName: "Name",
- required: true,
xmlName: "Name",
type: {
- name: "String"
+ name: "Composite",
+ className: "StringEncoded"
}
},
fileId: {
@@ -962,10 +996,10 @@ export const HandleItem: coreHttp.CompositeMapper = {
},
path: {
serializedName: "Path",
- required: true,
xmlName: "Path",
type: {
- name: "String"
+ name: "Composite",
+ className: "StringEncoded"
}
},
fileId: {
diff --git a/sdk/storage/storage-file-share/src/generated/src/models/parameters.ts b/sdk/storage/storage-file-share/src/generated/src/models/parameters.ts
index 4e1b76744ce6..e2073057f8be 100644
--- a/sdk/storage/storage-file-share/src/generated/src/models/parameters.ts
+++ b/sdk/storage/storage-file-share/src/generated/src/models/parameters.ts
@@ -100,7 +100,7 @@ export const timeoutInSeconds: OperationQueryParameter = {
export const version: OperationParameter = {
parameterPath: "version",
mapper: {
- defaultValue: "2021-10-04",
+ defaultValue: "2021-12-02",
isConstant: true,
serializedName: "x-ms-version",
type: {
diff --git a/sdk/storage/storage-file-share/src/generated/src/storageClientContext.ts b/sdk/storage/storage-file-share/src/generated/src/storageClientContext.ts
index a5a978d51aea..c6e8f389d017 100644
--- a/sdk/storage/storage-file-share/src/generated/src/storageClientContext.ts
+++ b/sdk/storage/storage-file-share/src/generated/src/storageClientContext.ts
@@ -48,7 +48,7 @@ export class StorageClientContext extends coreHttp.ServiceClient {
this.url = url;
// Assigning values to Constant parameters
- this.version = options.version || "2021-10-04";
+ this.version = options.version || "2021-12-02";
this.fileRangeWriteFromUrl = options.fileRangeWriteFromUrl || "update";
}
}
diff --git a/sdk/storage/storage-file-share/src/generatedModels.ts b/sdk/storage/storage-file-share/src/generatedModels.ts
index bb7e4f019bf9..f5b5f4a432a0 100644
--- a/sdk/storage/storage-file-share/src/generatedModels.ts
+++ b/sdk/storage/storage-file-share/src/generatedModels.ts
@@ -2,6 +2,7 @@
// Licensed under the MIT license.
// explicitly exporting types that we need.
+import * as coreHttp from "@azure/core-http";
export {
CopyStatusType,
@@ -9,9 +10,6 @@ export {
DirectoryCreateResponse,
DirectoryDeleteResponse,
DirectoryGetPropertiesResponse,
- DirectoryItem,
- DirectoryListFilesAndDirectoriesSegmentResponse,
- DirectoryListHandlesResponse,
DirectorySetMetadataResponse,
DirectorySetPropertiesResponse,
FileAbortCopyResponse,
@@ -22,9 +20,7 @@ export {
FileDownloadResponse as FileDownloadResponseModel,
FileGetPropertiesResponse,
FileGetRangeListHeaders,
- FileItem,
FileLastWrittenMode,
- FileListHandlesResponse,
FileServiceProperties,
FileSetMetadataResponse,
FileStartCopyResponse,
@@ -32,7 +28,6 @@ export {
FileUploadRangeFromURLResponse,
FileUploadRangeResponse,
PermissionCopyModeType,
- HandleItem,
ListSharesIncludeType,
FileRange as RangeModel,
ServiceGetPropertiesResponse,
@@ -56,10 +51,7 @@ export {
DirectoryCreateHeaders,
DirectoryDeleteHeaders,
DirectoryGetPropertiesHeaders,
- FilesAndDirectoriesListSegment,
- ListFilesAndDirectoriesSegmentResponse,
DirectoryListFilesAndDirectoriesSegmentHeaders,
- ListHandlesResponse,
DirectoryRenameHeaders,
DirectoryRenameResponse,
DirectoryListHandlesHeaders,
@@ -115,7 +107,14 @@ export {
ShareRootSquash,
} from "./generated/src/models";
-import { ShareSetPropertiesResponse, ShareSetPropertiesHeaders } from "./generated/src/models";
+import {
+ ShareSetPropertiesResponse,
+ ShareSetPropertiesHeaders,
+ FileProperty,
+ DirectoryListFilesAndDirectoriesSegmentHeaders,
+ FileListHandlesHeaders,
+ DirectoryListHandlesHeaders,
+} from "./generated/src/models";
/**
* Contains response data for the setQuota operation.
@@ -126,3 +125,116 @@ export type ShareSetQuotaResponse = ShareSetPropertiesResponse;
* Defines headers for setQuota operation.
*/
export type ShareSetQuotaHeaders = ShareSetPropertiesHeaders;
+
+/** A listed file item. */
+export interface FileItem {
+ name: string;
+ fileId?: string;
+ /** File properties. */
+ properties: FileProperty;
+ attributes?: string;
+ permissionKey?: string;
+}
+
+/** A listed directory item. */
+export interface DirectoryItem {
+ name: string;
+ fileId?: string;
+ /** File properties. */
+ properties?: FileProperty;
+ attributes?: string;
+ permissionKey?: string;
+}
+
+/** Abstract for entries that can be listed from Directory. */
+export interface FilesAndDirectoriesListSegment {
+ directoryItems: DirectoryItem[];
+ fileItems: FileItem[];
+}
+
+/** An enumeration of directories and files. */
+export interface ListFilesAndDirectoriesSegmentResponse {
+ serviceEndpoint: string;
+ shareName: string;
+ shareSnapshot?: string;
+ directoryPath: string;
+ prefix: string;
+ marker?: string;
+ maxResults?: number;
+ /** Abstract for entries that can be listed from Directory. */
+ segment: FilesAndDirectoriesListSegment;
+ continuationToken: string;
+ directoryId?: string;
+}
+
+/** Contains response data for the listFilesAndDirectoriesSegment operation. */
+export type DirectoryListFilesAndDirectoriesSegmentResponse =
+ DirectoryListFilesAndDirectoriesSegmentHeaders &
+ ListFilesAndDirectoriesSegmentResponse & {
+ /** The underlying HTTP response. */
+ _response: coreHttp.HttpResponse & {
+ /** The response body as text (string format) */
+ bodyAsText: string;
+
+ /** The response body as parsed JSON or XML */
+ parsedBody: ListFilesAndDirectoriesSegmentResponse;
+ /** The parsed HTTP response headers. */
+ parsedHeaders: DirectoryListFilesAndDirectoriesSegmentHeaders;
+ };
+ };
+
+/** A listed Azure Storage handle item. */
+export interface HandleItem {
+ /** XSMB service handle ID */
+ handleId: string;
+ /** File or directory name including full path starting from share root */
+ path: string;
+ /** FileId uniquely identifies the file or directory. */
+ fileId: string;
+ /** ParentId uniquely identifies the parent directory of the object. */
+ parentId?: string;
+ /** SMB session ID in context of which the file handle was opened */
+ sessionId: string;
+ /** Client IP that opened the handle */
+ clientIp: string;
+ /** Time when the session that previously opened the handle has last been reconnected. (UTC) */
+ openTime: Date;
+ /** Time handle was last connected to (UTC) */
+ lastReconnectTime?: Date;
+}
+
+/** An enumeration of handles. */
+export interface ListHandlesResponse {
+ handleList?: HandleItem[];
+ continuationToken: string;
+}
+
+/** Contains response data for the listHandles operation. */
+export type FileListHandlesResponse = FileListHandlesHeaders &
+ ListHandlesResponse & {
+ /** The underlying HTTP response. */
+ _response: coreHttp.HttpResponse & {
+ /** The response body as text (string format) */
+ bodyAsText: string;
+
+ /** The response body as parsed JSON or XML */
+ parsedBody: ListHandlesResponse;
+ /** The parsed HTTP response headers. */
+ parsedHeaders: FileListHandlesHeaders;
+ };
+ };
+
+/** Contains response data for the listHandles operation. */
+export type DirectoryListHandlesResponse = DirectoryListHandlesHeaders &
+ ListHandlesResponse & {
+ /** The underlying HTTP response. */
+ _response: coreHttp.HttpResponse & {
+ /** The response body as text (string format) */
+ bodyAsText: string;
+
+ /** The response body as parsed JSON or XML */
+ parsedBody: ListHandlesResponse;
+ /** The parsed HTTP response headers. */
+ parsedHeaders: DirectoryListHandlesHeaders;
+ };
+ };
diff --git a/sdk/storage/storage-file-share/src/utils/constants.ts b/sdk/storage/storage-file-share/src/utils/constants.ts
index c013d315d9d3..554b1e41df78 100644
--- a/sdk/storage/storage-file-share/src/utils/constants.ts
+++ b/sdk/storage/storage-file-share/src/utils/constants.ts
@@ -1,8 +1,8 @@
// Copyright (c) Microsoft Corporation.
// Licensed under the MIT license.
-export const SDK_VERSION: string = "12.13.0";
-export const SERVICE_VERSION: string = "2021-10-04";
+export const SDK_VERSION: string = "12.13.0-beta.1";
+export const SERVICE_VERSION: string = "2021-12-02";
export const FILE_MAX_SIZE_BYTES: number = 4 * 1024 * 1024 * 1024 * 1024; // 4TB
export const FILE_RANGE_MAX_SIZE_BYTES: number = 4 * 1024 * 1024; // 4MB
diff --git a/sdk/storage/storage-file-share/src/utils/utils.common.ts b/sdk/storage/storage-file-share/src/utils/utils.common.ts
index df44148f7bed..299cfdf30926 100644
--- a/sdk/storage/storage-file-share/src/utils/utils.common.ts
+++ b/sdk/storage/storage-file-share/src/utils/utils.common.ts
@@ -3,6 +3,18 @@
import { AbortSignalLike } from "@azure/abort-controller";
import { HttpHeaders, isNode, URLBuilder } from "@azure/core-http";
+import {
+ ListFilesAndDirectoriesSegmentResponse as ListFilesAndDirectoriesSegmentResponseInternal,
+ ListHandlesResponse as ListHandlesResponseInternal,
+ StringEncoded,
+} from "../generated/src/models";
+import {
+ DirectoryItem,
+ FileItem,
+ HandleItem,
+ ListFilesAndDirectoriesSegmentResponse,
+ ListHandlesResponse,
+} from "../generatedModels";
import { HttpAuthorization } from "../models";
import { HeaderConstants, PathStylePorts, URLConstants } from "./constants";
@@ -553,3 +565,69 @@ export function EscapePath(pathName: string): string {
}
return split.join("/");
}
+
+export function StringEncodedToString(name: StringEncoded): string {
+ if (name.encoded) {
+ return decodeURIComponent(name.content!);
+ } else {
+ return name.content!;
+ }
+}
+
+export function ConvertInternalResponseOfListFiles(
+ internalResponse: ListFilesAndDirectoriesSegmentResponseInternal
+): ListFilesAndDirectoriesSegmentResponse {
+ const wrappedResponse = {
+ ...internalResponse,
+ prefix: undefined,
+ directoryPath: StringEncodedToString({
+ encoded: internalResponse.encoded,
+ content: internalResponse.directoryPath,
+ }),
+ segment: {
+ fileItems: internalResponse.segment.fileItems.map((fileItemInternal) => {
+ const fileItem: FileItem = {
+ ...fileItemInternal,
+ name: StringEncodedToString(fileItemInternal.name),
+ };
+ return fileItem;
+ }),
+ directoryItems: internalResponse.segment.directoryItems.map((directoryItemInternal) => {
+ const directoryItem: DirectoryItem = {
+ ...directoryItemInternal,
+ name: StringEncodedToString(directoryItemInternal.name),
+ };
+ return directoryItem;
+ }),
+ },
+ };
+
+ delete wrappedResponse.encoded;
+
+ const listResponse: ListFilesAndDirectoriesSegmentResponse = wrappedResponse as any;
+
+ if (internalResponse.prefix) {
+ listResponse.prefix = StringEncodedToString(internalResponse.prefix);
+ }
+
+ return listResponse;
+}
+
+export function ConvertInternalResponseOfListHandles(
+ internalResponse: ListHandlesResponseInternal
+): ListHandlesResponse {
+ const wrappedResponse: ListHandlesResponse = {
+ ...internalResponse,
+ handleList: internalResponse.handleList
+ ? internalResponse.handleList.map((handleItemInternal) => {
+ const handleItem: HandleItem = {
+ ...handleItemInternal,
+ path: StringEncodedToString(handleItemInternal.path),
+ };
+ return handleItem;
+ })
+ : undefined,
+ };
+
+ return wrappedResponse;
+}
diff --git a/sdk/storage/storage-file-share/swagger/README.md b/sdk/storage/storage-file-share/swagger/README.md
index df179a933d35..a9a3ad982bac 100644
--- a/sdk/storage/storage-file-share/swagger/README.md
+++ b/sdk/storage/storage-file-share/swagger/README.md
@@ -12,7 +12,7 @@ enable-xml: true
generate-metadata: false
license-header: MICROSOFT_MIT_NO_VERSION
output-folder: ../src/generated
-input-file: https://raw.githubusercontent.com/Azure/azure-rest-api-specs/e432d9cc87bfed320d8feead4b448be9481c9181/specification/storage/data-plane/Microsoft.FileStorage/preview/2021-06-08/file.json
+input-file: https://raw.githubusercontent.com/Azure/azure-rest-api-specs/0cd0d5c070e85ea7d5816df056eddadc939b898a/specification/storage/data-plane/Microsoft.FileStorage/preview/2021-12-02/file.json
model-date-time-as-string: true
optional-response-headers: true
v3: true
@@ -855,13 +855,14 @@ directive:
$["modelAsString"] = false;
```
-### Update service version from "2018-06-08" to "2021-10-04"
+### Define ShareAccessTier to enum type
```yaml
directive:
- from: swagger-document
- where: $.parameters.ApiVersionParameter
- transform: $.enum = [ "2021-10-04" ];
+ where: $["definitions"]["StringEncoded"]["properties"]
+ transform: >
+ $["content"]["xml"]["name"] = "_";
```
![Impressions](https://azure-sdk-impressions.azurewebsites.net/api/impressions/azure-sdk-for-js%2Fsdk%2Fstorage%2Fstorage-file-share%2Fswagger%2FREADME.png)
diff --git a/sdk/storage/storage-file-share/test/directoryclient.spec.ts b/sdk/storage/storage-file-share/test/directoryclient.spec.ts
index a6362e33f1b6..a71ad85b5c6e 100644
--- a/sdk/storage/storage-file-share/test/directoryclient.spec.ts
+++ b/sdk/storage/storage-file-share/test/directoryclient.spec.ts
@@ -3,9 +3,9 @@
import { assert } from "chai";
-import { getBSU, recorderEnvSetup } from "./utils";
+import { getBSU, isBrowser, recorderEnvSetup } from "./utils";
import { ShareClient, ShareDirectoryClient, FileSystemAttributes } from "../src";
-import { record, Recorder } from "@azure-tools/test-recorder";
+import { isLiveMode, record, Recorder } from "@azure-tools/test-recorder";
import { DirectoryCreateResponse } from "../src/generated/src/models";
import { truncatedISO8061Date } from "../src/utils/utils.common";
import { SpanGraph, setTracer, getYieldedValue } from "@azure/test-utils";
@@ -397,6 +397,184 @@ describe("DirectoryClient", () => {
}
});
+ it("listFilesAndDirectories - with invalid char", async function (this: Context) {
+ if (isBrowser() && isLiveMode()) {
+ // Skipped for now as the generating new version SAS token is not supported in pipeline yet.
+ this.skip();
+ }
+ const subDirClients = [];
+ const subDirNames = [];
+
+ const dirNameWithInvalidChar = recorder.getUniqueName("dir\uFFFE");
+ const dirWithInvalidChar = shareClient.getDirectoryClient(dirNameWithInvalidChar);
+ await dirWithInvalidChar.create();
+
+ for (let i = 0; i < 3; i++) {
+ const subDirClient = dirWithInvalidChar.getDirectoryClient(
+ recorder.getUniqueName(`dir\uFFFE${i}`)
+ );
+ await subDirClient.create();
+ subDirClients.push(subDirClient);
+ subDirNames.push(subDirClient.name);
+ }
+
+ const subFileClients = [];
+ const subFileNames = [];
+ for (let i = 0; i < 3; i++) {
+ const subFileClient = dirWithInvalidChar.getFileClient(
+ recorder.getUniqueName(`file\uFFFE${i}`)
+ );
+ await subFileClient.create(1024);
+ subFileClients.push(subFileClient);
+ subFileNames.push(subFileClient.name);
+ }
+
+ // List all
+ let result = (
+ await dirWithInvalidChar
+ .listFilesAndDirectories({
+ prefix: "",
+ includeTimestamps: true,
+ includeEtag: true,
+ includeAttributes: true,
+ includePermissionKey: true,
+ includeExtendedInfo: true,
+ })
+ .byPage()
+ .next()
+ ).value;
+
+ assert.ok(result.serviceEndpoint.length > 0);
+ assert.ok(shareClient.url.indexOf(result.shareName));
+ assert.deepStrictEqual(result.continuationToken, "");
+ assert.deepStrictEqual(result.segment.directoryItems.length, subDirClients.length);
+ assert.deepStrictEqual(result.segment.fileItems.length, subFileClients.length);
+ assert.deepStrictEqual(result.directoryPath, dirNameWithInvalidChar);
+
+ let resultDirNames = [];
+ for (const entry of result.segment.directoryItems) {
+ resultDirNames.push(entry.name);
+ assert.ok(entry.fileId);
+ assert.ok(entry.attributes);
+ assert.ok(entry.permissionKey);
+ assert.ok(entry.properties.creationTime);
+ assert.ok(entry.properties.lastAccessTime);
+ assert.ok(entry.properties.changeTime);
+ assert.ok(entry.properties.lastModified);
+ assert.ok(entry.properties.etag);
+ }
+
+ for (const subDirName of subDirNames) {
+ assert.ok(resultDirNames.includes(subDirName));
+ }
+
+ let resultFileNames = [];
+ for (const entry of result.segment.fileItems) {
+ resultFileNames.push(entry.name);
+ assert.ok(entry.fileId);
+ assert.ok(entry.attributes);
+ assert.ok(entry.permissionKey);
+ assert.ok(entry.properties.creationTime);
+ assert.ok(entry.properties.lastAccessTime);
+ assert.ok(entry.properties.changeTime);
+ assert.ok(entry.properties.lastModified);
+ assert.ok(entry.properties.etag);
+ }
+
+ for (const subFileName of subFileNames) {
+ assert.ok(resultFileNames.includes(subFileName));
+ }
+
+ // List with dir prefix
+ result = (
+ await dirWithInvalidChar
+ .listFilesAndDirectories({
+ prefix: "dir\uFFFE",
+ includeTimestamps: true,
+ includeEtag: true,
+ includeAttributes: true,
+ includePermissionKey: true,
+ includeExtendedInfo: true,
+ })
+ .byPage()
+ .next()
+ ).value;
+
+ assert.ok(result.serviceEndpoint.length > 0);
+ assert.ok(shareClient.url.indexOf(result.shareName));
+ assert.deepStrictEqual(result.continuationToken, "");
+ assert.deepStrictEqual(result.segment.directoryItems.length, subDirClients.length);
+ assert.deepStrictEqual(result.segment.fileItems.length, 0);
+ assert.deepStrictEqual(result.prefix, "dir\uFFFE");
+ assert.deepStrictEqual(result.directoryPath, dirNameWithInvalidChar);
+
+ resultDirNames = [];
+ for (const entry of result.segment.directoryItems) {
+ resultDirNames.push(entry.name);
+ assert.ok(entry.fileId);
+ assert.ok(entry.attributes);
+ assert.ok(entry.permissionKey);
+ assert.ok(entry.properties.creationTime);
+ assert.ok(entry.properties.lastAccessTime);
+ assert.ok(entry.properties.changeTime);
+ assert.ok(entry.properties.lastModified);
+ assert.ok(entry.properties.etag);
+ }
+
+ for (const subDirName of subDirNames) {
+ assert.ok(resultDirNames.includes(subDirName));
+ }
+
+ // List with file prefix
+ result = (
+ await dirWithInvalidChar
+ .listFilesAndDirectories({
+ prefix: "file\uFFFE",
+ includeTimestamps: true,
+ includeEtag: true,
+ includeAttributes: true,
+ includePermissionKey: true,
+ includeExtendedInfo: true,
+ })
+ .byPage()
+ .next()
+ ).value;
+
+ assert.ok(result.serviceEndpoint.length > 0);
+ assert.ok(shareClient.url.indexOf(result.shareName));
+ assert.deepStrictEqual(result.continuationToken, "");
+ assert.deepStrictEqual(result.segment.directoryItems.length, 0);
+ assert.deepStrictEqual(result.segment.fileItems.length, subFileClients.length);
+ assert.deepStrictEqual(result.prefix, "file\uFFFE");
+ assert.deepStrictEqual(result.directoryPath, dirNameWithInvalidChar);
+
+ resultFileNames = [];
+ for (const entry of result.segment.fileItems) {
+ resultFileNames.push(entry.name);
+ assert.ok(entry.fileId);
+ assert.ok(entry.attributes);
+ assert.ok(entry.permissionKey);
+ assert.ok(entry.properties.creationTime);
+ assert.ok(entry.properties.lastAccessTime);
+ assert.ok(entry.properties.changeTime);
+ assert.ok(entry.properties.lastModified);
+ assert.ok(entry.properties.etag);
+ }
+
+ for (const subFileName of subFileNames) {
+ assert.ok(resultFileNames.includes(subFileName));
+ }
+
+ for (const subFile of subFileClients) {
+ await subFile.delete();
+ }
+ for (const subDir of subDirClients) {
+ await subDir.delete();
+ }
+
+ dirWithInvalidChar.delete();
+ });
+
it("listFilesAndDirectories under root directory", async () => {
const subDirClients = [];
const rootDirClient = shareClient.getDirectoryClient("");
@@ -873,6 +1051,29 @@ describe("DirectoryClient", () => {
}
});
+ it("listHandles for directory with Invalid Char should work", async function (this: Context) {
+ if (isBrowser() && isLiveMode()) {
+ // Skipped for now as the generating new version SAS token is not supported in pipeline yet.
+ this.skip();
+ }
+
+ const dirNameWithInvalidChar = recorder.getUniqueName("dir\uFFFE");
+ const dirWithInvalidChar = shareClient.getDirectoryClient(dirNameWithInvalidChar);
+ await dirWithInvalidChar.create();
+
+ const result = (await dirWithInvalidChar.listHandles().byPage().next()).value;
+
+ if (result.handleList !== undefined && result.handleList.length > 0) {
+ const handle = result.handleList[0];
+ assert.notDeepEqual(handle.handleId, undefined);
+ assert.notDeepEqual(handle.path, undefined);
+ assert.notDeepEqual(handle.fileId, undefined);
+ assert.notDeepEqual(handle.sessionId, undefined);
+ assert.notDeepEqual(handle.clientIp, undefined);
+ assert.notDeepEqual(handle.openTime, undefined);
+ }
+ });
+
it("forceCloseAllHandles should work", async () => {
// TODO: Open or create a handle; Currently can only be done manually; No REST APIs for creating handles - Has to be tested locally
diff --git a/sdk/storage/storage-file-share/test/fileclient.spec.ts b/sdk/storage/storage-file-share/test/fileclient.spec.ts
index e03210717394..6e8172aa90d7 100644
--- a/sdk/storage/storage-file-share/test/fileclient.spec.ts
+++ b/sdk/storage/storage-file-share/test/fileclient.spec.ts
@@ -16,7 +16,13 @@ import { DirectoryCreateResponse } from "../src/generated/src/models";
import { Pipeline } from "../src/Pipeline";
import { FILE_MAX_SIZE_BYTES } from "../src/utils/constants";
import { truncatedISO8061Date } from "../src/utils/utils.common";
-import { bodyToString, compareBodyWithUint8Array, getBSU, recorderEnvSetup } from "./utils";
+import {
+ bodyToString,
+ compareBodyWithUint8Array,
+ getBSU,
+ isBrowser,
+ recorderEnvSetup,
+} from "./utils";
import { MockPolicyFactory } from "./utils/MockPolicyFactory";
describe("FileClient", () => {
@@ -847,6 +853,29 @@ describe("FileClient", () => {
}
});
+ it("listHandles for file with Invalid Char should work", async function (this: Context) {
+ if (isBrowser() && isLiveMode()) {
+ // Skipped for now as the generating new version SAS token is not supported in pipeline yet.
+ this.skip();
+ }
+ const fileNameWithInvalidChar = recorder.getUniqueName("file\uFFFE");
+ const fileWithInvalidChar = shareClient
+ .getDirectoryClient("")
+ .getFileClient(fileNameWithInvalidChar);
+ await fileWithInvalidChar.create(10);
+
+ const result = (await fileWithInvalidChar.listHandles().byPage().next()).value;
+ if (result.handleList !== undefined && result.handleList.length > 0) {
+ const handle = result.handleList[0];
+ assert.notDeepEqual(handle.handleId, undefined);
+ assert.notDeepEqual(handle.path, undefined);
+ assert.notDeepEqual(handle.fileId, undefined);
+ assert.notDeepEqual(handle.sessionId, undefined);
+ assert.notDeepEqual(handle.clientIp, undefined);
+ assert.notDeepEqual(handle.openTime, undefined);
+ }
+ });
+
it("forceCloseAllHandles should work", async () => {
await fileClient.create(10);