1
0
mirror of https://github.com/owncloud/ocis.git synced 2026-10-23 23:29:02 +03:00
Commit Graph

2694 Commits

Author SHA1 Message Date
nabim777
3be12a45c6 test: add tests for post processing command for different steps
Signed-off-by: nabim777 <nabinalemagar019@gmail.com>
2026-10-15 12:19:18 +05:45
Michal Klos
90d58ae47d feat: [OCISDEV-1437] show suggested expiry date of 30 days (#12988) 2026-10-07 16:03:09 +02:00
Asmita Paudel
db46163971 [tests-only][full-ci] test: verify managers can remove resource shares created by others (#13030)
test: verify managers can remove resource shares created by others
2026-10-07 10:54:57 +05:45
Kavita gautam
281a1f1b46 test: Run apiSharingNgItemInvitation on k8s deployment (#12996)
* test: run apiSharingNgItemInvitation on k8s deployment

Signed-off-by: Kavita Gautam <kavita@jankaritech.com>

* test: synchronization checks after the invitation

Signed-off-by: Kavita Gautam <kavita@jankaritech.com>

* test: share with permission role

Signed-off-by: Kavita Gautam <kavita@jankaritech.com>

---------

Signed-off-by: Kavita Gautam <kavita@jankaritech.com>
2026-10-05 14:31:31 +05:45
Pradip Subedi
a66ae6783d [tests-only][full-ci] test: fix flaky grouped email notification (#12882)
* test:start auth-bearer service separately instead of via OCIS_ADD_RUN_SERVICES

* test: fix timezone-dependent expiry assertions and flaky email notification

* test: simplify host timezone detection and log the UTC fallback

* test: oonly run cli commands test suite

* test: run all suites

* test: resolve the expiry timestamp in the timezone the mail was sent in

* test: inline the UTC expiration date conversion and drop the helper

* test: simplify the mail timezone formatter and restore the CI coverage guard
2026-10-01 16:37:56 +05:45
Prajwol Amatya
52891efd4e [tests-only][full-ci] test: add test for public link brute-force protection (#13008)
test: add test for public link brute-force protection

Signed-off-by: Prajwol Amatya <prajwolamatya11@gmail.com>
2026-10-01 11:03:09 +05:45
isha
dbf40a3dcd [tests-only][full-ci][k8s] test(ci): run e2e test against k8s deployment (#13006)
ci: run e2e test against k8s deployment
2026-10-01 10:44:41 +05:45
isha
aa047423f9 [full-ci][tests-only][k8s] fix: k8s-only failure in LDAP posixGroup share invitation test (#13029)
fix: k8s-only failure in LDAP posixGroup share invitation test
2026-09-30 15:22:41 +05:45
Prajwol Amatya
018df1c0f5 [tests-only][full-ci] test: add test to check access to shared space for ldap group member (#12990)
test: add test to check access to shared space for ldap group member

Signed-off-by: Prajwol Amatya <prajwolamatya11@gmail.com>
2026-09-25 12:43:20 +05:45
isha
146f08513c [tests-only][full-ci][k8s] test: run apiSearchContent on k8s deployment (#12959)
test: disable redundant k8s 5xx retries for search requests
2026-09-24 15:08:15 +05:45
Prajwol Amatya
44a46faae0 [tests-only][full-ci] test: non-admin user get the detail of group along with group members (#12981)
test: non-admin user get the detail of group

Signed-off-by: Prajwol Amatya <prajwolamatya11@gmail.com>
2026-09-24 12:15:08 +05:45
Prajwol Amatya
5d9d80b45b [tests-only][full-ci] test: retry copy operation on 500 status code (#12973)
test: retry copy opetation on 500 status code

Signed-off-by: Prajwol Amatya <prajwolamatya11@gmail.com>
2026-09-18 17:10:39 +05:45
Prajwol Amatya
3e3bb41132 [tests-only][full-ci] test: set up Keycloak users via HTTP instead of Web UI (#12930)
test: fix user mfa setup for vauld

Signed-off-by: Prajwol Amatya <prajwolamatya11@gmail.com>
2026-09-16 12:12:55 +05:45
Pradip Subedi
4bf1e3ea5e [tests-only][full-ci][k8s] test: rollback sending last chunk twice status code to only 404 (#12929)
* test: rollback sending last chunk twice status code to only 404

* test: run all suites

* test: run coreApiWebdav remaining suite in k8s

* test: exclude coreApiWebdavPreviews
2026-09-15 09:18:54 +05:45
Firas Frikha
6d8bd29cef fix: [OCISDEV-1200] do not share vault resources with users who cannot access them (#12905)
* fix: [OCISDEV-1200] do not leak vault file names via share notifications

* test: [OCISDEV-1200] fix apiVault scenarios for users without vault mode
2026-09-14 15:49:35 +02:00
Prajwol Amatya
ddc34232f8 [tests-only][full-ci][k8s] test: run apiVault on k8s deployment (#12845)
* test: run apiVault on k8s deployment

Signed-off-by: Prajwol Amatya <prajwol.amatya@kiteworks.com>

* test: use oc_oAuth.user key to get token

Signed-off-by: Prajwol Amatya <prajwolamatya11@gmail.com>

* test: debug storage-users-vault

Signed-off-by: Prajwol Amatya <prajwolamatya11@gmail.com>

* test: add post test debug

Signed-off-by: Prajwol Amatya <prajwolamatya11@gmail.com>

* test: log and retry until the deadline

Signed-off-by: Prajwol Amatya <prajwolamatya11@gmail.com>

* test: expose proxy readyz

Signed-off-by: Prajwol Amatya <prajwolamatya11@gmail.com>

* test: configure auth level name for proxy and frontend services

Signed-off-by: Prajwol Amatya <prajwolamatya11@gmail.com>

* test: generate admin access token if expired

Signed-off-by: Prajwol Amatya <prajwolamatya11@gmail.com>

* test: check ociswrapper logs

Signed-off-by: Prajwol Amatya <prajwolamatya11@gmail.com>

* test: roll back to default auth level name

Signed-off-by: Prajwol Amatya <prajwolamatya11@gmail.com>

* test: check if retry works

Signed-off-by: Prajwol Amatya <prajwolamatya11@gmail.com>

* test: clean deduplicate environments

Signed-off-by: Prajwol Amatya <prajwolamatya11@gmail.com>

* test: revert changes

Signed-off-by: Prajwol Amatya <prajwolamatya11@gmail.com>

* test: regenerate access token on expiry

Signed-off-by: Prajwol Amatya <prajwolamatya11@gmail.com>

* test: pre remove exiting envs

Signed-off-by: Prajwol Amatya <prajwolamatya11@gmail.com>

* test: debug ociswrapper

Signed-off-by: Prajwol Amatya <prajwolamatya11@gmail.com>

* test: delete only confirmed duplicate key

Signed-off-by: Prajwol Amatya <prajwolamatya11@gmail.com>

* test: set keycloak url from setup.sh

Signed-off-by: Prajwol Amatya <prajwolamatya11@gmail.com>

* test: use the already running postgres for keycloak's database

Signed-off-by: Prajwol Amatya <prajwolamatya11@gmail.com>

---------

Signed-off-by: Prajwol Amatya <prajwol.amatya@kiteworks.com>
Signed-off-by: Prajwol Amatya <prajwolamatya11@gmail.com>
Co-authored-by: Prajwol Amatya <prajwol.amatya@kiteworks.com>
2026-09-10 16:49:07 +05:45
Prajwol Amatya
a2f6ec3fc3 [tests-only][full-ci] test: refactor steps in api vault test (#12921)
test: remove redundand space admin role assign step

Signed-off-by: Prajwol Amatya <prajwolamatya11@gmail.com>
2026-09-10 11:59:21 +05:45
Pradip Subedi
d2187fb1cd [tests-only][full-ci] test: add missing wait for virus scan completion in uploadSessions scenario (#12904)
test: add missing wait for virus scan completion in uploadSessions scenario 121
2026-09-09 16:36:55 +05:45
Michal Klos
768f7d4fa0 fix: [OCISDEV-1207] enforce permissions on vault routes (#12884)
* fix: [OCISDEV-1207] enforce permissions on vault routes

* fix: [OCISDEV-1207] enforce permissions on vault routes

* fix: [OCISDEV-1207] enforce permissions on vault routes

* fix: [OCISDEV-1207] enforce permissions on vault routes, adapt test role

* fix: [OCISDEV-1207] enforce permissions on vault routes, adapt test

* fix: [OCISDEV-1207] enforce permissions on vault routes, adapt test
2026-09-09 12:44:45 +02:00
Pradip Subedi
35b3dd0cf8 [tests-only][full-ci] test: fix blobstore flakiness (#12889)
* test: fix blobstore flakiness

* test: run all suites
2026-09-08 16:39:57 +05:45
Pradip Subedi
766e350ef9 [tests-only][full-ci] test(cli): add acceptance tests for the search optimize command (#12741)
* test(cli): add acceptance tests for the search optimize command

* test(cli): fix search retry loop passing limit as isVault

* test(cli): add empty-index optimize scenario and baseline search assertion

* test(cli): retry search only on 5xx and harden searchOptimize assertions
2026-09-08 16:34:35 +05:45
Pradip Subedi
76a4b92157 [tests-only][full-ci] test(collaboration): cover WOPI lock modes (#12828)
* test(collaboration): cover public WOPI lock

* test(collaboration): cover READ_ONLY view mode and lock conflict in wopi tests

* test(collaboration): fix viewMode handling and expect correct lock codes per mode
2026-09-07 17:05:46 +05:45
isha
f92f0af3bb [tests-only] test: add test cases for vault user access (#12860)
test: add test cases for vault user access
2026-09-04 12:00:32 +05:45
Prajwol Amatya
947ab4a77a [tests-only][full-ci] test: fix flakiness in apiVault (#12854)
* test: check qr screenshot

Signed-off-by: Prajwol Amatya <prajwolamatya11@gmail.com>

* test: retry taking screenshot and qr decode on failure

Signed-off-by: Prajwol Amatya <prajwolamatya11@gmail.com>

* test: upload qr image artifact

Signed-off-by: Prajwol Amatya <prajwolamatya11@gmail.com>

* test: decode base64 PNG data

Signed-off-by: Prajwol Amatya <prajwolamatya11@gmail.com>

---------

Signed-off-by: Prajwol Amatya <prajwolamatya11@gmail.com>
2026-09-01 11:13:29 +05:45
David Walter
4d9c46f3a7 feat(collaboration): close WOPI property gaps (#12593)
* feat(collaboration): add Version to Collabora WOPI CheckFileInfo

Add Version field to the Collabora struct to match Microsoft and OnlyOffice
implementations. This allows Collabora Online to properly detect stale
documents for cache invalidation and document reload detection, which is
particularly important in multi-node Kubernetes deployments.

- Add Version field to Collabora struct with json:"Version,omitempty" tag
- Add case for KeyVersion in Collabora.SetProperties method
- Update existing Collabora integration tests to verify Version is populated
- Add three unit tests for Version handling in collabora_test.go
- Add integration test verifying Collabora CheckFileInfo response includes Version

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Signed-off-by: David Walter <david.walter@kiteworks.com>

* feat(collaboration): add LastModifiedTime to Collabora CheckFileInfo for conflict detection

Add LastModifiedTime to the Collabora struct to match Microsoft and OnlyOffice,
and implement the X-COOL-WOPI-Timestamp conflict detection PutFile relies on to
use it. Collabora Online tracks the LastModifiedTime it received in
CheckFileInfo and sends it back during PutFile; without this field the WOPI
host has no way to detect that a file changed since Collabora last checked it,
so concurrent edits could silently overwrite each other.

- Add LastModifiedTime field to Collabora struct (json:"LastModifiedTime,omitempty")
  and wire it in Collabora.SetProperties via the existing KeyLastModifiedTime constant
- fileconnector.go already populates KeyLastModifiedTime unconditionally for all
  targets, so no gating changes were needed there
- Add HeaderCoolWopiTimestamp ("X-COOL-WOPI-Timestamp") constant and thread it
  from HttpAdapter.PutFile through the ContentConnectorService.PutFile interface
- ContentConnector.PutFile compares the client-supplied timestamp against the
  file's current mtime and returns a new NewResponseCOOLConflict() (409,
  COOLStatusCode 1010) on mismatch; an empty timestamp (Microsoft/OnlyOffice,
  and file-creation call sites in PutRelativeFileSuggested/Relative) skips the
  check entirely, so existing WOPI clients see no behavior change
- Hand-updated the mockery-generated ContentConnectorService mock (mockery
  itself fails to build under the local Go toolchain) and every PutFile call
  site/mock expectation across fileconnector.go, fileconnector_test.go,
  contentconnector_test.go and httpadapter_test.go for the new 5-arg signature
- Add fileinfo/collabora_test.go unit tests for LastModifiedTime SetProperties/
  JSON marshalling/omitempty, update the 3 existing Collabora CheckFileInfo
  integration tests with the expected LastModifiedTime, and add PutFile tests
  covering COOL timestamp mismatch (409) and match (success) in
  contentconnector_test.go

🤖 Generated with Claude Code

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Signed-off-by: David Walter <david.walter@kiteworks.com>

* fix(collaboration): handle nil Mtime and add HttpAdapter test coverage for COOL WOPI timestamp

The COOL conflict-detection check in ContentConnector.PutFile treated a
nil Mtime as an automatic mismatch, causing a permanent 409 on every
save for files with no recorded mtime. Skip the comparison (fail open)
when Mtime is nil, matching CheckFileInfo's fallback posture. Also add
a regression test for that case, plus a test asserting HttpAdapter.PutFile
correctly reads the X-COOL-WOPI-Timestamp header and passes it through
to the content connector, which previously had no coverage.

Signed-off-by: David Walter <david.walter@kiteworks.com>

* feat(collaboration): add ReadOnly to Collabora WOPI CheckFileInfo

Add ReadOnly to the Collabora struct to match Microsoft and OnlyOffice, and
populate it in CheckFileInfo for all three targets. KeyReadOnly already
existed as a constant and both Microsoft.SetProperties and
OnlyOffice.SetProperties already had a `case KeyReadOnly:`, but nothing in
fileconnector.go ever put a value into the properties map for it - so
ReadOnly was silently false for every WOPI target, regardless of whether the
user actually had write access.

- Add ReadOnly field to the Collabora struct (json:"ReadOnly", no omitempty,
  consistent with Microsoft/OnlyOffice since false is meaningful) and wire it
  in Collabora.SetProperties via the existing KeyReadOnly constant
- In fileconnector.go's CheckFileInfo, set
  infoMap[fileinfo.KeyReadOnly] = wopiContext.ViewMode != VIEW_MODE_READ_WRITE
  unconditionally for all targets. wopiContext.ViewMode is already resolved
  upstream from the actual CS3 permissions, space status and lock state, so
  this derives ReadOnly from that single source of truth instead of
  re-deriving the same signals in the connector
- Add fileinfo/collabora_test.go unit tests for ReadOnly SetProperties (true/
  false) and JSON marshalling (asserting the field is present for both true
  and false, since there is no omitempty)
- Add two new CheckFileInfo integration tests asserting ReadOnly=true for a
  view-only mode and ReadOnly=false for read-write, and add ReadOnly: true to
  the 4 existing CheckFileInfo integration tests that assert a full
  Microsoft/Collabora/OnlyOffice struct under a non-read-write ViewMode
  (the 2 ViewMode assignments in the Lock/GetLock test block were left
  untouched since those tests don't assert against a FileInfo struct)

🤖 Generated with Claude Code

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Signed-off-by: David Walter <david.walter@kiteworks.com>

* feat(collaboration): add SupportsUpdate to Collabora WOPI CheckFileInfo

Signed-off-by: David Walter <david.walter@kiteworks.com>

* fix(collaboration): add missing godoc comment to Collabora.SupportsUpdate

Signed-off-by: David Walter <david.walter@kiteworks.com>

* feat(collaboration): add IsAnonymousUser to Collabora WOPI CheckFileInfo

Implement support for the IsAnonymousUser property in the Collabora struct,
enabling Collabora Online to distinguish between authenticated and anonymous
users (public share access). This property is derived from the user context's
public-share-role indicator and is already computed in fileconnector.go.

Changes:
- Add IsAnonymousUser field to Collabora struct with omitempty tag
- Wire KeyIsAnonymousUser case in SetProperties
- Add unit tests: SetProperties behavior, JSON omit/include when false/true
- Add integration tests: anonymous user context returns true, authenticated
  user returns false, UserId still populated for anonymous users

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Signed-off-by: David Walter <david.walter@kiteworks.com>

* feat(collaboration): add URL properties to Collabora WOPI CheckFileInfo

Add the 7 MS-WOPI file URL properties (CloseUrl, DownloadUrl,
FileSharingUrl, FileVersionUrl, HostEditUrl, HostViewUrl, SignoutUrl)
to the Collabora fileinfo struct, mirroring the Microsoft struct's
existing fields and JSON tags. This is struct/SetProperties wiring
only; fileconnector.go population follows in a subsequent commit.

SignoutUrl is intentionally left unpopulated in CheckFileInfo (no
fileconnector.go change): the collaboration service has no OIDC
issuer/logout configuration to build a real sign-out URL from, so
Collabora reaches parity with Microsoft/OnlyOffice's existing
"field exists but is never populated" gap rather than introducing a
new one.

Signed-off-by: David Walter <david.walter@kiteworks.com>

* feat(collaboration): populate CloseURL and DownloadURL in CheckFileInfo

CloseURL and DownloadURL were never populated in CheckFileInfo for any
WOPI target (Microsoft, OnlyOffice, or Collabora), despite Microsoft's
struct having had these fields all along.

- CloseURL reuses the existing parentFolderURL (the same "folder
  containing the file" URL already used for BreadcrumbFolderURL)
  rather than building a second URL for the same concept. This flows
  through the shared infoMap, so it now also reaches Microsoft and
  OnlyOffice, both of which already declare KeyCloseURL in their
  SetProperties switch; existing full-struct-equality test
  expectations are updated accordingly.

- DownloadURL is built by a new createFileDownloadURL helper pointing
  at this service's own GET /wopi/files/{fileid}/contents route,
  authenticated with a freshly generated WOPI access token. It shares
  its "generate token + build hashed-resource-id path + attach
  access_token query param" logic with the existing template
  createDownloadURL via an extracted createWopiResourceURL helper,
  rather than duplicating it. Population is defensive: if WOPI token
  generation fails, DownloadURL is simply omitted (logged) instead of
  failing the whole CheckFileInfo request, mirroring the existing
  TemplateSource pattern.

HostViewURL, HostEditURL, FileSharingURL, and FileVersionURL needed no
fileconnector.go change - they were already unconditionally computed
into infoMap; only Collabora's struct lacked the fields to receive
them (added in the previous commit).

Adds integration test coverage for: CloseURL/BreadcrumbFolderURL
reuse, HostEditURL vs HostViewURL distinctness, the DownloadURL route
pattern, and graceful omission of DownloadURL when WOPI token
generation fails (via ShortTokens with no store configured) without
the overall request failing.

Signed-off-by: David Walter <david.walter@kiteworks.com>

* feat(collaboration): complete Breadcrumb properties in Collabora WOPI CheckFileInfo

Add the four Breadcrumb* fields to the Collabora fileinfo struct that were
already present on Microsoft/OnlyOffice (BreadcrumbFolderName/URL just
needed struct wiring; BreadcrumbBrandName/URL needed new logic in
CheckFileInfo, derived from the CS3 StorageSpace Name/Root).

BreadcrumbBrandURL is withheld for public-share (anonymous) access, mirroring
the existing precedent for parentFolderURL/CloseURL, since it would expose
an internal space/resource id an anonymous user has no other way to reach.
BreadcrumbBrandName is just a display string and stays populated either way.

Also guards the new brand URL construction against a nil space root so it
degrades to an empty string instead of a misleading bare ".../f" URL when
no space info is available.

🤖 Generated with Claude Code

Signed-off-by: David Walter <david.walter@kiteworks.com>

* test(collaboration): cover BreadcrumbBrandURL when space has no root

Add a new test case to verify that when a StorageSpace has a Name but
a nil Root, the BreadcrumbBrandName is populated while BreadcrumbBrandURL
remains empty, ensuring the nil-guard doesn't allow malformed URLs.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Signed-off-by: David Walter <david.walter@kiteworks.com>

* feat(collaboration): add PostMessage properties to Collabora WOPI CheckFileInfo

Add ClosePostMessage, EditModePostMessage, EditNotificationPostMessage,
FileSharingPostMessage, and FileVersionPostMessage to the Collabora
fileinfo struct with SetProperties wiring and godoc comments, mirroring
what OnlyOffice already exposes.

Only EditModePostMessage is actually populated in CheckFileInfo, gated
to the Collabora target: the oCIS web frontend's iframe wrapper
(web-app-external/src/App.vue, shared by all WOPI targets) only has a
real postMessage handler for UI_Edit today. The other four flags are
left unset so Collabora falls back to the corresponding URL properties
(HostEditURL/HostViewURL/FileSharingURL/FileVersionURL, added in an
earlier task) instead of firing PostMessages nobody listens for.

Because OnlyOffice's SetProperties already implements these same keys,
the Collabora-only behavior requires an explicit `if` gate on
f.cfg.App.Product rather than an unconditional map write, to avoid
silently changing OnlyOffice's current (all-absent) behavior.

Signed-off-by: David Walter <david.walter@kiteworks.com>

* feat(collaboration): add Collabora-specific IsUserLocked and IsAdminUser to WOPI CheckFileInfo

Add the two Collabora-only WOPI CheckFileInfo properties: IsUserLocked
(applies coolwsd.xml locked_commands to the user) and IsAdminUser
(unlocks Collabora's server audit panel).

- IsUserLocked is derived from the existing "secure view" condition
  already used to gate DisableExport/DisableCopy/DisablePrint/
  WatermarkText (ViewMode == VIEW_MODE_VIEW_ONLY with a non-empty
  ViewOnlyToken), applied regardless of public-share vs authenticated
  user.
- IsAdminUser is derived from the CS3 user's Opaque.Map["roles"] JSON
  array (the same raw data ocis-pkg/middleware/account.go lifts into
  go-micro metadata), compared against
  defaults.BundleUUIDRoleAdmin only - SpaceAdmin and other roles do
  not qualify.

Both keys have no matching SetProperties case in Microsoft/OnlyOffice,
so they are silently dropped for those targets, consistent with the
existing pattern for other Collabora-only properties in this
connector. No new config surface was added, matching the scoping
approach used throughout this properties-gap series.

🤖 Generated with Claude Code

Signed-off-by: David Walter <david.walter@kiteworks.com>

* test(collaboration): remove redundant Collabora omitempty test duplicates

TestCollaboraVersionOmitEmpty and TestCollaboraLastModifiedTimeOmitEmpty
fully duplicated the coverage already provided by
TestCollaboraJSONMarshallingIncludesVersion and
TestCollaboraJSONMarshallingIncludesLastModifiedTime (both already assert
JSON inclusion/omission via a shouldInclude flag). Removing the duplicates
also drops an unused `expected` table field flagged by the final
whole-branch review.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Signed-off-by: David Walter <david.walter@kiteworks.com>

* docs(changelog): add changelog entry for Collabora WOPI CheckFileInfo gaps

Signed-off-by: David Walter <david.walter@kiteworks.com>

* test(collaboration): fix checkFileInfo acceptance tests for ReadOnly derivation

Four "check file info with different mode(s)" scenario outlines
(onlyOffice/fakeOffice, personal space and project space) hardcoded
"ReadOnly": {"const": false} for every view mode. That was accurate only
because ReadOnly was never actually populated in CheckFileInfo before this
PR (it silently defaulted to Go's zero value). Now that ReadOnly correctly
reflects whether the WOPI session grants write access
(ReadOnly = ViewMode != READ_WRITE, the exact negation of UserCanWrite),
"view" and "read" mode responses correctly report ReadOnly: true, which
these tests now assert via a new "read-only" Examples column instead of a
static const.

The "check file info with different view-mode (collabora)" scenario is
unaffected: it never asserted ReadOnly in its schema.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Signed-off-by: David Walter <david.walter@kiteworks.com>

* revert(collaboration): remove X-COOL-WOPI-Timestamp PutFile conflict detection

CI on owncloud/ocis PR #12593 reproducibly failed the e2e test
web/tests/e2e/specs/app-provider/officeSuites.spec.ts:17:3 "create an
OpenDocument file with Collabora" across two independent full CI runs,
timing out after 180s behind a Collabora "document conflict" popup that
intercepts all clicks.

Server logs showed the new PutFile conflict check firing on literally
the first save of a freshly-created document, with a consistent ~8s gap
between the client's cached X-COOL-WOPI-Timestamp and the server's
current mtime that never resolved across 6+ retries over 3+ minutes.
This is most likely oCIS's async post-processing (search indexing,
thumbnailing, etc.) legitimately bumping the file's mtime shortly after
creation - something this comparison can't distinguish from a real
edit conflict, and which Collabora's client doesn't recover from
automatically.

Revert just the conflict-detection portion of task 02: the
coolWopiTimestamp parameter on ContentConnectorService.PutFile / its
implementation, the X-COOL-WOPI-Timestamp header handling in
HttpAdapter.PutFile, and NewResponseCOOLConflict, plus their tests and
mock signatures. The LastModifiedTime WOPI property (and everything
else task 02 added) is untouched and remains fully intact.

🤖 Generated with Claude Code

Signed-off-by: David Walter <david.walter@kiteworks.com>

* test(web): add e2e Playwright coverage for WOPI CheckFileInfo properties

Adds dedicated Playwright specs, each covering both Collabora and
OnlyOffice, for the WOPI CheckFileInfo properties this PR added that
have a genuinely observable, already-proven-safe browser-level signal:

- wopiReadOnly.spec.ts: false for the file owner, true for a
  view-only share recipient (via the existing canEditCollaboraDocument/
  canEditOnlyOfficeDocument-backed userShouldNotBeAbleToEditContentOfResources
  step).
- wopiSupportsUpdate.spec.ts: a new document created via the office
  suite's own "New" menu (PutRelativeFile) persists its content across
  a reopen.
- wopiVersionAndLastModifiedTime.spec.ts: an edit saved by one actor is
  visible to a second actor opening the file afterward, rather than a
  stale cached copy.
- wopiCloseUrl.spec.ts: closing the editor navigates the top-level page
  back into the files app.

All four are built exclusively from step-level helpers already proven
reliable elsewhere in this suite (officeSuites.spec.ts, secureView.spec.ts)
- no new selectors into Collabora's or OnlyOffice's own iframe DOM.

Not added: dedicated e2e tests for BreadcrumbBrandName/Url,
EditModePostMessage, IsUserLocked, and IsAdminUser. CheckFileInfo is a
server-to-server call the office suite's own backend makes directly to
the collaboration service - it is never visible to the browser, so
Playwright cannot observe the JSON response for any property. These
four also have no independently observable browser effect without
either inventing unverified selectors into third-party iframe internals
(breadcrumb bar, edit-mode button) or Collabora-side configuration
(locked_commands, audit panel) this test environment doesn't set up.
They remain correctly covered by the Go unit/integration tests
(fileinfo/collabora_test.go, fileconnector_test.go) and the
tests/acceptance/features/apiCollaboration/checkFileInfo.feature
acceptance suite, which assert the actual JSON response server-side.

An initial IsAnonymousUser spec was written and dropped after review:
it only asserted that content loads, which IsAnonymousUser does not
gate, making it indistinguishable from a regression (already covered
correctly at the Go level in fileconnector_test.go).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Signed-off-by: David Walter <david.walter@kiteworks.com>

* fix(web): reformat wopiVersionAndLastModifiedTime.spec.ts for prettier

pnpm check:format (web-build-test CI job) flagged the test.describe()
call: its 3 arguments (title, options, callback) didn't fit within
this repo's printWidth 100 on one line, so prettier expects them
wrapped one per line. Reformatted to match and reindented the
describe block body accordingly. No logic change.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Signed-off-by: David Walter <david.walter@kiteworks.com>

* fix(collaboration): address PR #12593 review findings

- Restructure the VIEW_ONLY watermark check to nest inside the
  ViewOnlyToken check instead of repeating the condition, per
  jvillafanez's review comment.
- Add a reva token mint/dismantle round-trip test covering the admin
  role Opaque entry, exercising the real JWT serialization seam
  IsAdminUser depends on rather than only direct context injection,
  per DeepDiver1975's review.
- Correct the changelog entry: ReadOnly/CloseUrl (and DownloadUrl for
  Microsoft) already had matching `case` handling in microsoft.go/
  onlyoffice.go, so populating them unconditionally changes those
  targets' output too, not just Collabora's. Only IsUserLocked/
  IsAdminUser are genuinely Collabora-only.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Signed-off-by: David Walter <david.walter@kiteworks.com>

---------

Signed-off-by: David Walter <david.walter@kiteworks.com>
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
Co-authored-by: Juan Pablo Villafañez <jpvillafanez@izertis.com>
2026-08-25 18:01:56 +02:00
Prajwol Amatya
e30b6fbadd [tests-only][full-ci] test: add test to share resources from vault (#12608)
test: add test to share resources from vault

Signed-off-by: Prajwol Amatya <prajwolamatya11@gmail.com>
2026-08-24 12:01:48 +05:45
Prajwol Amatya
448c57c1cf [full-ci] test: generate code coverage report by running acceptance test (#12706)
* test: generate code coverage report by running acceptance test

Signed-off-by: Prajwol Amatya <prajwolamatya11@gmail.com>

* test: rename debug build to ocis

Signed-off-by: Prajwol Amatya <prajwolamatya11@gmail.com>

---------

Signed-off-by: Prajwol Amatya <prajwolamatya11@gmail.com>
2026-08-24 10:01:58 +05:45
Prajwol Amatya
85d8e7c62c [tests-only][full-ci] test: wait until qr is fully loaded (#12826)
test: wait until QR is loaded

Signed-off-by: Prajwol Amatya <prajwolamatya11@gmail.com>
2026-08-21 14:04:06 +05:45
Kavita gautam
c828e41cba chore: Add Vault Mode CI setup for E2E tests (#12577)
* feat: vault mode access control and mfa on vault entry

* chore: vault mode ci setup for e2e tests

chore: vault mode ci setup

* test: restore web packages changes

Signed-off-by: Kavita Gautam <kavita@jankaritech.com>

* test: remove keycloak certs

Signed-off-by: Kavita Gautam <kavita@jankaritech.com>

* test: set keycloak server envs

Signed-off-by: Kavita Gautam <kavita@jankaritech.com>

* test: adding csp file

Signed-off-by: Kavita Gautam <kavita@jankaritech.com>

* test: adding keycloak config

Signed-off-by: Kavita Gautam <kavita@jankaritech.com>

* test: adding scope with email acr

Signed-off-by: Kavita Gautam <kavita@jankaritech.com>

* test: exclude vault storage from parallel e2e tests

Signed-off-by: Kavita Gautam <kavita@jankaritech.com>

* test: remove debugging codes

Signed-off-by: Kavita Gautam <kavita@jankaritech.com>

* test: handle vault mode in keycloak group setup

* test: revert some configs

Signed-off-by: Kavita Gautam <kavita@jankaritech.com>

* test: updating the vault pageObject layout

Signed-off-by: Kavita Gautam <kavita@jankaritech.com>

* fix: reusing otp authentication of mfa

Signed-off-by: Kavita Gautam <kavita@jankaritech.com>

* fix: update userAuthenticatesWithOTP function

* fix: use a new OIDC authorization-code login for OCIS token

---------

Signed-off-by: Kavita Gautam <kavita@jankaritech.com>
2026-08-20 16:26:01 +05:45
Lukas Hirt
00aeefac3b [tests-only] test: [OCISDEV-861] pin public-link visibility in unfiltered share listings (#12783)
* test: [OCISDEV-861] pin public-link visibility in unfiltered share listings

ListPublicShares issued one gateway Stat per public link not created by the
calling user, which exceeded the request deadline on tenants with thousands of
links. The fix lands in reva; these scenarios pin the user-visible contract so
that any future attempt to replace the permission check cannot silently change
who sees which links.

Adds one OCS scenario, deliberately untagged so it also runs in reva's CI, and
three Graph scenarios covering /me/drive/sharedByMe: a space member sees a
co-member's link, a non-member does not, and a non-member holding ListGrants on
the individual resource does.

Signed-off-by: Lukas Hirt <info@hirt.cz>

* test: cover more space roles and reuse standard user in sharedByMe scenarios

Extends the "space member sees link shares" scenario to cover Space
Editor and Space Viewer in addition to Manager, and swaps Carol for
Brian in the non-member scenarios since Brian is already provisioned
in the feature's Background, dropping a redundant creation step.

Signed-off-by: Lukas Hirt <info@hirt.cz>

---------

Signed-off-by: Lukas Hirt <info@hirt.cz>
2026-08-19 21:28:16 +02:00
Pradip Subedi
ed1bc5ec9f [tests-only][full-ci] test(apiGraphGroup): add acceptance test for configurable LDAP group object class (#12751)
* test(apiGraphGroup): add acceptance test for configurable LDAP group object class

* test(apiGraphGroup): make LDAP object class test portable across test environments

* test: use multilines for message assertion
2026-08-18 16:42:55 +05:45
Prajwol Amatya
4b4c630540 [tests-only][full-ci] test: restore totp for user in before scenario and rename the step name to ckeck acr value from jwt token (#12748)
* test: move deleteUserTotpCredentials to before scenario

Signed-off-by: Prajwol Amatya <prajwolamatya11@gmail.com>

* test: refactor the step to check acr vaule

Signed-off-by: Prajwol Amatya <prajwolamatya11@gmail.com>

---------

Signed-off-by: Prajwol Amatya <prajwolamatya11@gmail.com>
2026-08-18 14:36:40 +05:45
Nalem7
1d319a4552 [tests-only][full-ci] add retry logic for file copy requests (#12781)
* test: add retry logic for file copy and move requests

Signed-off-by: nabim777 <nabinalemagar019@gmail.com>

* test: add retry logic for file copy request only

Signed-off-by: nabim777 <nabinalemagar019@gmail.com>

* test: add retry once for 500 status code only

Signed-off-by: nabim777 <nabinalemagar019@gmail.com>

---------

Signed-off-by: nabim777 <nabinalemagar019@gmail.com>
2026-08-17 10:46:51 +05:45
Nalem7
e75c48765c [tests-only][full-ci] test: add bug coverage tests for tag removal (#12655)
test: add coverage for idempotent tag removal

Signed-off-by: nabim777 <nabinalemagar019@gmail.com>
2026-08-14 17:03:41 +05:45
Gaurav Soni
ef41e736d1 fix: [OCISDEV-388] renaming a resource to its current name is a no-op (#12784)
A MOVE whose source and destination resolve to the same resource is now
answered with 204 No Content server side instead of a confusing 403 or
404, and instead of 409 Conflict on the id based dav route, so every
client behaves the same way. The no-op still requires the move
permission.

The server-side guard lives in reva (owncloud/reva#708 and the follow-up
owncloud/reva#713, which moves the guard above the recursion checks so it
is also reached when the request addresses the resource by its id).
Pulled in here by bumping reva to v2.0.0-20260813121157-d386075a0421.
vendor/ was regenerated with `go mod vendor`; no hand edits.

On the test side the @issue-1976 tags are dropped from the five MOVE
feature files and the corresponding entries are removed from both
expected-failures lists. Scenario Outlines that mix roles with and
without the move permission parameterize the expected status in an extra
http-status-code Examples column rather than being split into duplicate
scenarios. The gherlint newline_before_scenario rule is configured as
["error", 2, true], counting tag lines toward the total, so the eight
scenarios that lost their tag get back the blank line it occupied.

Drop the "viewer" row from the same-name Examples table in
moveByFileId.feature: "viewer" is not a valid space role for a
permissionsRole invitation, so the step errored with
Role 'viewer' not found, and the "Space Viewer" row already covers
the 403.
2026-08-14 10:50:35 +02:00
Nalem7
86105b86af [tests-only][full-ci] test: add retry once for space creation wherever required (#12785)
test: add retry once for space creation

Signed-off-by: nabim777 <nabinalemagar019@gmail.com>
2026-08-14 12:11:34 +05:45
Pradip Subedi
6dc967e583 [tests-only][full-ci] test: enable secure viewer role before upload in moveReceivedShare scenarios (#12786)
test: enable secure viewer role before upload in moveReceivedShare scenarios
2026-08-14 09:18:37 +05:45
Pradip Subedi
af7d39d1b6 [tests-only][full-ci] test: Add acceptance test for empty CallToAction notification translation fix (#12616)
* test: add tests email after changing default language

* test: fix other feature files cleanup

* test: restore unrelated files

* test: add missing unshare strings to test translation fixture

* test: add missing space in email body

* test: assert full translated unshare email and sync userlog fixture

* test: remove unused negative email content step
2026-08-14 09:15:56 +05:45
Lukas Hirt
e21e19470b feat(app-store): update app store repository to use ownCloud Marketplace (#12793)
Signed-off-by: Lukas Hirt <info@hirt.cz>
2026-08-13 21:46:59 +02:00
Pradip Subedi
5a2c1cc351 [tests-only] test: add vault public link scenarios (#12735)
test: add vault public link rejection scenarios
2026-08-13 14:53:57 +05:45
Nalem7
4684d3d4ee [tests-only][full-ci] test: add test for space manager removing members (#12776)
test: add test for space manager removing members

Signed-off-by: nabim777 <nabinalemagar019@gmail.com>
2026-08-13 11:42:30 +05:45
Michal Klos
6d3e10c120 fix: [OCISDEV-660] harden GetUserDrive (#12742) 2026-08-11 08:27:14 +00:00
isha
40d257726a [test-only][k8s]test(ci): run test on kubernetes deployment (#12654)
* test(ci): run test on k8s deployment

* chore: update authapp in config

* chore: update storageusers in config

* chore: update version and envs

* chore: normalize service name
2026-08-07 11:31:05 +05:45
Prajwol Amatya
42cb013e8f [tests-only] test: search resources in vault (#12685)
* test: search resources in vault

Signed-off-by: Prajwol Amatya <prajwolamatya11@gmail.com>

* test: add test to search using content and tags

Signed-off-by: Prajwol Amatya <prajwolamatya11@gmail.com>

* test: add tika service for vault tests

Signed-off-by: Prajwol Amatya <prajwolamatya11@gmail.com>

---------

Signed-off-by: Prajwol Amatya <prajwolamatya11@gmail.com>
2026-08-07 09:11:49 +05:45
Nalem7
78313a52fe [tests-only] add for spaceEditorWithoutVersionsWithoutTrashbin role (#12681)
test: add for spaceEditorWithoutVersionsWithoutTrashbin role

Signed-off-by: nabim777 <nabinalemagar019@gmail.com>
2026-08-06 11:49:34 +05:45
Pradip Subedi
58a0bd9dea [tests-only][full-ci] test(cli): add blobstore get and check CLI tests (#12505)
* test(cli): add blobstore check and get CLI test scenarios

* ci: add get blob step

* test(cli): add valid blob size, --path, by-ID, and malformed path blobstore tests

* test: include round-trip verifications

* test: swap check assertions from exact-match to substring-contains
2026-08-05 12:08:59 +05:45
Nalem7
afa8790227 [tests-only] add graph API tests for password change re-authentication (#12664)
test: add graph API tests for password change re-authentication

Signed-off-by: nabim777 <nabinalemagar019@gmail.com>
2026-08-05 11:46:39 +05:45
Prajwol Amatya
d6bc1e2400 [tests-only] test: add test to add user to space in vault storage (#12610)
test: add test to add user to space

Signed-off-by: Prajwol Amatya <prajwolamatya11@gmail.com>
2026-07-30 12:07:41 +05:45
Prajwol Amatya
91f0671153 [tests-only] test: add test to copy resources from drive to vault and from vault to drive (#12576)
test: add test to copy resources from drive to vault and vice versa

Signed-off-by: Prajwol Amatya <prajwolamatya11@gmail.com>
2026-07-28 14:23:42 +05:45
Prajwol Amatya
5eb6366a6c [test-only] test: add test to check vault mode capabilities endpoint response (#12571)
* test: add test to check vault mode capabilities endpoint response

Signed-off-by: Prajwol Amatya <prajwolamatya11@gmail.com>

* test: add cleanup for Keycloak related configs after each test

Signed-off-by: Prajwol Amatya <prajwolamatya11@gmail.com>

* test: use ocs version 2

Signed-off-by: Prajwol Amatya <prajwolamatya11@gmail.com>

---------

Signed-off-by: Prajwol Amatya <prajwolamatya11@gmail.com>
2026-07-15 14:12:08 +05:45