{"id":48814626,"url":"https://github.com/opengeospatial/ets-wfs20","last_synced_at":"2026-04-14T10:33:52.661Z","repository":{"id":17025524,"uuid":"19789598","full_name":"opengeospatial/ets-wfs20","owner":"opengeospatial","description":"Executable Test Suite for WFS 2.0","archived":false,"fork":false,"pushed_at":"2025-11-10T07:22:39.000Z","size":4725,"stargazers_count":10,"open_issues_count":15,"forks_count":12,"subscribers_count":17,"default_branch":"master","last_synced_at":"2025-11-10T09:15:09.577Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/opengeospatial.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2014-05-14T17:43:04.000Z","updated_at":"2025-02-10T19:37:42.000Z","dependencies_parsed_at":"2024-01-18T22:23:43.699Z","dependency_job_id":"12149ab0-39a1-456d-bbfe-573e9319b75a","html_url":"https://github.com/opengeospatial/ets-wfs20","commit_stats":null,"previous_names":[],"tags_count":30,"template":false,"template_full_name":null,"purl":"pkg:github/opengeospatial/ets-wfs20","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/opengeospatial%2Fets-wfs20","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/opengeospatial%2Fets-wfs20/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/opengeospatial%2Fets-wfs20/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/opengeospatial%2Fets-wfs20/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/opengeospatial","download_url":"https://codeload.github.com/opengeospatial/ets-wfs20/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/opengeospatial%2Fets-wfs20/sbom","scorecard":{"id":709479,"data":{"date":"2025-08-11","repo":{"name":"github.com/opengeospatial/ets-wfs20","commit":"6a0cafd024adeeb7d5e2df457c7b738b24e0dccb"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":3.1,"checks":[{"name":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Dangerous-Workflow","score":-1,"reason":"no workflows found","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Code-Review","score":3,"reason":"Found 4/13 approved changesets -- score normalized to 3","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"License","score":9,"reason":"license file detected","details":["Info: project has a license file: LICENSE.txt:0","Warn: project license file does not contain an FSF or OSI license."],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: containerImage not pinned by hash: src/docker/Dockerfile:1: pin your Docker image by updating tomcat:10.1-jre17 to tomcat:10.1-jre17@sha256:0e105d9dd53280dfea57aaa7339d85a9dab6e9593d09ff66016bceee5f8e42aa","Info:   0 out of   1 containerImage dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 21 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-22T07:43:28.222Z","repository_id":17025524,"created_at":"2025-08-22T07:43:28.222Z","updated_at":"2025-08-22T07:43:28.222Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31793217,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-14T02:24:21.117Z","status":"ssl_error","status_checked_at":"2026-04-14T02:24:20.627Z","response_time":153,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-04-14T10:33:52.582Z","updated_at":"2026-04-14T10:33:52.652Z","avatar_url":"https://github.com/opengeospatial.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"## WFS 2.0 Conformance Test Suite\n\n### Scope\n\nThis test suite verifies that a Web Feature Service (WFS) 2.0 implementation conforms \nto [OGC 09-025r2](http://docs.opengeospatial.org/is/09-025r2/09-025r2.html)) and related \nstandards. Tests exist for the conformance classes listed below:\u003c/p\u003e\n\n- **Simple WFS**: Implements the following operations: `GetCapabilities`, `DescribeFeatureType`, \n`ListStoredQueries`, `DescribeStoredQueries`, and the `GetFeature` operation with at least the \nStoredQuery action (GetFeatureById).\n- **Basic WFS**: As for **Simple WFS**, plus the `GetFeature` operation with the Query \naction and the `GetPropertyValue` operation.\n- **Transactional WFS**: As for **Basic WFS**, plus the `Transaction` operation.\n- **Locking WFS**: As for **Transactional WFS**, plus at least one of the `GetFeatureWithLock` \nor `LockFeature` operations.\n- **HTTP GET**\n- **HTTP POST**\n- **SOAP**\n- **Response paging**\n- **Manage stored queries**\n- **Feature versions**\n- **Standard joins**\n- **Spatial joins**\n- **Temporal joins**\n\n\nThe tests for WFS capabilities are supplemented by tests imported from the \n[GML 3.2 test suite](https://github.com/opengeospatial/ets-gml32); these GML \nconformance classes apply to all WFS 2.0 implementations:\n\n- _All GML application schemas_\n- _GML application schemas defining features and feature collections_\n\nThe WFS 2.0 test suite is schema-aware in the sense that the WFS under test does not \nneed to support any particular application schemas or to be pre-loaded with special test \ndata. However, the following preconditions must be satisfied:\n\n* The GML application schema meets the requirements of the GML conformance class \n\"GML application schemas defining features and feature collections\" (ISO 19136, A.1.4).\n* Data are available for at least one feature type listed in the capabilities \ndocument.\n* The service capabilities description contains all required elements in accord \nwith the \"Simple WFS\" conformance class.\n\nWhich tests are actually executed is determined by the content of the WFS capabilities \ndocument that is submitted; in particular, the test run is driven by the conformance \nclasses that the implementation under test (IUT) claims to support. There is a service constraint \ndefined for each conformance class, except for the mandatory \"Simple WFS\" conformance class \n(see OGC 09-025r2, Table 13). The boolean-valued service constraints are listed in the \nOperationsMetadata section of the capabilities document as shown below.\n\n    \u003cOperationsMetadata xmlns=\"http://www.opengis.net/ows/1.1\"\u003e\n      \u003c!-- Operation and common Parameter definitions are omitted --\u003e\n      \u003cConstraint name=\"ImplementsBasicWFS\"\u003e\n        \u003cAllowedValues\u003e\n          \u003cValue\u003eTRUE\u003c/Value\u003e\n          \u003cValue\u003eFALSE\u003c/Value\u003e\n        \u003c/AllowedValues\u003e\n        \u003cDefaultValue\u003eTRUE\u003c/DefaultValue\u003e\n      \u003c/Constraint\u003e\n      \u003cConstraint name=\"KVPEncoding\"\u003e\n        \u003cAllowedValues\u003e\n          \u003cValue\u003eTRUE\u003c/Value\u003e\n          \u003cValue\u003eFALSE\u003c/Value\u003e\n        \u003c/AllowedValues\u003e\n        \u003cDefaultValue\u003eTRUE\u003c/DefaultValue\u003e\n      \u003c/Constraint\u003e\n      \u003cConstraint name=\"XMLEncoding\"\u003e\n        \u003cAllowedValues\u003e\n          \u003cValue\u003eTRUE\u003c/Value\u003e\n          \u003cValue\u003eFALSE\u003c/Value\u003e\n        \u003c/AllowedValues\u003e\n        \u003cDefaultValue\u003eTRUE\u003c/DefaultValue\u003e\n      \u003c/Constraint\u003e\n    \u003c/OperationsMetadata\u003e\n\nSome optional conformance classes are not currently covered by the test suite:\n\n* Inheritance\n* Remote resolve\n\nVisit the [project documentation website](http://opengeospatial.github.io/ets-wfs20/) \nfor more information, including the API documentation.\n\n\n### How to run the tests\n\n#### Integrated development environment (IDE)\nYou can use a Java IDE such as Eclipse, NetBeans, or IntelliJ to run the test suite. \nClone the repository and build the project. The runtime configuration is summarized below.\n\n__Main class__: `org.opengis.cite.iso19142.TestNGController`\n\n__Arguments__: The first argument must refer to an XML properties file containing the \nrequired test run argument (a reference to a WFS 2.0 capabilities document). If not \nspecified, the default location at `${user.home}/test-run-props.xml` will be used.\n\nYou can modify the default settings in the sample [test-run-props.xml](src/main/config/test-run-props.xml) \nfile. The value of the `wfs` argument must be an absolute URI that adheres to the 'http' \nor 'file' schemes.\n\n```xml\n\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\n\u003c!DOCTYPE properties SYSTEM \"http://java.sun.com/dtd/properties.dtd\"\u003e\n\u003cproperties version=\"1.0\"\u003e\n    \u003ccomment\u003eTest run arguments (ets-wfs20)\u003c/comment\u003e\n\t\u003centry key=\"wfs\"\u003ehttp://localhost:9090/wfs2/capabilities.xml\u003c/entry\u003e\n\u003c/properties\u003e\n```\n\nThe TestNG results file (testng-results.xml) will be written to a subdirectory \nin ${user.home}/testng/ having a UUID value as its name.\n\n#### Command shell (terminal)\n\nOne of the build artifacts is an \"all-in-one\" JAR file that includes the test \nsuite with all of its dependencies. This makes it very easy to execute the test \nsuite in a command shell like so:\n\n`java -jar ets-wfs20-${version}-aio.jar  [test-run-props.xml]`\n\n#### Docker\n\nThis test suite comes with a Dockerfile which can be used to easily setup the OGC test harness with\nthe test suite. Details can be found on [Create Docker Image and create and start Docker Container](https://github.com/opengeospatial/cite/wiki/How-to-create-Docker-Images-of-test-suites#create-docker-image-and-create-and-start-docker-container).\n\n#### OGC test harness\n\nUse [TEAM Engine](https://github.com/opengeospatial/teamengine), the official \nOGC test harness. The latest test suite release should be available at the \n[beta testing facility](http://cite.opengeospatial.org/te2/). You can also \n[build and deploy](https://github.com/opengeospatial/teamengine) the test \nharness yourself and use a local installation.\n\n\n### How to contribute\n\nIf you would like to get involved, you can:\n\n* [Report an issue](https://github.com/opengeospatial/ets-wfs20/issues) such as a defect or an \nenhancement request\n* Help to resolve an [open issue](https://github.com/opengeospatial/ets-wfs20/issues?q=is%3Aopen)\n* Fix a bug: Fork the repository, apply the fix, and create a pull request\n* Add new tests: Fork the repository, implement (and verify) the tests on a new topic branch, \nand create a pull request\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopengeospatial%2Fets-wfs20","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fopengeospatial%2Fets-wfs20","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopengeospatial%2Fets-wfs20/lists"}