cs3org / wopiserver

A vendor-neutral application gateway compatible with the WOPI specifications.
Apache License 2.0
52 stars 27 forks source link

writefile in cs3 interface does not properly support locking #137

Closed glpatcern closed 6 months ago

glpatcern commented 9 months ago

As we're at last bringing our EOS driver for Reva up to speed also in terms of locking, I see we have two issues related to handling write operations in the context of locks:

@wkloucek for the latter point, how is Reva edge behaving? Is that case supported at all?

wkloucek commented 9 months ago

The error handling is incorrect: in case of a PUT with a mismatched lock, we expect the InitiateFileUpload request to fail with a CODE_FAILED_PRECONDITION error, and we should not look into any custom error message.

@DeepDiver1975 could you look into that please?

DeepDiver1975 commented 9 months ago

wopi validator should catch this scenario - right?

glpatcern commented 9 months ago

wopi validator should catch this scenario - right?

Good point, @wkloucek did you ever try to run the wopi validator against Reva (edge of course)? I regularly run it with the xroot interface, which does NOT suffer from this bug.

DeepDiver1975 commented 9 months ago

We do run the wopi validator in scope of ocis with the wopi server.

I will double check if tests.do cover this case.

wkloucek commented 7 months ago

@DeepDiver1975 are you working on that? @jvillafanez can you maybe give it a try if @DeepDiver1975 can't proceed on it?

jvillafanez commented 7 months ago

I've tried to run the wopi validator using the https://hub.docker.com/r/deepdiver/wopi-validator-core-docker image, but it isn't working for me. Not sure if the instances need to be public

root@4dc86b51c8d4:/wopi-validator-core/src/WopiValidator/bin/Release/netcoreapp2.0# dotnet Microsoft.Office.WopiValidator.dll -w 'http://wopiserver/wopi/files/1bbcfa84-759d-4a3e-93f7-4b93a61e628c!ODcyMWZkMTAtMzg1Yy00MTJjLWE0MjUtYWZhYmUxZDViNTI4' -t "`cat /opt/wopitoken/token.txt`" -l 0 -c TestCases.xml -e OfficeOnline

