Skip to content

CS3 API Validator

License ownCloud OSPO Docker Hub

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.

Part of oCIS

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.

Getting Started

Follow the steps below to run the CS3 API validation suite.

Quick Start

git clone git@github.com:owncloud/cs3api-validator.git
cd cs3api-validator
go test -v  # default network address is localhost:9142

Adding New Test Features

Add 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.

Usage

Instructions for running and configuring the CS3 API validation suite:

Running Tests

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 -v

To build a standalone test binary:

go test -c
./cs3api-validator.test --endpoint=your-addr:port

Filtering with Tags

Use Godog tags to select which features to run:

go test --godog.tags="@smoke" -v

Purpose

  • 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.

Adding New Features

  1. Add Gherkin feature files to the features/ directory
  2. Run go run github.com/cucumber/godog/cmd/godog@master to get step definition stubs
  3. Implement steps in a *_test.go file using the FeatureContext struct as a receiver for sharing state between steps

Documentation

Community & Support

Star this repo and Watch for release notifications!

Contributing

We welcome contributions! Please read the Contributing Guidelines and our Code of Conduct before getting started.

Workflow

  • 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-by line:
    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.

Security

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

License

This project is licensed under the Apache-2.0.

About the ownCloud OSPO

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.

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.

Releases

Packages

Used by

Contributors

Languages