From 8db84e904166012bb215bb8ec01088975490c7c5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Juan=20Pablo=20Villaf=C3=A1=C3=B1ez?= Date: Tue, 5 Nov 2024 10:24:32 +0100 Subject: [PATCH] test: enable skipped validator tests --- .drone.star | 5 +- .../drone/wopiValidatorCustomTestCases.xml | 7981 ----------------- 2 files changed, 2 insertions(+), 7984 deletions(-) delete mode 100644 tests/config/drone/wopiValidatorCustomTestCases.xml diff --git a/.drone.star b/.drone.star index 2764e87072..179e5237e7 100644 --- a/.drone.star +++ b/.drone.star @@ -1038,7 +1038,6 @@ def wopiValidatorTests(ctx, storage, wopiServerType, accounts_hash_difficulty = wopiServer = wopiCollaborationService("fakeoffice") - wopiTestCases = dirs["base"] + "/tests/config/drone/wopiValidatorCustomTestCases.xml" for testgroup in testgroups: validatorTests.append({ "name": "wopiValidatorTests-%s" % testgroup, @@ -1051,7 +1050,7 @@ def wopiValidatorTests(ctx, storage, wopiServerType, accounts_hash_difficulty = "export WOPI_SRC=$(cat wopisrc)", "echo $WOPI_SRC", "cd /app", - "/app/Microsoft.Office.WopiValidator -t $WOPI_TOKEN -w $WOPI_SRC -l $WOPI_TTL --testgroup %s -c %s" % (testgroup, wopiTestCases), + "/app/Microsoft.Office.WopiValidator -t $WOPI_TOKEN -w $WOPI_SRC -l $WOPI_TTL --testgroup %s" % testgroup, ], }) if wopiServerType == "builtin": @@ -1067,7 +1066,7 @@ def wopiValidatorTests(ctx, storage, wopiServerType, accounts_hash_difficulty = "export WOPI_SRC=$(cat wopisrc)", "echo $WOPI_SRC", "cd /app", - "/app/Microsoft.Office.WopiValidator -s -t $WOPI_TOKEN -w $WOPI_SRC -l $WOPI_TTL --testgroup %s -c %s" % (builtinOnlyGroup, wopiTestCases), + "/app/Microsoft.Office.WopiValidator -s -t $WOPI_TOKEN -w $WOPI_SRC -l $WOPI_TTL --testgroup %s" % builtinOnlyGroup, ], }) diff --git a/tests/config/drone/wopiValidatorCustomTestCases.xml b/tests/config/drone/wopiValidatorCustomTestCases.xml deleted file mode 100644 index dd1aafe533..0000000000 --- a/tests/config/drone/wopiValidatorCustomTestCases.xml +++ /dev/null @@ -1,7981 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - The prereq WOPI validation that must pass prior to running the (potentially destructive) test suite. - - - - - - - - - - - - - - - Prereq WOPI Validation test to check if the user has permission to perform Write operation. - - - - - - - - - - - - - - - Prereq WOPI Validation test to check if the user is denied permission to call PutRelativeFile. - - - - - - - - - - - - - - - Prereq WOPI Validation test to check if the user has permission to call PutRelativeFile. - - - - - - - - - - - - - - - Prereq WOPI Validation test to check if the host declares support for Containers operations. - - - - - - - - - - - - - - - Prereq WOPI Validation test to check that the host does NOT support Containers operations. - This can be used in cases where a test group should be skipped if the host DOES support Containers - operations. - - - - - - - - - - - - - - - Prereq WOPI Validation test to check if the host declares support for Ecosystem operations. - - - - - - - - - - - - - - - Prereq WOPI Validation test to check if the host declares support for Lock/Unlock/RefreshLock/UnlockAndRefreshLock - operations. - - - - - - - - - - - - - - - Prereq WOPI Validation test to check if host declares support for PutFile/PutRelativeFile operations. - - - - - - - - - - - - - - - Prereq WOPI Validation test to check if host declares support for GetLock operation. - - - - - - - - - - - - - - - Prereq WOPI Validation test to check if host declares support for extended lock lengths. - - - - - - - - - - - - - - - The prereq BusinessFlowPrereq must pass prior to running the feature validations related to business flows. - - - - - - - - - - - - - - - The host must support /files/DeleteFile. - - - - - - - - - - - - - - - The host uses FileUrl for direct file access. - - - - - - - - - - - - - - - Prereq WOPI Validation test to check if the host sets SupportedShareUrlTypes in CheckFileInfo to any value. - - - - - - - - - - - - - - - Prereq WOPI Validation test to check if the host declares support for the "ReadOnly" Share Url type for the file. - - - - - - - - - - - - - - - Prereq WOPI Validation test to check if the host declares support for the "ReadWrite" Share Url type for the file. - - - - - - - - - - - - - - - Prereq WOPI Validation test to check if the host sets SupportedShareUrlTypes in CheckContainerInfo to any value. - - - - - - - - - - - - - - - - - - - - - Prereq WOPI Validation test to check if the host declares support for the "ReadOnly" Share Url type for the container. - - - - - - - - - - - - - - - - - - - - - Prereq WOPI Validation test to check if the host declares support for the "ReadWrite" Share Url type for the container. - - - - - - - - - - - - - - - - - - - - - Prereq WOPI Validation test to check if host declares support for RenameFile operation. - - - - - - - - - - - - - - - Prereq WOPI Validation test to check if the user has permission to call CreateChildFile operation. - - - - - - - - - - - - - - - - - - - - - The host must support /files/AddActivities. - - - - - - - - - - - - - - - Prereq WOPI Validation test to check if the user has permissions to call RenameContainer. - - - - - - - - - - - - - - - - - - - - The host must support /files/PutUserInfo. - - - - - - - - - - - - - - - The host must support coauth. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - The host must support Incremental File Transfer protocol. - - - - - - - - - - - - - WopiValidatorPrereq - - - - - This tests that hosts' CheckFileInfo responses conform to the JSON schema. - - - - - - - - - - - - - - - - - - - This tests that the Host* URLs provided by the host are not Office Online action URLs. - - - - - - - - - - - - - - - - - - - - - - - - - - Simulates a CheckFileInfo request with invalid access token and expects a 401 or 404 response. - - - - - - - - - - - - - - - - - - - - - WopiValidatorPrereq - - - - - - Standard sequence of requests made by a WOPI client to render a document. - - - - - - - - - - - - - - - - - - - - - - - - - - - GetFile requests on a file that wasn't locked before - necessary for Viewing and Editing. - - - - - - - - - - - WopiValidatorPrereq - FileEditingPrereq - LocksPrereq - - - - - - Tests that the WOPI host is capable of handling WOPI Lock IDs of 256 characters. - - - - - - - - - - - Tests that Office locks, which happen to be JSON-formatted strings today, are handled properly by the host. - - - - - - - - - - - Simulates a successful sequence of lock-related requests: Lock, RefreshLock, UnlockAndRelock, Unlock. - - - - - - - - - - - - Simulates a successful UnlockAndRelock followed by Unlock with old lock. This tests that UnlockAndRelock actually changes the lock string - - - - - - - - - - - - - - - - Two Lock calls in a row with the same Lock ID should work. - - - - - - - - - - - Responses to Unlock requests on an unlocked file should include the X-WOPI-Lock header set to the empty string. - - - - - - - - - - - - - - Simulates a lock mismatch when trying to refresh the lock. - Validates that the current lock ID is returned as response header. - - - - - - - - - - - - - - - Simulates a lock mismatch when trying to unlock the file. - Validates that the current lock ID is returned as response header. - - - - - - - - - - - - - - - Simulates a lock mismatch when trying to refresh the lock. - Validates that the current lock ID is returned as response header. - - - - - - - - - - - - - - - Simulates a lock mismatch when trying to unlock and relock the file. - Validates that the current lock ID is returned as response header. - - - - - - - - - - - - - - - Simulates a lock mismatch when trying to refresh the lock. - Validates that the current lock ID is returned as response header. - - - - - - - - - - - - - - - - Tests Lock operation with an invalid access token and expects a 401 or 404 response. - - - - - - - - - - - - - - - - - - - - Tests Unlock operation with an invalid access token and expects a 401 or 404 response. - - - - - - - - - - - - - - - - - - - - - - - - WopiValidatorPrereq - FileEditingPrereq - LocksPrereq - GetLockPrereq - - - - - - Tests the standard GetLock flow; Lock, GetLock, then Unlock. - - - - - - - - - - - - - - - - - Tests that the lock ID GetLock returns changes after it's changed by UnlockAndRelock. - - - - - - - - - - - - - - - - - - Tests GetLock after a file has been locked and unlocked. - - - - - - - - - - - - - - - - - WopiValidatorPrereq - FileEditingPrereq - LocksPrereq - GetLockPrereq - ExtendedLockLengthPrereq - - - - - - Tests that the WOPI host is capable of handling WOPI Lock IDs of 1024 characters. - - - - - - - - - - - - - - - - - - - - - - - WopiValidatorPrereq - UserCanWritePrereq - FileEditingPrereq - LocksPrereq - - - - - Standard sequence of requests made by an edit-capable WOPI client as part of application boot and successful saves when user interacts with the document. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Simulates an editor boot and save with no changes to a file. - - - - - - - - - - - - - - - - - - - - - - - - - - Simulates creating a new file on the host, which requires PutFile requests to an unlocked 0-byte file to succeed. - - - - - - - - - - - - - - - - - - - - - - - - This tests that PutFile requests fail when executed against files that are not zero bytes. - - - - - - - - - - - - - - - - - - - - - - - Simulates Get and PutFile requests with invalid access token and expects a 401 or 404 response. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - WopiValidatorPrereq - LocksPrereq - - - - - - - /files/GetFile should return the current version of the file - - - - - - - - - - - - - - /files/Lock should return the current version of the file - - - - - - - - - - - - - - - - - /files/Unlock should return the current version of the file - - - - - - - - - - - - - - - - - - /files/PutFile should return the current version of the file - - - - - - - - - - - - - - - - - - - Performs consecutive PutFile operations to verify that the X-WOPI-ItemVersion header value is changed with every PutFile operation. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Performs Lock and Unlock operations after a GetFile operation to verify that the X-WOPI-ItemVersion header value is unchanged. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - WopiValidatorPrereq - SupportsUserInfoPrereq - - - - - - - PutUserInfo call returns 200 and subsequent CheckFileInfo calls return the correct value - - - - PutUserInfoTest - - - - - - - - - - - - - - - - - - - - - WopiValidatorPrereq - FileEditingPrereq - UserCanWriteRelativePrereq - LocksPrereq - DeleteFilePrereq - - - - - Tests the basic PutRelativeFile scenario where a suggested extension is specified. - - - - - - - - - - - - - - - - - - - - - - - - - Tests the basic PutRelativeFile scenario where a suggested name is specified. - - - - - - - - - - - - - - - - - - - - - - - - - Tests the PutRelativeFile scenario where a suggested name is specified but - a file with the target name already exists. Expects the request to succeed with the host - choosing a suitable name. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Tests the PutRelativeFile scenario where a Relative name is specified. Expects the created file to have - the exact name specified. - - - - - - - - - - - - - - - - - - - - - - - - - Tests the PutRelativeFile scenario where a Relative name is specified and OverwriteRelative - is set to true. Since no file with target name exists in this scenario, the header should have - no effect. - - - - - - - - - - - - - - - - - - - - - - - - - Tests the PutRelativeFile scenario where a Relative name is specified and OverwriteRelative - is set to false. Since no file with target name exists in this scenario, the header should have - no effect. - - - - - - - - - - - - - - - - - - - - - - - - - Tests the PutRelativeFile scenario where a Relative name is specified and OverwriteRelative - is not specified. Since a file with target name exists in this scenario, this should return a 409. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Tests the PutRelativeFile scenario where a Relative name is specified and OverwriteRelative - is set to false. Since a file with target name exists in this scenario, this should return a 409. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Tests the PutRelativeFile scenario where a Relative name is specified and OverwriteRelative is set to true. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Tests the PutRelativeFile scenario where both a suggested name and a relative name are specified. - - - - - - - - - - - - - - - - - Tests the PutRelativeFile scenario where a relative name is specified along with OverwriteRelative - set to true, but a file with the same target name already exists and is locked. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Tests that the host returns a UTF-8 encoded version of the FileName after a PutRelativeFile operation. - - - - - - - - - - - - - - - - - - - - - - Tests that the host handles long file names appropriately by either supporting them or returning a 400. - - - - - - - - - - - - - - - - - - - - - - - - - - - - WopiValidatorPrereq - FileEditingPrereq - LocksPrereq - UserCanNotWriteRelativePrereq - - - - - Tests the basic PutRelativeFile scenario where a suggested extension is specified. - - - - - - - - - - - - - - Tests the basic PutRelativeFile scenario where a suggested name is specified. - - - - - - - - - - - - - - Tests the PutRelativeFile scenario where a Relative name is specified. - - - - - - - - - - - - - - Tests the PutRelativeFile scenario where a Relative name is specified and OverwriteRelative is set to true. - - - - - - - - - - - - - - Tests the PutRelativeFile scenario where a Relative name is specified and OverwriteRelative is set to false. - - - - - - - - - - - - - - Tests the PutRelativeFile scenario where both a suggested name and a relative name are specified. - - - - - - - - - - - - - - - - - WopiValidatorPrereq - FileEditingPrereq - LocksPrereq - DeleteFilePrereq - ContainersUnsupportedPrereq - RenameFilePrereq - UserCanWriteRelativePrereq - - - - - Perform a PutRelativeFile operation, then rename and delete it. The rename operation should succeed. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Perform a PutRelativeFile operation, then rename it with a file name containing a special character and delete it. - The rename operation should succeed and the server should return the name as a UTF-8 encoded string. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Perform a PutRelativeFile operation, then lock it and try to rename it with the correct lock ID. The rename operation should succeed. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Perform a PutRelativeFile operation, then lock it and try to rename it with an incorrect lock ID. - The rename operation should fail with a Conflict - 409 status code. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Perform a PutRelativeFile operation, then delete it and try to rename it. The rename operation should fail with a 404 status code. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Perform a PutRelativeFile operation, then rename and delete it. The rename operation should not change the file extension of the file. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - WopiValidatorPrereq - FileEditingPrereq - LocksPrereq - ContainersPrereq - DeleteFilePrereq - RenameFilePrereq - UserCanCreateChildFilePrereq - - - - - Create a file, then rename and delete it. The rename operation should succeed. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Create a file, then rename it with a file name containing a special character and delete it. - The rename operation should succeed and the server should return the name as a UTF-8 encoded string. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Create a file, then lock it and try to rename it with the correct lock ID. The rename operation should succeed. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Create a file, then lock it and try to rename it with an incorrect lock ID. - The rename operation should fail with a Conflict - 409 status code. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Create a file, then delete it and try to rename it. The rename operation should fail with a 404 status code. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Create a file, then rename and delete it. The rename operation should not change the file extension of the file. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - WopiValidatorPrereq - ContainersPrereq - EcosystemPrereq - - - - - - Tests that GetEcosystem returns a valid response. - - - - - - - - - - - - - - - - Tests that CheckEcosystem returns a valid response. - - - - - - - - - - - - - - - - - - - - - - - - Tests that GetRootContainer returns a valid response. - - - - - - - - - - - - - - - - - - - - - Tests that GetRootContainer denies requests with invalid access tokens. - - - - - - - - - - - - - - - - - - - - - - - - - - - WopiValidatorPrereq - UserCanWritePrereq - ContainersPrereq - - - - - - Tests that CheckContainerInfo returns a valid response. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Tests creating a child container and deleting it. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Tests that CreateChildContainer handles 'suggested mode' properly. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Tests that CreateChildContainer handles 'specific mode' properly. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Tests that CreateChildContainer handles conflicting container names when in 'specific mode' properly. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - /files/EnumerateAncestors then /containers/GetEcosystem on each element - - - - - - - - - - - - - - - - - - - - Verify that some CheckContainerInfo user properties match between a child container and its parent. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - WopiValidatorPrereq - UserCanWritePrereq - ContainersPrereq - UserCanRenameContainerPrereq - - - - - - Tests that RenameContainer is handled properly. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Tests the Containers.RenameChildContainer scenario where a Relative name is specified. Expect the host to rename - the container with the exact name as specified. Also ensure that the host returns a UTF-8 encoded version of the ContainerName. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - WopiValidatorPrereq - ContainersPrereq - - - - - just EnumerateAncestors - - - - - - - - - - - - - - - /files/EnumerateAncestors then /containers/EnumerateChildren on the parent folder - - - - - - - - - - - - - - - - - - - - - /files/EnumerateAncestors then /containers/EnumerateChildren on the root folder - - - - - - - - - - - - - - /files/EnumerateAncestors then /containers/EnumerateChildren on the parent folder with a file extension filter - - - - - - - - - - - - - - - - - - - - - /files/EnumerateAncestors then /containers/EnumerateChildren on the parent folder with multiple file extensions filtered - - - - - - - - - - - - - - - - - - - - - - /files/EnumerateAncestors then /containers/EnumerateAncestors on a container which is a root container - - - - - - - - - - - - - - - - - /files/EnumerateAncestors then /containers/EnumerateAncestors on a container which is not a root container - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - WopiValidatorPrereq - UserCanWritePrereq - ContainersPrereq - DeleteFilePrereq - - - - - - - /files/EnumerateAncestors then go to a container that has UserCanCreateChildFile=true. - create a file. delete it. - - - - - - - - - - - - - - - - - - - - - - - - - - - Tests the Containers.CreateChildFile scenario where a suggested name is specified. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Tests the Containers.CreateChildFile scenario where a suggested name is specified but - a file with the target name already exists. Expect the request to succeed with the host - choosing a suitable name. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Tests the Containers.CreateChildFile scenario where a Relative name is specified. Expect the host to create - a new file with the exact name as specified. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Tests the Containers.CreateChildFile scenario where a Relative name is specified and OverwriteRelative - is set to true. Since no file with target name exists in this scenario, the header should have - no effect. Expect the host to create a new file with the exact name as specified. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Tests the Containers.CreateChildFile scenario where a Relative name is specified and OverwriteRelative - is set to false. Since no file with target name exists in this scenario, the header should have - no effect. Expect the host to create a new file with the exact name as specified. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Tests the Containers.CreateChildFile scenario where a Relative name is specified and OverwriteRelative - is not specified. Since a file with target name exists in this scenario, expect the host to - return 409 status code as conflict. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Tests the Containers.CreateChildFile scenario where a Relative name is specified and OverwriteRelative - is set to false. Since a file with target name exists in this scenario, expect the host to - return 409 status code as conflict. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Tests the Containers.CreateChildFile scenario where a Relative name is specified and OverwriteRelative - is set to true. Since a file with target name exists in this scenario, expect the host to - succeed by choosing a suitable name. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Tests the Containers.CreateChildFile scenario where both a suggested name and a relative name are specified. - Expect the host to fail the request as bad request. - - - - - - - - - - - - - - - - - - - - - - - - - - Tests the Containers.CreateChildFile scenario where a relative name is specified along with OverwriteRelative - set to true, but a file with the same target name already exists and is locked. Expect the host - to fail the request with a 409 conflict code. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Tests the Containers.CreateChildFile scenario where a Relative name is specified. Expect the host to create - a new file with the exact name as specified. Also ensure that the host returns a UTF-8 encoded version of the FileName. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Tests the Containers.CreateChildFile scenario where a file name is longer than 512 characters, then the host should return a 400 or 200. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Verify that some CheckContainerInfo and CheckFileInfo user properties match between a child file and its parent container. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - WopiValidatorPrereq - UserCanWritePrereq - FileEditingPrereq - LocksPrereq - FileUrlUsagePrereq - - - - - Tests that the FileUrl returns updated content after a PutFile request, since FileUrl is intended to be a drop in replacement for GetFile. - - - - - - - - - - - - - - - - - - - - - - - - - - WopiValidatorPrereq - FileUrlUsagePrereq - - - - - Use FileUrl, if provided, to directly retrieve the contents of a file instead of using GetFile. - - - - - - - - - - - - - - - - - - - - WopiValidatorPrereq - ShareUrlTypeReadOnlyForFilePrereq - - - - - Tests the GetShareUrl operation for a file where the requested share url type is "ReadOnly". - - - - - - - - - - - - - - - - - - WopiValidatorPrereq - ShareUrlTypeReadWriteForFilePrereq - - - - - Tests the GetShareUrl operation for a file where the requested share url type is "ReadWrite". - - - - - - - - - - - - - - - - - - WopiValidatorPrereq - SupportedShareUrlTypesForFilePrereq - - - - - Tests the GetShareUrl operation for a file where the requested share url type is unknown. - - - - - - - - - - - - - - - - WopiValidatorPrereq - ContainersPrereq - ShareUrlTypeReadOnlyForContainerPrereq - - - - - Tests the GetShareUrl operation for a container where the requested share url type is "ReadOnly". - - - - - - - - - - - - - - - - - - - - - - - - WopiValidatorPrereq - ContainersPrereq - ShareUrlTypeReadWriteForContainerPrereq - - - - - Tests the GetShareUrl operation for a container where the requested share url type is "ReadWrite". - - - - - - - - - - - - - - - - - - - - - - - - WopiValidatorPrereq - ContainersPrereq - SupportedShareUrlTypesForContainerPrereq - - - - - Tests the GetShareUrl operation for a container where the requested share url type is unknown. - - - - - - - - - - - - - - - - - - - - - - - WopiValidatorPrereq - FileEditingPrereq - AddActivitiesPrereq - - - - - one comment, minimal properties - - - - - - - - - - - - - - - - - - - - - - - - one comment with all data properties set - - - - - - - - - - - - - - - - - - - - - - - - one comment with all-caps ID GUID - - - - - - - - - - - - - - - - - - - - - - - - one comment with max-length ContentID - - - - - - - - - - - - - - - - - - - - - - - - one comment with max-length NavigationId - - - - - - - - - - - - - - - - - - - - - - - - one comment with ContentAction=update - - - - - - - - - - - - - - - - - - - - - - - - one comment with ContentAction=delete - - - - - - - - - - - - - - - - - - - - - - - - one comment with bogus additional toplevel property - - - - - - - - - - - - - - - - - - - - - - - - one comment with bogus additional data property - - - - - - - - - - - - - - - - - - - - - - - - one comment, one person - - - - - - - - - - - - - - - - - - - - - - - - one comment, three people - - - - - - - - - - - - - - - - - - - - - - - - one comment, one person with bogus additional property - - - - - - - - - - - - - - - - - - - - - - - - one comment, one person with non-wopi provider and ID - - - - - - - - - - - - - - - - - - - - - - - - one activity with bogus type - - - - - - - - - - - - - - - - - - - one activity with bogus type and no data - - - - - - - - - - - - - - - - - - - - - - - - one comment and one activity with bogus type - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - three comments - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - WopiValidatorPrereq - - - - - Tests that hosts accept requests where the X-WOPI-Proof value is correctly signed with the current proof key, - and the X-WOPI-ProofOld value is signed with the old proof key. - - - - - - - - - Tests that hosts accept requests where the X-WOPI-Proof value is correctly signed with the current proof key, - but the X-WOPI-ProofOld value is invalid. This scenario is unusual and should not happen in a production - environment, but since the X-WOPI-Proof value is signed with the current public key, the request should be - accepted. - - - - - - - - - - - - - Tests that hosts accept requests where the X-WOPI-Proof value is invalid but the X-WOPI-ProofOld value is - signed with current public key. This can happen when a WOPI client such as Office Online has rotated proof keys - but the host hasn't re-run WOPI discovery yet. - - - - - - - - - - - - - Tests that hosts accept requests where the X-WOPI-ProofOld value is invalid but the X-WOPI-Proof value is - signed with old public key. This can happen when a WOPI client has rotated proof keys, the host has re-run - WOPI discovery and has the updated keys, but the datacenter machine making the WOPI request does not yet have - the updated keys. - - - - - - - - - - - - - Tests that hosts reject requests where the X-WOPI-Proof value is invalid, and the X-WOPI-ProofOld value - is signed with the old public key. This scenario is unusual and should not happen in a production - environment; such requests should be rejected. - - - - - - - - - - - - - - - - Tests that hosts reject requests with invalid current and old proof keys. - - - - - - - - - - - - - - - - Tests that hosts reject requests with an X-WOPI-Timestamp value that represents a time more than 20 minutes old. - - - - - - - - - - - - - - - - - - - WopiValidatorPrereq - SupportsCoauthPrereq - - - - - Tests that a single coauth lock is requested and is reflected in the coauth table. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Initiates GetCoauthTable request with the same CoathTableVersion as host, host returns no response body. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Tests that a coauth lock's expiration timeout is refreshed when requested with the same coauth lock id as an already existing coauth lock. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Tests that a coauth exclusive lock request replaces the lock type of a coauth lock of the same id. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Tests that an unlock coauth lock request unlocks the coauth lock from the coauth table. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Tests that multiple coauth locks are requested and are reflected in the coauth table. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Tests that multiple coauth locks are requested, then GetCoauthTable with different CoauthTableVersion from host, CoauthTable will be returned. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Tests that multiple coauth locks are requested, then GetCoauthTable with same CoauthTableVersion as host, no response body returned. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Tests that multiple coauth locks and coauth unlocks are requested and are reflected in the coauth table. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Tests that multiple coauth locks of different types can exist in the coauth table. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Tests that multiple coauth locks of different types exist on the coauth table, then GetCoauthTable requested with same CoauthTableVersion as host, no response body returned. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Tests that the coauth table request will return an empty array if there aren't any coauth locks. - - - - - - - - - - - - - - - - - - Tests when a coauth lock is requested with the same coauth lock id as an existing coauth exclusive lock. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Tests when a coauth lock is requested with a different coauth lock id when a coauth exclusive lock already exists. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Tests that the response of the coauth lock metadata is set from the passed metadata header. - - - - - - - - - - - - - - - - - - - - - - - - - Tests that the response of the coauth lock metadata is empty if the metadata header is empty. - - - - - - - - - - - - - - - - - - - - - - - - - Tests that the response of the coauth lock metadata is empty if the metadata header is omitted. - - - - - - - - - - - - - - - - - - - - - - - - - Tests that a refresh coauth lock request with new metadata passed changes the metadata for the coauth lock in the coauth table. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Tests that a refresh coauth lock request without metadata passed has no effect on the coauth lock metadata. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Tests the failing of GetCoauthLock requests when missing the required parameter of CoauthLockType. - - - - - - - - - - - - Tests the failing of GetCoauthLock requests when missing the required parameter of CoauthLockId. - - - - - - - - - - - - Tests the failing of GetCoauthLock requests when missing the required parameter of CoauthLockExpirationTimeout. - - - - - - - - - - - - Tests the failing of UnlockCoauth requests when missing the required parameter of CoauthLockId. - - - - - - - - - - - - Tests the failing of RefreshCoauthLock requests when missing the required parameter of CoauthLockId. - - - - - - - - - - - - Tests the failing of RefreshCoauthLock requests when missing the required parameter of CoauthLockExpirationTimeout. - - - - - - - - - - - - Tests when the coauth lock type is set to "None" instead of "Coauth" or "CoauthExclusive." - - - - - - - - - - - - Tests when the coauth lock type is empty. - - - - - - - - - - - - Tests that the CoauthLockId parameter is outside size limitations of 1024 ASCII characters for GetCoauthLock. - - - - - - - - - - - - Tests that the CoauthLockId parameter is outside size limitations of 1024 ASCII characters for UnlockCoauthLock. - - - - - - - - - - - - Tests that the CoauthLockId parameter is within size limitations of 1024 ASCII characters for RefreshCoauthLock. - - - - - - - - - - - - Tests invalid timeout values for CoauthLockExpirationTimeout for GetCoauthLock. - - - - - - - - - - - - - - - - - Tests invalid timeout values for CoauthLockExpirationTimeout for RefreshCoauthLock. - - - - - - - - - - - - - - - - - - - - - - - Tests when a coauth exclusive lock is requested when a coauth exclusive lock already exists. - - - - - - - - - - - - - - - - - - - - - - - - - Tests when a coauth lock type switch from coauth to coauth exclusive lock is requested on an existing coauth exclusive lock. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Tests UnlockCoauthLock conflict when requested with no existing locks. - - - - - - - - - - - - Tests RefreshCoauthLock conflict when requested with no existing locks. - - - - - - - - - - - - Tests that the CoauthLockMetadata parameter is within size limits of 4KB for GetCoauthLock. - - - - - - - - - - - - - - - - - - - - - Tests that the CoauthLockMetadata parameter is within size limits of 4KB for RefreshCoauthLock. - - - - - - - - - - - - - - - - - - - - - - - - - - Tests that ConflictingLockUsername is returned when a Coauth lock is requested after an existing Wopi lock with header LockUserVisible set true - - - - - - - - - - - - - - - - - - - - - Tests that a coauth lock's metadata is handled properly when coauthlockmetadata is sent as part of body. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Tests that a coauth lock's metadata is handled properly when coauthlockmetadata is sent as part of body. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Tests that a coauth lock's metadata is handled properly when coauthlockmetadata is sent as part of body and header. Body value is given preference over header - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Tests that a coauth lock's metadata is handled properly when coauthlockmetadata is sent as part of body and header. Body value is given preference over header. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Tests that a coauth lock's metadata is handled properly when coauthlockmetadata is sent as part of body and header. Body value is given preference over header. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Tests that a coauth lock's metadata is handled properly when coauthlockmetadata is sent as part of body and header. Body value is given preference over header and set to empty. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Tests that a coauth lock's metadata is handled properly when coauthlockmetadata is sent as part of body. Body value is set to empty. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Tests that a coauth lock's metadata is handled properly when coauthlockmetadata is sent as part of body. Body value is set to empty. - If present and empty or null, the CoauthLockMetadata value remains unchanged. If present and is set to a non-empty string, CoauthLockMetadata is overwritten with that value. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - WopiValidatorPrereq - SupportsCoauthPrereq - SupportsChunkedFileTransferPrereq - - - - - Host file is not locked and size is larger than 0. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - PutChunkedFile using a mismatched coauth lock. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - PutChunkedFile with WOPI Lock and Coauth Lock set at the same time. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Host file is locked by WOPI Lock but client "X-WOPI-Lock" value does not match the lock currently on the file. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - File on host is locked by a WOPI Lock and the client provides a Coauth Lock. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - File on host is locked by CoauthExclusive lock and client present a CoauthLock. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - File on host is locked by CoauthExclusiveLock and client presents a Wopi lock. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - File on host is locked by CoauthLock, and client presents Wopi Lock. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Sequence number provided by the WOPI client does not match the latest value on the host. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - WopiValidatorPrereq - SupportsCoauthPrereq - SupportsChunkedFileTransferPrereq - - - - - Initiate a single put chunked file request with Coauth lock. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Initiate a single put chunked file request with Coauth Exclusive lock. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Initiate a single put chunked file request with WOPI lock. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Multiple put chunked file requests. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Host file is not locked and size is zero. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Client download streams that are not existed on host should return empty stream. - - - - - - - - - - - - - - - - - - - - - - - Client upload subset of streams of a document, unmentioned streams should remain as they are. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - PutChunkedFile request first followed with PutFile request. ContentProperties with Retention = DeleteOnContentChange should be cleaned up. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Client sends GetChunkedFile request with ChunksToReturn set to LastZipChunk. If the file is not a zip archive, this would behave the same as None. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - WopiValidatorPrereq - SupportsCoauthPrereq - SupportsChunkedFileTransferPrereq - - - - - Initiate a single Zip format upload request with Coauth lock, followed by Zip format download request. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Initiate a single Zip format upload request with Coauth lock, followed by ChunksToReturn.None Zip format download request. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Initiate a single Zip format upload request with Coauth lock, followed by ChunksToReturn.LastZipChunk Zip format download request. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Initiate a single FullFile format upload request with Coauth lock, followed by Zip format download, but host returns FullFile format because host content not eligible for Zip. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Initiate a single Zip format upload request with Coauth lock, followed by FullFile download request but host returns Zip Chunking format because host content eligible for Zip. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Initiate a single Zip format upload request with Coauth Exclusive lock, followed by Zip format download. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Initiate a single Zip format upload request with WOPI lock, followed by Zip format download. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Multiple Zip format upload requests, followed by Zip format full download. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Multiple Zip format upload requests, followed by Zip format delta download. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Multiple Zip format upload requests, followed by Zip format delta download. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Host file is not locked and size is zero. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Client download streams that are not existed on host should return empty stream. - - - - - - - - - - - - - - - - - - - - - - - Client upload subset of streams of a document, unmentioned streams should remain as they are. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - PutChunkedFile request first followed with PutFile request. ContentProperties with Retention = DeleteOnContentChange should be cleaned up. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - WopiValidatorPrereq - FileEditingPrereq - LocksPrereq - RenameFilePrereq - WopiValidatorPrereq - SupportsCoauthPrereq - - - - - Client sends RenameFile request with same CoauthLock on host. Request should succeed with file content unchanged. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Client sends RenameFile request with CoauthLock and host file is unlocked. Request should succeed. - - - - - - - - - - - - - - - - - - - - - - Client sends RenameFile request with neither Wopi nor CoauthLock being set and host file is unlocked. Request should succeed. - - - - - - - - - - - - - - - - - - - - - - Client sends RenameFile request with neither Wopi nor CoauthLock being set. Host file is locked by CoauthLock. Request should fail with 409 Conflict. - - - - - - - - - - - - - - - - - - - - - - - - Client sends RenameFile request with Wopi lock. Host file is locked by CoauthLock. Request should fail with 409 Conflict. - - - - - - - - - - - - - - - - - - - - - - - - Client sends RenameFile request with CoauthLock. Host file is locked by CoauthLock but presented lock id does not exist in coauth table. Request should fail with 409 Conflict. - - - - - - - - - - - - - - - - - - - - - - - - Client sends RenameFile request with CoauthLock. Host file is locked by WopiLock. Request should fail with 409 Conflict. - - - - - - - - - - - - - - - - - - - - - - - - Client sends RenameFile request with WopiLock and CoauthLock being set together. Request should fail with 400 BadRequest. - - - - - - - - - - - - - - - WopiValidatorPrereq - SupportsCoauthPrereq - - - - - Tests that the coauth table request will return only coauth locks that have not expired. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Tests that a refresh coauth lock request refreshes the coauth lock expiration timeout. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Tests that a coauth lock timeout expiration is reflected in the coauth table. - - - - - - - - - - - - - - - - - - - - - - - - - Tests UnlockCoauthLock on an expired coauth lock. - - - - - - - - - - - - - - - - - - - Tests RefreshCoauthLock on an expired lock. - - - - - - - - - - - - - - - - - - -