Test group: BaseWopiViewing
System.NullReferenceException: Object reference not set to an instance of an object.
   at Microsoft.Office.WopiValidator.Core.Requests.RequestBase.GetResponseData(HttpWebResponse response, Boolean isTextResponseExpected, TimeSpan elapsed) in /wopi-validator-core/src/WopiValidator.Core/Requests/RequestBase.cs:line 164
   at Microsoft.Office.WopiValidator.Core.Requests.RequestBase.ExecuteRequest(RequestExecutionData executionData, String userAgent, Boolean hasToBeSuccessful) in /wopi-validator-core/src/WopiValidator.Core/Requests/RequestBase.cs:line 116
   at Microsoft.Office.WopiValidator.Core.Requests.WopiRequest.Execute(String endpointAddress, String accessToken, Int64 accessTokenTtl, ITestCase testCase, Dictionary`2 savedState, IResourceManager resourceManager, String userAgent, RSACryptoServiceProvider proofKeyProviderNew, RSACryptoServiceProvider proofKeyProviderOld) in /wopi-validator-core/src/WopiValidator.Core/Requests/WopiRequest.cs:line 107
   at Microsoft.Office.WopiValidator.Core.TestCaseExecutor.ExecuteTestCase(ITestCase testCase) in /wopi-validator-core/src/WopiValidator.Core/TestCaseExecutor.cs:line 81
   at System.Linq.Enumerable.SelectListIterator`2.MoveNext()
   at System.Linq.Enumerable.TryGetFirst[TSource](IEnumerable`1 source, Func`2 predicate, Boolean& found)
   at Microsoft.Office.WopiValidator.Core.TestCaseExecutor.Execute() in /wopi-validator-core/src/WopiValidator.Core/TestCaseExecutor.cs:line 54
   at System.Linq.Utilities.<>c__DisplayClass2_0`3.<CombineSelectors>b__0(TSource x)
   at System.Linq.Enumerable.SelectIListIterator`2.MoveNext()
   at Microsoft.Office.WopiValidator.Program.Execute(Options options) in /wopi-validator-core/src/WopiValidator/Program.cs:line 98
   at CommandLine.ParserResultExtensions.WithParsed[T](ParserResult`1 result, Action`1 action)
   at Microsoft.Office.WopiValidator.Program.Main(String[] args) in /wopi-validator-core/src/WopiValidator/Program.cs:line 36

The wopiserver is running the "cs3org/wopiserver:v10.3.1" docker image. The ocis build should be close to yesterday master (commit https://github.com/owncloud/ocis/tree/6a4832a6f8ec9b76b2d74a5dc9f023f58023b259) although I have some changes on top. The ocis build apparently works fine with the wopi server above plus onlyoffice "onlyoffice/documentserver:7.3.3", although I can't confirm the behavior of this ticket.

If someone has steps to reproduce, I can try to check the issue following the steps and try to work from there.

wkloucek commented 7 months ago

I've tried to run the wopi validator using the https://hub.docker.com/r/deepdiver/wopi-validator-core-docker image

I don't remember the exact version differences but you probably should prefer https://github.com/owncloud-ci/wopi-validator over the image you mentioned

In https://github.com/owncloud/ocis/blob/c7b50b45407404bfaa62ac190165f1ae46f2319e/.drone.star#L881-L986 you can find the CI way to run the wopi validator and what we currently expect to pass. BaseWopiViewing should be on it. Maybe you can verify your setup by running a version covered by the CI, eg. https://github.com/owncloud/ocis/blob/c7b50b45407404bfaa62ac190165f1ae46f2319e/.drone.star#L944

micbar commented 7 months ago

@glpatcern @DeepDiver1975 @jvillafanez @butonic

the wopi docs of ms it clearly states that the locks should not have a user context. The locks are bound to the application. We see a real issue when a user share is revoked during an editing session. The wopiserver should be able to handle that.

Regarding the lock checking:

it should be done during initiateFileUpload and on any later step too.

glpatcern commented 7 months ago

@micbar I understand your comments belong to other issues? I'll move them there

jvillafanez commented 7 months ago

This is the full run for the wopi validator.

Note that I have to hack things a bit in order to work with the ".wopitest" file that the validator requires, so it isn't a clean install.

/app # /app/Microsoft.Office.WopiValidator -t "$WOPI_TOKEN" -w $WOPI_SRC -l 9999
9999 -s

Test group: CheckFileInfoSchema
  Fail: FullCheckFileInfoSchema
    CheckFileInfo, response code: 200 OK
      String Expected: BreadcrumbBrandName, BreadcrumbBrandUrl
    Re-run command: .\wopivalidator.exe -n FullCheckFileInfoSchema -w http://wopiserver:8880/wopi/files/cdb05bf7-377c-4c82-9282-0f144e278cad!M2VmNmY2YjUtYWFhNi00NzU4LTgzZmYtOTQzN2NlNjVhZWI2 -t eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyaWQiOiJleUpoYkdjaU9pSklVekkxTmlJc0luUjVjQ0k2SWtwWFZDSjkuZXlKaGRXUWlPaUp5WlhaaElpd2laWGh3SWpveE56QTRNRGMxTlRBMUxDSnBZWFFpT2pFM01EYzVPRGt4TURVc0ltbHpjeUk2SW1oMGRIQnpPaTh2YTJWNVkyeHZZV3N1YW5BdWMyOXNhV1JuWldGeUxuQnlkaTl5WldGc2JYTXZiME5KVXlJc0luVnpaWElpT25zaWFXUWlPbnNpYVdSd0lqb2lhSFIwY0hNNkx5OXJaWGxqYkc5aGF5NXFjQzV6YjJ4cFpHZGxZWEl1Y0hKMkwzSmxZV3h0Y3k5dlEwbFRJaXdpYjNCaGNYVmxYMmxrSWpvaVpUQTFPVGc0T1RFdE1EQTNOUzAwWm1WbUxUZzFPVE10WldJMU1EZ3hZMkppWVdVMklpd2lkSGx3WlNJNk1YMHNJblZ6WlhKdVlXMWxJam9pWVdSdGFXNGlMQ0p0WVdsc0lqb2lZV1J0YVc1QVpYaGhiWEJzWlM1dmNtY2lMQ0prYVhOd2JHRjVYMjVoYldVaU9pSkJaRzFwYmlCQlpHMXBiaUlzSW5WcFpGOXVkVzFpWlhJaU9qazVMQ0puYVdSZmJuVnRZbVZ5SWpvNU9YMHNJbk5qYjNCbElqcDdJblZ6WlhJaU9uc2ljbVZ6YjNWeVkyVWlPbnNpWkdWamIyUmxjaUk2SW1wemIyNGlMQ0oyWVd4MVpTSTZJbVY1U25kWldGSnZTV3B2YVV4NVNqa2lmU3dpY205c1pTSTZNWDE5ZlEuLVp5cFYtZF81UHVhQ2tKYjVEa2VEWjRZczF3LU1WTEEzNldTdi0wcmlURSIsIndvcGl1c2VyIjoiZTA1OTg4OTEtMDA3NS00ZmVmLTg1OTMtZWI1MDgxY2JiYWU2IWUwNTk4ODkxLTAwNzUtNGZlZi04NTkzLWViNTA4MWNiYmFlNkBodHRwczovL2tleWNsb2FrLmpwLnNvbGlkZ2Vhci5wcnYvcmVhbG1zL29DSVMiLCJ1c2VydHlwZSI6InJlZ3VsYXIiLCJmaWxlbmFtZSI6ImUwNTk4ODkxLTAwNzUtNGZlZi04NTkzLWViNTA4MWNiYmFlNi9OZXcgZmlsZS53b3BpdGVzdCIsImZpbGVpZCI6IjNlZjZmNmI1LWFhYTYtNDc1OC04M2ZmLTk0MzdjZTY1YWViNiIsInVzZXJuYW1lIjoiQWRtaW4gQWRtaW4iLCJ2aWV3bW9kZSI6IlZJRVdfTU9ERV9SRUFEX1dSSVRFIiwiZm9sZGVydXJsIjoiaHR0cHM6Ly9vY2lzLmpwLnNvbGlkZ2Vhci5wcnYvZi9jZGIwNWJmNy0zNzdjLTRjODItOTI4Mi0wZjE0NGUyNzhjYWQkZTA1OTg4OTEtMDA3NS00ZmVmLTg1OTMtZWI1MDgxY2JiYWU2ITNlZjZmNmI1LWFhYTYtNDc1OC04M2ZmLTk0MzdjZTY1YWViNiIsImVuZHBvaW50IjoiY2RiMDViZjctMzc3Yy00YzgyLTkyODItMGYxNDRlMjc4Y2FkJGUwNTk4ODkxLTAwNzUtNGZlZi04NTkzLWViNTA4MWNiYmFlNiIsImFwcG5hbWUiOiJPbmx5T2ZmaWNlIiwiYXBwZWRpdHVybCI6Imh0dHBzOi8vb25seW9mZmljZS5qcC5zb2xpZGdlYXIucHJ2L2hvc3Rpbmcvd29waS93b3JkL2VkaXQiLCJhcHB2aWV3dXJsIjoiaHR0cHM6Ly9vbmx5b2ZmaWNlLmpwLnNvbGlkZ2Vhci5wcnYvaG9zdGluZy93b3BpL3dvcmQvdmlldyIsInRyYWNlIjoiTi9BIiwiZXhwIjoxNzA4MDc1NTA1LCJpc3MiOiJjczNvcmc6d29waXNlcnZlcjoifQ.OAWpxelDmevHT36ZHnlIhqZMXiqtEF3TiVxeKVvH83U -l 99999999

  Pass: HostUrls
  Pass: CheckFileWithInvalidAccessToken

Test group: BaseWopiViewing
  Pass: ViewOnlySupport
  Pass: GetUnlockedFile

Test group: Locks
  Pass: LockLengthValidation
  Pass: LockFormatValidation
  Pass: SuccessfulLockSequence
  Pass: LockMismatchAfterUnlockAndRelockRequest
  Pass: DoubleLockSequence
  Pass: UnlockUnlockedFile
  Pass: LockMismatchOnLockRequest
  Pass: LockMismatchOnUnlockRequest
  Pass: LockMismatchOnRefreshLockRequest
  Pass: LockMismatchOnUnlockAndRelockRequest
  Pass: LockMismatchOnPutFileRequest
  Pass: LockFileWithInvalidAccessToken
  Pass: UnlockFileWithInvalidAccessToken

Test group: GetLock
  Pass: files.GetLock
  Pass: files.GetLockAfterChange
  Pass: files.GetLockOnUnlockedFile

Test group: ExtendedLockLength
  Pass: files.ExtendedLockLengthValidation

Test group: EditFlows
  Pass: BasicEdit
  Pass: EditNoChange
  Pass: PutUnlockedFile
  Pass: PutUnlockedFileNotZeroBytes
  Pass: GetPutFileWithInvalidAccessToken

Test group: FileVersion
  Pass: files.GetFileReturnsVersion
  Pass: files.LockReturnsVersion
  Pass: files.UnlockReturnsVersion
  Pass: files.PutFileReturnsVersion
  Pass: files.PutFileReturnsDifferentVersion
  Pass: files.LockAndUnlockAfterGetFileReturnsSameVersion

Test group: PutUserInfo
  Pass: PutUserInfoSucceeds

Test group: PutRelativeFile
  Fail: PutRelativeFile.SuggestedExtension
    CheckFileInfo, response code: 200 OK
    PutRelativeFile, response code: 500 InternalServerError
      Incorrect value for 'Name' property. Required property missing
      Incorrect value for 'Url' property. Value is required but not provided.
    DeleteFile, response code: 0 0
    Re-run command: .\wopivalidator.exe -n PutRelativeFile.SuggestedExtension -w http://wopiserver:8880/wopi/files/cdb05bf7-377c-4c82-9282-0f144e278cad!M2VmNmY2YjUtYWFhNi00NzU4LTgzZmYtOTQzN2NlNjVhZWI2 -t eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyaWQiOiJleUpoYkdjaU9pSklVekkxTmlJc0luUjVjQ0k2SWtwWFZDSjkuZXlKaGRXUWlPaUp5WlhaaElpd2laWGh3SWpveE56QTRNRGMxTlRBMUxDSnBZWFFpT2pFM01EYzVPRGt4TURVc0ltbHpjeUk2SW1oMGRIQnpPaTh2YTJWNVkyeHZZV3N1YW5BdWMyOXNhV1JuWldGeUxuQnlkaTl5WldGc2JYTXZiME5KVXlJc0luVnpaWElpT25zaWFXUWlPbnNpYVdSd0lqb2lhSFIwY0hNNkx5OXJaWGxqYkc5aGF5NXFjQzV6YjJ4cFpHZGxZWEl1Y0hKMkwzSmxZV3h0Y3k5dlEwbFRJaXdpYjNCaGNYVmxYMmxrSWpvaVpUQTFPVGc0T1RFdE1EQTNOUzAwWm1WbUxUZzFPVE10WldJMU1EZ3hZMkppWVdVMklpd2lkSGx3WlNJNk1YMHNJblZ6WlhKdVlXMWxJam9pWVdSdGFXNGlMQ0p0WVdsc0lqb2lZV1J0YVc1QVpYaGhiWEJzWlM1dmNtY2lMQ0prYVhOd2JHRjVYMjVoYldVaU9pSkJaRzFwYmlCQlpHMXBiaUlzSW5WcFpGOXVkVzFpWlhJaU9qazVMQ0puYVdSZmJuVnRZbVZ5SWpvNU9YMHNJbk5qYjNCbElqcDdJblZ6WlhJaU9uc2ljbVZ6YjNWeVkyVWlPbnNpWkdWamIyUmxjaUk2SW1wemIyNGlMQ0oyWVd4MVpTSTZJbVY1U25kWldGSnZTV3B2YVV4NVNqa2lmU3dpY205c1pTSTZNWDE5ZlEuLVp5cFYtZF81UHVhQ2tKYjVEa2VEWjRZczF3LU1WTEEzNldTdi0wcmlURSIsIndvcGl1c2VyIjoiZTA1OTg4OTEtMDA3NS00ZmVmLTg1OTMtZWI1MDgxY2JiYWU2IWUwNTk4ODkxLTAwNzUtNGZlZi04NTkzLWViNTA4MWNiYmFlNkBodHRwczovL2tleWNsb2FrLmpwLnNvbGlkZ2Vhci5wcnYvcmVhbG1zL29DSVMiLCJ1c2VydHlwZSI6InJlZ3VsYXIiLCJmaWxlbmFtZSI6ImUwNTk4ODkxLTAwNzUtNGZlZi04NTkzLWViNTA4MWNiYmFlNi9OZXcgZmlsZS53b3BpdGVzdCIsImZpbGVpZCI6IjNlZjZmNmI1LWFhYTYtNDc1OC04M2ZmLTk0MzdjZTY1YWViNiIsInVzZXJuYW1lIjoiQWRtaW4gQWRtaW4iLCJ2aWV3bW9kZSI6IlZJRVdfTU9ERV9SRUFEX1dSSVRFIiwiZm9sZGVydXJsIjoiaHR0cHM6Ly9vY2lzLmpwLnNvbGlkZ2Vhci5wcnYvZi9jZGIwNWJmNy0zNzdjLTRjODItOTI4Mi0wZjE0NGUyNzhjYWQkZTA1OTg4OTEtMDA3NS00ZmVmLTg1OTMtZWI1MDgxY2JiYWU2ITNlZjZmNmI1LWFhYTYtNDc1OC04M2ZmLTk0MzdjZTY1YWViNiIsImVuZHBvaW50IjoiY2RiMDViZjctMzc3Yy00YzgyLTkyODItMGYxNDRlMjc4Y2FkJGUwNTk4ODkxLTAwNzUtNGZlZi04NTkzLWViNTA4MWNiYmFlNiIsImFwcG5hbWUiOiJPbmx5T2ZmaWNlIiwiYXBwZWRpdHVybCI6Imh0dHBzOi8vb25seW9mZmljZS5qcC5zb2xpZGdlYXIucHJ2L2hvc3Rpbmcvd29waS93b3JkL2VkaXQiLCJhcHB2aWV3dXJsIjoiaHR0cHM6Ly9vbmx5b2ZmaWNlLmpwLnNvbGlkZ2Vhci5wcnYvaG9zdGluZy93b3BpL3dvcmQvdmlldyIsInRyYWNlIjoiTi9BIiwiZXhwIjoxNzA4MDc1NTA1LCJpc3MiOiJjczNvcmc6d29waXNlcnZlcjoifQ.OAWpxelDmevHT36ZHnlIhqZMXiqtEF3TiVxeKVvH83U -l 99999999

  Pass: PutRelativeFile.SuggestedName
  Pass: PutRelativeFile.SuggestedNameConflict
  Fail: PutRelativeFile.RelativeName
    CheckFileInfo, response code: 200 OK
    PutRelativeFile, response code: 409 Conflict
      Incorrect value for 'Url' property. Cannot parse http%3A%2F%2Fwopiserver%3A8880%2Fwopi%2Ffiles%2Fcdb05bf7%2D377c%2D4c82%2D9282%2D0f144e278cad%21ZmI1MDI0YWQtOTkzMS00MGM4LWFlOTYtMzU3MzNkMTMyNDY3 as absolute URL
    DeleteFile, response code: 0 0
    Re-run command: .\wopivalidator.exe -n PutRelativeFile.RelativeName -w http://wopiserver:8880/wopi/files/cdb05bf7-377c-4c82-9282-0f144e278cad!M2VmNmY2YjUtYWFhNi00NzU4LTgzZmYtOTQzN2NlNjVhZWI2 -t eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyaWQiOiJleUpoYkdjaU9pSklVekkxTmlJc0luUjVjQ0k2SWtwWFZDSjkuZXlKaGRXUWlPaUp5WlhaaElpd2laWGh3SWpveE56QTRNRGMxTlRBMUxDSnBZWFFpT2pFM01EYzVPRGt4TURVc0ltbHpjeUk2SW1oMGRIQnpPaTh2YTJWNVkyeHZZV3N1YW5BdWMyOXNhV1JuWldGeUxuQnlkaTl5WldGc2JYTXZiME5KVXlJc0luVnpaWElpT25zaWFXUWlPbnNpYVdSd0lqb2lhSFIwY0hNNkx5OXJaWGxqYkc5aGF5NXFjQzV6YjJ4cFpHZGxZWEl1Y0hKMkwzSmxZV3h0Y3k5dlEwbFRJaXdpYjNCaGNYVmxYMmxrSWpvaVpUQTFPVGc0T1RFdE1EQTNOUzAwWm1WbUxUZzFPVE10WldJMU1EZ3hZMkppWVdVMklpd2lkSGx3WlNJNk1YMHNJblZ6WlhKdVlXMWxJam9pWVdSdGFXNGlMQ0p0WVdsc0lqb2lZV1J0YVc1QVpYaGhiWEJzWlM1dmNtY2lMQ0prYVhOd2JHRjVYMjVoYldVaU9pSkJaRzFwYmlCQlpHMXBiaUlzSW5WcFpGOXVkVzFpWlhJaU9qazVMQ0puYVdSZmJuVnRZbVZ5SWpvNU9YMHNJbk5qYjNCbElqcDdJblZ6WlhJaU9uc2ljbVZ6YjNWeVkyVWlPbnNpWkdWamIyUmxjaUk2SW1wemIyNGlMQ0oyWVd4MVpTSTZJbVY1U25kWldGSnZTV3B2YVV4NVNqa2lmU3dpY205c1pTSTZNWDE5ZlEuLVp5cFYtZF81UHVhQ2tKYjVEa2VEWjRZczF3LU1WTEEzNldTdi0wcmlURSIsIndvcGl1c2VyIjoiZTA1OTg4OTEtMDA3NS00ZmVmLTg1OTMtZWI1MDgxY2JiYWU2IWUwNTk4ODkxLTAwNzUtNGZlZi04NTkzLWViNTA4MWNiYmFlNkBodHRwczovL2tleWNsb2FrLmpwLnNvbGlkZ2Vhci5wcnYvcmVhbG1zL29DSVMiLCJ1c2VydHlwZSI6InJlZ3VsYXIiLCJmaWxlbmFtZSI6ImUwNTk4ODkxLTAwNzUtNGZlZi04NTkzLWViNTA4MWNiYmFlNi9OZXcgZmlsZS53b3BpdGVzdCIsImZpbGVpZCI6IjNlZjZmNmI1LWFhYTYtNDc1OC04M2ZmLTk0MzdjZTY1YWViNiIsInVzZXJuYW1lIjoiQWRtaW4gQWRtaW4iLCJ2aWV3bW9kZSI6IlZJRVdfTU9ERV9SRUFEX1dSSVRFIiwiZm9sZGVydXJsIjoiaHR0cHM6Ly9vY2lzLmpwLnNvbGlkZ2Vhci5wcnYvZi9jZGIwNWJmNy0zNzdjLTRjODItOTI4Mi0wZjE0NGUyNzhjYWQkZTA1OTg4OTEtMDA3NS00ZmVmLTg1OTMtZWI1MDgxY2JiYWU2ITNlZjZmNmI1LWFhYTYtNDc1OC04M2ZmLTk0MzdjZTY1YWViNiIsImVuZHBvaW50IjoiY2RiMDViZjctMzc3Yy00YzgyLTkyODItMGYxNDRlMjc4Y2FkJGUwNTk4ODkxLTAwNzUtNGZlZi04NTkzLWViNTA4MWNiYmFlNiIsImFwcG5hbWUiOiJPbmx5T2ZmaWNlIiwiYXBwZWRpdHVybCI6Imh0dHBzOi8vb25seW9mZmljZS5qcC5zb2xpZGdlYXIucHJ2L2hvc3Rpbmcvd29waS93b3JkL2VkaXQiLCJhcHB2aWV3dXJsIjoiaHR0cHM6Ly9vbmx5b2ZmaWNlLmpwLnNvbGlkZ2Vhci5wcnYvaG9zdGluZy93b3BpL3dvcmQvdmlldyIsInRyYWNlIjoiTi9BIiwiZXhwIjoxNzA4MDc1NTA1LCJpc3MiOiJjczNvcmc6d29waXNlcnZlcjoifQ.OAWpxelDmevHT36ZHnlIhqZMXiqtEF3TiVxeKVvH83U -l 99999999

  Pass: PutRelativeFile.RelativeNameOverwriteTrueNoEffect
  Pass: PutRelativeFile.RelativeNameOverwriteFalseNoEffect
  Pass: PutRelativeFile.RelativeNameConflictNoOverwrite
  Pass: PutRelativeFile.RelativeNameConflictOverwriteFalse
  Pass: PutRelativeFile.RelativeNameConflictOverwriteTrue
  Pass: PutRelativeFile.ConflictingHeaders
  Pass: PutRelativeFile.RelativeNameConflictOverwriteTrueLocked
  Pass: PutRelativeFile.FileNameReturnedIsCorrectlyEncoded
  Fail: PutRelativeFile.FileNameLongerThan512Chars
    CheckFileInfo, response code: 200 OK
    PutRelativeFile, response code: 500 InternalServerError
      Incorrect StatusCode. Expected: 200, Actual: 500
      Incorrect StatusCode. Expected: 400, Actual: 500
    DeleteFile, response code: 0 0
    Re-run command: .\wopivalidator.exe -n PutRelativeFile.FileNameLongerThan512Chars -w http://wopiserver:8880/wopi/files/cdb05bf7-377c-4c82-9282-0f144e278cad!M2VmNmY2YjUtYWFhNi00NzU4LTgzZmYtOTQzN2NlNjVhZWI2 -t eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyaWQiOiJleUpoYkdjaU9pSklVekkxTmlJc0luUjVjQ0k2SWtwWFZDSjkuZXlKaGRXUWlPaUp5WlhaaElpd2laWGh3SWpveE56QTRNRGMxTlRBMUxDSnBZWFFpT2pFM01EYzVPRGt4TURVc0ltbHpjeUk2SW1oMGRIQnpPaTh2YTJWNVkyeHZZV3N1YW5BdWMyOXNhV1JuWldGeUxuQnlkaTl5WldGc2JYTXZiME5KVXlJc0luVnpaWElpT25zaWFXUWlPbnNpYVdSd0lqb2lhSFIwY0hNNkx5OXJaWGxqYkc5aGF5NXFjQzV6YjJ4cFpHZGxZWEl1Y0hKMkwzSmxZV3h0Y3k5dlEwbFRJaXdpYjNCaGNYVmxYMmxrSWpvaVpUQTFPVGc0T1RFdE1EQTNOUzAwWm1WbUxUZzFPVE10WldJMU1EZ3hZMkppWVdVMklpd2lkSGx3WlNJNk1YMHNJblZ6WlhKdVlXMWxJam9pWVdSdGFXNGlMQ0p0WVdsc0lqb2lZV1J0YVc1QVpYaGhiWEJzWlM1dmNtY2lMQ0prYVhOd2JHRjVYMjVoYldVaU9pSkJaRzFwYmlCQlpHMXBiaUlzSW5WcFpGOXVkVzFpWlhJaU9qazVMQ0puYVdSZmJuVnRZbVZ5SWpvNU9YMHNJbk5qYjNCbElqcDdJblZ6WlhJaU9uc2ljbVZ6YjNWeVkyVWlPbnNpWkdWamIyUmxjaUk2SW1wemIyNGlMQ0oyWVd4MVpTSTZJbVY1U25kWldGSnZTV3B2YVV4NVNqa2lmU3dpY205c1pTSTZNWDE5ZlEuLVp5cFYtZF81UHVhQ2tKYjVEa2VEWjRZczF3LU1WTEEzNldTdi0wcmlURSIsIndvcGl1c2VyIjoiZTA1OTg4OTEtMDA3NS00ZmVmLTg1OTMtZWI1MDgxY2JiYWU2IWUwNTk4ODkxLTAwNzUtNGZlZi04NTkzLWViNTA4MWNiYmFlNkBodHRwczovL2tleWNsb2FrLmpwLnNvbGlkZ2Vhci5wcnYvcmVhbG1zL29DSVMiLCJ1c2VydHlwZSI6InJlZ3VsYXIiLCJmaWxlbmFtZSI6ImUwNTk4ODkxLTAwNzUtNGZlZi04NTkzLWViNTA4MWNiYmFlNi9OZXcgZmlsZS53b3BpdGVzdCIsImZpbGVpZCI6IjNlZjZmNmI1LWFhYTYtNDc1OC04M2ZmLTk0MzdjZTY1YWViNiIsInVzZXJuYW1lIjoiQWRtaW4gQWRtaW4iLCJ2aWV3bW9kZSI6IlZJRVdfTU9ERV9SRUFEX1dSSVRFIiwiZm9sZGVydXJsIjoiaHR0cHM6Ly9vY2lzLmpwLnNvbGlkZ2Vhci5wcnYvZi9jZGIwNWJmNy0zNzdjLTRjODItOTI4Mi0wZjE0NGUyNzhjYWQkZTA1OTg4OTEtMDA3NS00ZmVmLTg1OTMtZWI1MDgxY2JiYWU2ITNlZjZmNmI1LWFhYTYtNDc1OC04M2ZmLTk0MzdjZTY1YWViNiIsImVuZHBvaW50IjoiY2RiMDViZjctMzc3Yy00YzgyLTkyODItMGYxNDRlMjc4Y2FkJGUwNTk4ODkxLTAwNzUtNGZlZi04NTkzLWViNTA4MWNiYmFlNiIsImFwcG5hbWUiOiJPbmx5T2ZmaWNlIiwiYXBwZWRpdHVybCI6Imh0dHBzOi8vb25seW9mZmljZS5qcC5zb2xpZGdlYXIucHJ2L2hvc3Rpbmcvd29waS93b3JkL2VkaXQiLCJhcHB2aWV3dXJsIjoiaHR0cHM6Ly9vbmx5b2ZmaWNlLmpwLnNvbGlkZ2Vhci5wcnYvaG9zdGluZy93b3BpL3dvcmQvdmlldyIsInRyYWNlIjoiTi9BIiwiZXhwIjoxNzA4MDc1NTA1LCJpc3MiOiJjczNvcmc6d29waXNlcnZlcjoifQ.OAWpxelDmevHT36ZHnlIhqZMXiqtEF3TiVxeKVvH83U -l 99999999

  Pass: PutRelativeFile.IncludeHostUrls

Test group: PutRelativeFileUnsupported

Test group: RenameFileIfCreateChildFileIsNotSupported

Test group: RenameFileIfCreateChildFileIsSupported

Test group: Ecosystem

Test group: Container

Test group: RenameContainer

Test group: EnumerateAncestorsAndChildren

Test group: CreateChildFileAndDeleteFile

Test group: FileUrlUsage
  Pass: GetFromFileUrlAfterPutFile

Test group: FileUrlViewOnly
  Pass: GetFromFileUrl

Test group: GetSharingUrlForFileWithTypeReadOnly

Test group: GetSharingUrlForFileWithTypeReadWrite

Test group: GetSharingUrlForFileWithUnknownType

Test group: GetSharingUrlForContainerWithTypeReadOnly

Test group: GetSharingUrlForContainerWithTypeReadWrite

Test group: GetSharingUrlForContainerWithUnknownType

Test group: AddActivities

Test group: ProofKeys
  Pass: ProofKeys.CurrentValid.OldValid
  Pass: ProofKeys.CurrentValid.OldInvalid
  Pass: ProofKeys.CurrentInvalid.OldValidSignedWithCurrentKey
  Pass: ProofKeys.CurrentValidSignedWithOldKey.OldInvalid
  Fail: ProofKeys.CurrentInvalid.OldValidSignedWithOldKey
    CheckFileInfo, response code: 200 OK
      Incorrect StatusCode. Expected: 500, Actual: 200
    Re-run command: .\wopivalidator.exe -n ProofKeys.CurrentInvalid.OldValidSignedWithOldKey -w http://wopiserver:8880/wopi/files/cdb05bf7-377c-4c82-9282-0f144e278cad!M2VmNmY2YjUtYWFhNi00NzU4LTgzZmYtOTQzN2NlNjVhZWI2 -t eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyaWQiOiJleUpoYkdjaU9pSklVekkxTmlJc0luUjVjQ0k2SWtwWFZDSjkuZXlKaGRXUWlPaUp5WlhaaElpd2laWGh3SWpveE56QTRNRGMxTlRBMUxDSnBZWFFpT2pFM01EYzVPRGt4TURVc0ltbHpjeUk2SW1oMGRIQnpPaTh2YTJWNVkyeHZZV3N1YW5BdWMyOXNhV1JuWldGeUxuQnlkaTl5WldGc2JYTXZiME5KVXlJc0luVnpaWElpT25zaWFXUWlPbnNpYVdSd0lqb2lhSFIwY0hNNkx5OXJaWGxqYkc5aGF5NXFjQzV6YjJ4cFpHZGxZWEl1Y0hKMkwzSmxZV3h0Y3k5dlEwbFRJaXdpYjNCaGNYVmxYMmxrSWpvaVpUQTFPVGc0T1RFdE1EQTNOUzAwWm1WbUxUZzFPVE10WldJMU1EZ3hZMkppWVdVMklpd2lkSGx3WlNJNk1YMHNJblZ6WlhKdVlXMWxJam9pWVdSdGFXNGlMQ0p0WVdsc0lqb2lZV1J0YVc1QVpYaGhiWEJzWlM1dmNtY2lMQ0prYVhOd2JHRjVYMjVoYldVaU9pSkJaRzFwYmlCQlpHMXBiaUlzSW5WcFpGOXVkVzFpWlhJaU9qazVMQ0puYVdSZmJuVnRZbVZ5SWpvNU9YMHNJbk5qYjNCbElqcDdJblZ6WlhJaU9uc2ljbVZ6YjNWeVkyVWlPbnNpWkdWamIyUmxjaUk2SW1wemIyNGlMQ0oyWVd4MVpTSTZJbVY1U25kWldGSnZTV3B2YVV4NVNqa2lmU3dpY205c1pTSTZNWDE5ZlEuLVp5cFYtZF81UHVhQ2tKYjVEa2VEWjRZczF3LU1WTEEzNldTdi0wcmlURSIsIndvcGl1c2VyIjoiZTA1OTg4OTEtMDA3NS00ZmVmLTg1OTMtZWI1MDgxY2JiYWU2IWUwNTk4ODkxLTAwNzUtNGZlZi04NTkzLWViNTA4MWNiYmFlNkBodHRwczovL2tleWNsb2FrLmpwLnNvbGlkZ2Vhci5wcnYvcmVhbG1zL29DSVMiLCJ1c2VydHlwZSI6InJlZ3VsYXIiLCJmaWxlbmFtZSI6ImUwNTk4ODkxLTAwNzUtNGZlZi04NTkzLWViNTA4MWNiYmFlNi9OZXcgZmlsZS53b3BpdGVzdCIsImZpbGVpZCI6IjNlZjZmNmI1LWFhYTYtNDc1OC04M2ZmLTk0MzdjZTY1YWViNiIsInVzZXJuYW1lIjoiQWRtaW4gQWRtaW4iLCJ2aWV3bW9kZSI6IlZJRVdfTU9ERV9SRUFEX1dSSVRFIiwiZm9sZGVydXJsIjoiaHR0cHM6Ly9vY2lzLmpwLnNvbGlkZ2Vhci5wcnYvZi9jZGIwNWJmNy0zNzdjLTRjODItOTI4Mi0wZjE0NGUyNzhjYWQkZTA1OTg4OTEtMDA3NS00ZmVmLTg1OTMtZWI1MDgxY2JiYWU2ITNlZjZmNmI1LWFhYTYtNDc1OC04M2ZmLTk0MzdjZTY1YWViNiIsImVuZHBvaW50IjoiY2RiMDViZjctMzc3Yy00YzgyLTkyODItMGYxNDRlMjc4Y2FkJGUwNTk4ODkxLTAwNzUtNGZlZi04NTkzLWViNTA4MWNiYmFlNiIsImFwcG5hbWUiOiJPbmx5T2ZmaWNlIiwiYXBwZWRpdHVybCI6Imh0dHBzOi8vb25seW9mZmljZS5qcC5zb2xpZGdlYXIucHJ2L2hvc3Rpbmcvd29waS93b3JkL2VkaXQiLCJhcHB2aWV3dXJsIjoiaHR0cHM6Ly9vbmx5b2ZmaWNlLmpwLnNvbGlkZ2Vhci5wcnYvaG9zdGluZy93b3BpL3dvcmQvdmlldyIsInRyYWNlIjoiTi9BIiwiZXhwIjoxNzA4MDc1NTA1LCJpc3MiOiJjczNvcmc6d29waXNlcnZlcjoifQ.OAWpxelDmevHT36ZHnlIhqZMXiqtEF3TiVxeKVvH83U -l 99999999

  Fail: ProofKeys.CurrentInvalid.OldInvalid
    CheckFileInfo, response code: 200 OK
      Incorrect StatusCode. Expected: 500, Actual: 200
    Re-run command: .\wopivalidator.exe -n ProofKeys.CurrentInvalid.OldInvalid -w http://wopiserver:8880/wopi/files/cdb05bf7-377c-4c82-9282-0f144e278cad!M2VmNmY2YjUtYWFhNi00NzU4LTgzZmYtOTQzN2NlNjVhZWI2 -t eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyaWQiOiJleUpoYkdjaU9pSklVekkxTmlJc0luUjVjQ0k2SWtwWFZDSjkuZXlKaGRXUWlPaUp5WlhaaElpd2laWGh3SWpveE56QTRNRGMxTlRBMUxDSnBZWFFpT2pFM01EYzVPRGt4TURVc0ltbHpjeUk2SW1oMGRIQnpPaTh2YTJWNVkyeHZZV3N1YW5BdWMyOXNhV1JuWldGeUxuQnlkaTl5WldGc2JYTXZiME5KVXlJc0luVnpaWElpT25zaWFXUWlPbnNpYVdSd0lqb2lhSFIwY0hNNkx5OXJaWGxqYkc5aGF5NXFjQzV6YjJ4cFpHZGxZWEl1Y0hKMkwzSmxZV3h0Y3k5dlEwbFRJaXdpYjNCaGNYVmxYMmxrSWpvaVpUQTFPVGc0T1RFdE1EQTNOUzAwWm1WbUxUZzFPVE10WldJMU1EZ3hZMkppWVdVMklpd2lkSGx3WlNJNk1YMHNJblZ6WlhKdVlXMWxJam9pWVdSdGFXNGlMQ0p0WVdsc0lqb2lZV1J0YVc1QVpYaGhiWEJzWlM1dmNtY2lMQ0prYVhOd2JHRjVYMjVoYldVaU9pSkJaRzFwYmlCQlpHMXBiaUlzSW5WcFpGOXVkVzFpWlhJaU9qazVMQ0puYVdSZmJuVnRZbVZ5SWpvNU9YMHNJbk5qYjNCbElqcDdJblZ6WlhJaU9uc2ljbVZ6YjNWeVkyVWlPbnNpWkdWamIyUmxjaUk2SW1wemIyNGlMQ0oyWVd4MVpTSTZJbVY1U25kWldGSnZTV3B2YVV4NVNqa2lmU3dpY205c1pTSTZNWDE5ZlEuLVp5cFYtZF81UHVhQ2tKYjVEa2VEWjRZczF3LU1WTEEzNldTdi0wcmlURSIsIndvcGl1c2VyIjoiZTA1OTg4OTEtMDA3NS00ZmVmLTg1OTMtZWI1MDgxY2JiYWU2IWUwNTk4ODkxLTAwNzUtNGZlZi04NTkzLWViNTA4MWNiYmFlNkBodHRwczovL2tleWNsb2FrLmpwLnNvbGlkZ2Vhci5wcnYvcmVhbG1zL29DSVMiLCJ1c2VydHlwZSI6InJlZ3VsYXIiLCJmaWxlbmFtZSI6ImUwNTk4ODkxLTAwNzUtNGZlZi04NTkzLWViNTA4MWNiYmFlNi9OZXcgZmlsZS53b3BpdGVzdCIsImZpbGVpZCI6IjNlZjZmNmI1LWFhYTYtNDc1OC04M2ZmLTk0MzdjZTY1YWViNiIsInVzZXJuYW1lIjoiQWRtaW4gQWRtaW4iLCJ2aWV3bW9kZSI6IlZJRVdfTU9ERV9SRUFEX1dSSVRFIiwiZm9sZGVydXJsIjoiaHR0cHM6Ly9vY2lzLmpwLnNvbGlkZ2Vhci5wcnYvZi9jZGIwNWJmNy0zNzdjLTRjODItOTI4Mi0wZjE0NGUyNzhjYWQkZTA1OTg4OTEtMDA3NS00ZmVmLTg1OTMtZWI1MDgxY2JiYWU2ITNlZjZmNmI1LWFhYTYtNDc1OC04M2ZmLTk0MzdjZTY1YWViNiIsImVuZHBvaW50IjoiY2RiMDViZjctMzc3Yy00YzgyLTkyODItMGYxNDRlMjc4Y2FkJGUwNTk4ODkxLTAwNzUtNGZlZi04NTkzLWViNTA4MWNiYmFlNiIsImFwcG5hbWUiOiJPbmx5T2ZmaWNlIiwiYXBwZWRpdHVybCI6Imh0dHBzOi8vb25seW9mZmljZS5qcC5zb2xpZGdlYXIucHJ2L2hvc3Rpbmcvd29waS93b3JkL2VkaXQiLCJhcHB2aWV3dXJsIjoiaHR0cHM6Ly9vbmx5b2ZmaWNlLmpwLnNvbGlkZ2Vhci5wcnYvaG9zdGluZy93b3BpL3dvcmQvdmlldyIsInRyYWNlIjoiTi9BIiwiZXhwIjoxNzA4MDc1NTA1LCJpc3MiOiJjczNvcmc6d29waXNlcnZlcjoifQ.OAWpxelDmevHT36ZHnlIhqZMXiqtEF3TiVxeKVvH83U -l 99999999

  Fail: ProofKeys.TimestampOlderThan20Min
    CheckFileInfo, response code: 200 OK
      Incorrect StatusCode. Expected: 500, Actual: 200
    Re-run command: .\wopivalidator.exe -n ProofKeys.TimestampOlderThan20Min -w http://wopiserver:8880/wopi/files/cdb05bf7-377c-4c82-9282-0f144e278cad!M2VmNmY2YjUtYWFhNi00NzU4LTgzZmYtOTQzN2NlNjVhZWI2 -t eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyaWQiOiJleUpoYkdjaU9pSklVekkxTmlJc0luUjVjQ0k2SWtwWFZDSjkuZXlKaGRXUWlPaUp5WlhaaElpd2laWGh3SWpveE56QTRNRGMxTlRBMUxDSnBZWFFpT2pFM01EYzVPRGt4TURVc0ltbHpjeUk2SW1oMGRIQnpPaTh2YTJWNVkyeHZZV3N1YW5BdWMyOXNhV1JuWldGeUxuQnlkaTl5WldGc2JYTXZiME5KVXlJc0luVnpaWElpT25zaWFXUWlPbnNpYVdSd0lqb2lhSFIwY0hNNkx5OXJaWGxqYkc5aGF5NXFjQzV6YjJ4cFpHZGxZWEl1Y0hKMkwzSmxZV3h0Y3k5dlEwbFRJaXdpYjNCaGNYVmxYMmxrSWpvaVpUQTFPVGc0T1RFdE1EQTNOUzAwWm1WbUxUZzFPVE10WldJMU1EZ3hZMkppWVdVMklpd2lkSGx3WlNJNk1YMHNJblZ6WlhKdVlXMWxJam9pWVdSdGFXNGlMQ0p0WVdsc0lqb2lZV1J0YVc1QVpYaGhiWEJzWlM1dmNtY2lMQ0prYVhOd2JHRjVYMjVoYldVaU9pSkJaRzFwYmlCQlpHMXBiaUlzSW5WcFpGOXVkVzFpWlhJaU9qazVMQ0puYVdSZmJuVnRZbVZ5SWpvNU9YMHNJbk5qYjNCbElqcDdJblZ6WlhJaU9uc2ljbVZ6YjNWeVkyVWlPbnNpWkdWamIyUmxjaUk2SW1wemIyNGlMQ0oyWVd4MVpTSTZJbVY1U25kWldGSnZTV3B2YVV4NVNqa2lmU3dpY205c1pTSTZNWDE5ZlEuLVp5cFYtZF81UHVhQ2tKYjVEa2VEWjRZczF3LU1WTEEzNldTdi0wcmlURSIsIndvcGl1c2VyIjoiZTA1OTg4OTEtMDA3NS00ZmVmLTg1OTMtZWI1MDgxY2JiYWU2IWUwNTk4ODkxLTAwNzUtNGZlZi04NTkzLWViNTA4MWNiYmFlNkBodHRwczovL2tleWNsb2FrLmpwLnNvbGlkZ2Vhci5wcnYvcmVhbG1zL29DSVMiLCJ1c2VydHlwZSI6InJlZ3VsYXIiLCJmaWxlbmFtZSI6ImUwNTk4ODkxLTAwNzUtNGZlZi04NTkzLWViNTA4MWNiYmFlNi9OZXcgZmlsZS53b3BpdGVzdCIsImZpbGVpZCI6IjNlZjZmNmI1LWFhYTYtNDc1OC04M2ZmLTk0MzdjZTY1YWViNiIsInVzZXJuYW1lIjoiQWRtaW4gQWRtaW4iLCJ2aWV3bW9kZSI6IlZJRVdfTU9ERV9SRUFEX1dSSVRFIiwiZm9sZGVydXJsIjoiaHR0cHM6Ly9vY2lzLmpwLnNvbGlkZ2Vhci5wcnYvZi9jZGIwNWJmNy0zNzdjLTRjODItOTI4Mi0wZjE0NGUyNzhjYWQkZTA1OTg4OTEtMDA3NS00ZmVmLTg1OTMtZWI1MDgxY2JiYWU2ITNlZjZmNmI1LWFhYTYtNDc1OC04M2ZmLTk0MzdjZTY1YWViNiIsImVuZHBvaW50IjoiY2RiMDViZjctMzc3Yy00YzgyLTkyODItMGYxNDRlMjc4Y2FkJGUwNTk4ODkxLTAwNzUtNGZlZi04NTkzLWViNTA4MWNiYmFlNiIsImFwcG5hbWUiOiJPbmx5T2ZmaWNlIiwiYXBwZWRpdHVybCI6Imh0dHBzOi8vb25seW9mZmljZS5qcC5zb2xpZGdlYXIucHJ2L2hvc3Rpbmcvd29waS93b3JkL2VkaXQiLCJhcHB2aWV3dXJsIjoiaHR0cHM6Ly9vbmx5b2ZmaWNlLmpwLnNvbGlkZ2Vhci5wcnYvaG9zdGluZy93b3BpL3dvcmQvdmlldyIsInRyYWNlIjoiTi9BIiwiZXhwIjoxNzA4MDc1NTA1LCJpc3MiOiJjczNvcmc6d29waXNlcnZlcjoifQ.OAWpxelDmevHT36ZHnlIhqZMXiqtEF3TiVxeKVvH83U -l 99999999

Test group: CoauthLocks

Test group: IncrementalFileTransferErrorCases

Test group: IncrementalFileTransferWithFullFileChunkingScheme

Test group: IncrementalFileTransferWithZipChunkingScheme

Test group: RenameFileWithCoauthLockSupported

Test group: CoauthLockExpiration
  All tests skipped: CoauthLockExpiration uses delay.

Apparently, the lock tests pass running the validator, so maybe the tests don't cover that scenario?

glpatcern commented 7 months ago

Hi @jvillafanez, interesting input. It's very possible that the wopi validator does not cover this case, meaning that Microsoft does not test the case where a lock is owned by another application. The case for "us" (CERNBox), likely applicable to OCIS as well, is for files being accessed directly, not through OCIS.

For info, the case is covered by the wopiserver unit test suite, though it may require a bit more tinkering to make it run: it is run by the CI only against local interface, not against a cs3 storage, which is what you'd test with the config you used for the wopi validator run.

glpatcern commented 6 months ago

For the record, I can pass the full wopiserver test suite with the referenced PR, including the case that the wopivalidator does not cover. Therefore I'm going ahead and merging it.

Also, following discussions in cs3org/cs3apis#226, Reva edge should be covered by external modifications, and the PR here helps raising a more meaningful error.

Anyway, I understand that @jvillafanez is busy with the wopi implementation embedded in OCIS, so you're likely not going to spend further time with the cs3 wopiserver test suite. Am I right?