Closed glpatcern closed 6 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?
wopi validator should catch this scenario - right?
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.
We do run the wopi validator in scope of ocis with the wopi server.
I will double check if tests.do cover this case.
@DeepDiver1975 are you working on that? @jvillafanez can you maybe give it a try if @DeepDiver1975 can't proceed on it?
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.
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
@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.
@micbar I understand your comments belong to other issues? I'll move them there
This is the full run for the wopi validator.
wopi validator image:
"Labels": {
"maintainer": "ownCloud GmbH <devops@owncloud.com>",
"org.opencontainers.image.authors": "ownCloud DevOps <devops@owncloud.com>",
"org.opencontainers.image.created": "2024-01-22T08:00:14Z",
"org.opencontainers.image.documentation": "https://github.com/owncloud-ci/wopi-validator",
"org.opencontainers.image.revision": "51e7fc849535939ae820e37c0a5a6443e335e72e",
"org.opencontainers.image.source": "https://github.com/owncloud-ci/wopi-validator.git",
"org.opencontainers.image.title": "ownCloud CI wopi-validator",
"org.opencontainers.image.url": "https://github.com/owncloud-ci/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?
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.
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?
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:
lockid
is not sufficient and we need to pass also theholder
. This could be passed along as an extra opaque parameter, and I guess it would help in all implementations for logging/monitoring purposes (which apps executed which PUT operations)InitiateFileUpload
request to fail with aCODE_FAILED_PRECONDITION
error, and we should not look into any custom error message.@wkloucek for the latter point, how is Reva edge behaving? Is that case supported at all?