The CS3 API Validator is an end-to-end test suite for implementations of the CS3 APIs. It runs human-readable Gherkin test scenarios against a CS3 API provider, serving both as a BDD development tool and as a litmus test to verify that an implementation complies with the CS3 API specification. The tool requires only the network address of a running CS3 API provider and has no external dependencies beyond Go.
This tool is part of the ownCloud Infinite Scale (oCIS) ecosystem and is used to validate CS3 API compliance. It helps keep different CS3 API implementations in sync and fosters interoperability across the CS3 community.
This component is part of the oCIS Docker image.
Follow the steps below to run the CS3 API validation suite.
git clone git@github.com:owncloud/cs3api-validator.git
cd cs3api-validator
go test -v # default network address is localhost:9142Add Gherkin feature files to the features/ directory, then implement the step definitions in Go. Run go run github.com/cucumber/godog/cmd/godog@master to see which steps need implementation.
Instructions for running and configuring the CS3 API validation suite:
Run with the built-in go test command. The --endpoint flag sets the network address of the system under test (defaults to localhost:9142):
go test --endpoint=your-addr:port -vTo build a standalone test binary:
go test -c
./cs3api-validator.test --endpoint=your-addr:portUse Godog tags to select which features to run:
go test --godog.tags="@smoke" -v- BDD development: Run locally during development against a well-defined set of basic CS3 API operations. Human-readable Gherkin scenarios serve as both tests and API documentation.
- Litmus testing: Confirm that a CS3 API implementation is spec-compliant and supports basic operations, helping keep different implementations in sync.
- Add Gherkin feature files to the
features/directory - Run
go run github.com/cucumber/godog/cmd/godog@masterto get step definition stubs - Implement steps in a
*_test.gofile using theFeatureContextstruct as a receiver for sharing state between steps
Star this repo and Watch for release notifications!
We welcome contributions! Please read the Contributing Guidelines and our Code of Conduct before getting started.
- Rebase Early, Rebase Often! We use a rebase workflow. Always rebase on the target branch before submitting a PR.
- Dependabot: Automated dependency updates are managed via Dependabot. Review and merge dependency PRs promptly.
- Signed Commits: All commits must be PGP/GPG signed. See GitHub's signing guide.
- DCO Sign-off: Every commit must carry a
Signed-off-byline:git commit -s -S -m "your commit message" - GitHub Actions Policy: Workflows may only use actions that are (a) owned by
owncloud, (b) created by GitHub (actions/*), or (c) verified in the GitHub Marketplace.
Do not open a public GitHub issue for security vulnerabilities.
Report vulnerabilities at https://security.owncloud.com -- see SECURITY.md.
Bug bounty: YesWeHack ownCloud Program
This project is licensed under the Apache-2.0.
The Kiteworks Open Source Program Office, operating under the ownCloud brand, launched on May 5, 2026, to steward the open source ecosystem around ownCloud's products. The OSPO ensures transparent governance, license compliance, community health, and sustainable collaboration between the open source community and Kiteworks, which acquired ownCloud in 2023.
- OSPO Home: https://kiteworks.com/opensource
- GitHub: https://github.com/owncloud
- ownCloud: https://owncloud.com
For questions about the OSPO or licensing, contact ospo@kiteworks.com.
License status: This repository is already licensed under Apache-2.0 -- the OSPO target license. No migration is required.