{"id":25776728,"url":"https://github.com/adobe/ride","last_synced_at":"2026-01-14T01:54:47.010Z","repository":{"id":52541197,"uuid":"149167518","full_name":"adobe/ride","owner":"adobe","description":"REST API Automation framework for functional, integration, fuzzing, and performance testing","archived":true,"fork":false,"pushed_at":"2023-03-01T10:44:53.000Z","size":3301,"stargazers_count":96,"open_issues_count":12,"forks_count":41,"subscribers_count":9,"default_branch":"develop","last_synced_at":"2025-07-05T15:51:50.870Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/adobe.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2018-09-17T18:08:02.000Z","updated_at":"2025-04-21T13:30:23.000Z","dependencies_parsed_at":"2023-01-22T06:03:06.725Z","dependency_job_id":null,"html_url":"https://github.com/adobe/ride","commit_stats":null,"previous_names":[],"tags_count":10,"template":false,"template_full_name":null,"purl":"pkg:github/adobe/ride","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adobe%2Fride","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adobe%2Fride/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adobe%2Fride/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adobe%2Fride/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/adobe","download_url":"https://codeload.github.com/adobe/ride/tar.gz/refs/heads/develop","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adobe%2Fride/sbom","scorecard":{"id":167339,"data":{"date":"2025-08-11","repo":{"name":"github.com/adobe/ride","commit":"8f8e04e8f17accbdc47e81c11ed06c5ab350d670"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":2.9,"checks":[{"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":"Code-Review","score":2,"reason":"Found 2/8 approved changesets -- score normalized to 2","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":"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":"Maintained","score":0,"reason":"project is archived","details":["Warn: Repository is archived."],"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"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":"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":"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":"Pinned-Dependencies","score":-1,"reason":"no dependencies found","details":null,"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":"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":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: Apache License 2.0: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"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 'develop'"],"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":"Security-Policy","score":10,"reason":"security policy file detected","details":["Info: security policy file detected: github.com/adobe/.github/.github/SECURITY.md:1","Info: Found linked content: github.com/adobe/.github/.github/SECURITY.md:1","Info: Found disclosure, vulnerability, and/or timelines in security policy: github.com/adobe/.github/.github/SECURITY.md:1","Info: Found text in security policy: github.com/adobe/.github/.github/SECURITY.md:1"],"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":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 29 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":0,"reason":"46 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: GHSA-h46c-h94j-95f3","Warn: Project is vulnerable to: GHSA-wf8f-6423-gfxg","Warn: Project is vulnerable to: GHSA-288c-cq4h-88gq","Warn: Project is vulnerable to: GHSA-3x8x-79m2-3w2w","Warn: Project is vulnerable to: GHSA-57j2-w4cx-62h2","Warn: Project is vulnerable to: GHSA-jjjh-jjxp-wpff","Warn: Project is vulnerable to: GHSA-rgv9-q543-rqg4","Warn: Project is vulnerable to: GHSA-5mg8-w23w-74h3","Warn: Project is vulnerable to: GHSA-7g45-4rm6-3mm3","Warn: Project is vulnerable to: GHSA-mvr2-9pj6-7w5j","Warn: Project is vulnerable to: GHSA-pvp8-3xj6-8c6x","Warn: Project is vulnerable to: GHSA-78wr-2p64-hpwj","Warn: Project is vulnerable to: GHSA-gwrp-pvrq-jmwv","Warn: Project is vulnerable to: GHSA-j288-q9x7-2f5v","Warn: Project is vulnerable to: GHSA-7r82-7xv7-xcpj","Warn: Project is vulnerable to: GHSA-rcjj-h6gh-jf3r","Warn: Project is vulnerable to: GHSA-g6ph-x5wf-g337","Warn: Project is vulnerable to: GHSA-jcwr-x25h-x5fh","Warn: Project is vulnerable to: GHSA-rc2q-x9mf-w3vf","Warn: Project is vulnerable to: GHSA-vmq6-5m68-f53m","Warn: Project is vulnerable to: GHSA-668q-qrv7-99fm","Warn: Project is vulnerable to: GHSA-6v67-2wr5-gvf4","Warn: Project is vulnerable to: GHSA-pr98-23f8-jwxv","Warn: Project is vulnerable to: GHSA-mr95-9rr4-668f","Warn: Project is vulnerable to: GHSA-9vjp-v76f-g363","Warn: Project is vulnerable to: GHSA-grg4-wf29-r9vv","Warn: Project is vulnerable to: GHSA-269q-hmxg-m83q","Warn: Project is vulnerable to: GHSA-5jpm-x58v-624v","Warn: Project is vulnerable to: GHSA-5mcr-gq6c-3hq2","Warn: Project is vulnerable to: GHSA-cqqj-4p63-rrmm","Warn: Project is vulnerable to: GHSA-wx5j-54mm-rqqq","Warn: Project is vulnerable to: GHSA-389x-839f-4rhx","Warn: Project is vulnerable to: GHSA-xq3w-v528-46rv","Warn: Project is vulnerable to: GHSA-6mjq-h674-j845","Warn: Project is vulnerable to: GHSA-p2v9-g2qv-p635","Warn: Project is vulnerable to: GHSA-4446-656p-f54g","Warn: Project is vulnerable to: GHSA-6xx3-rg99-gc3p","Warn: Project is vulnerable to: GHSA-72m5-fvvv-55m6","Warn: Project is vulnerable to: GHSA-8xfc-gm6g-vgpv","Warn: Project is vulnerable to: GHSA-hr8g-6v94-x4m9","Warn: Project is vulnerable to: GHSA-v435-xc8x-wvr9","Warn: Project is vulnerable to: GHSA-wjxj-5m7g-mg7q","Warn: Project is vulnerable to: GHSA-6phf-73q6-gh87","Warn: Project is vulnerable to: GHSA-wxr5-93ph-8wr9","Warn: Project is vulnerable to: GHSA-6hgm-866r-3cjv","Warn: Project is vulnerable to: GHSA-fjq5-5j5f-mvxh"],"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-16T15:16:39.943Z","repository_id":52541197,"created_at":"2025-08-16T15:16:39.944Z","updated_at":"2025-08-16T15:16:39.944Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28408692,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-14T00:40:43.272Z","status":"ssl_error","status_checked_at":"2026-01-14T00:40:42.636Z","response_time":56,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: 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":"2025-02-27T06:01:29.830Z","updated_at":"2026-01-14T01:54:46.993Z","avatar_url":"https://github.com/adobe.png","language":"Java","funding_links":[],"categories":["测试","others"],"sub_categories":[],"readme":"![Adobe Ride Logo](images/RideBanner.png)\n\n\u003cbr\u003e\n\u003cbr\u003e\n Speed the development of your automated REST API tests across microservices and end-to-end workflows.\n\n# Overview\n \n\nRide is a service-agnostic, modular, extensible Java REST API automation framework. It speeds test development by:\n\n* Abstracting repetitive code\n* Standardizing service-specific calls\n* Integrating testing across microservices and workflows\n* Auto Generating json payloads from schema\n* Auto-Fuzzing payloads defined by arbitrary json schemas\n* Running Perfomance tests against entire workflows without re-writing your test code\n\n# Current\n\n\u003ctable\u003e\n    \u003ctr\u003e\n        \u003ctd\u003eRide\u003c/td\u003e\n        \u003ctd\u003e2.0.0\u003c/td\u003e\n    \u003c/tr\u003e\n\u003c/table\u003e\n\n\n# Getting Started\n\nWhile Ride can be used as is, it is more powerful when extended for your specific services.  Extending it consists of three steps:\n* Providing config information, in the form of environment property files and payload schemas\n* Creating extensions from the core API Controller and ModelObject, which consume the config info you provide\n* Writing tests using the configured extension(s)\n\nTo begin to building your test extention, create a standard java project in the IDE/Build Tool of choice (the samples shown here are in [Eclipse](https://www.eclipse.org/ide/) using [Maven](https://maven.apache.org/)).\n\n## Configuration\n\nWith your base extension project created, provide Ride with the information discussed above on how to talk to your service: \n* Environment config files (*.properties) to target your service\n* JSON schemas which describe the payloads sent to the service  \n\nThese should be placed in folders named as shown below in your project main resources (you may want to have a centralized, shareable resources jar - see samples):\n\n\u003cimg src=\"images/configs_schemas.png\" width=\"351px\"/\u003e\n\n### Target Environments\n\nRide is designed so that multiple environments can be indicated, and multiple services for each environment can be defined.  In the example below, 2 services are defined for *localhost*___.properties___ (how to target them is discussed a bit further down).  They will be consumed by your extension:\n\n\u003cimg src=\"images/localhost.properties.png\" width=\"414px\"/\u003e\n\nThe advantage here is that if you have multiple services (even multiple extensions), you can run complete inter-service (end-to-end) flows targeting all service (using their respective test extensions) in one test.\n\n### Payload Definitions\n\nYour service payloads are defined by standard json schema, and are organized into the services they target by folders as shown above.\n\n## Extending\n\nOnce you have your schemas and environment properties files setup, you can begin to create your extension.  This is done by [extending](https://github.com/adobe/ride/blob/develop/sample/sample-service-extension/src/main/java/com/adobe/ride/sample/cloud_objects/SampleServiceUberObject.java#L32) the [ModelObject](https://github.com/adobe/ride/blob/develop/utilities/ride-model-util/src/main/java/com/adobe/ride/utilities/model/ModelObject.java)  and [extending](https://github.com/adobe/ride/blob/develop/sample/sample-service-extension/src/main/java/com/adobe/ride/sample/core/SampleServiceController.java#L33) the [RestApiController](https://github.com/adobe/ride/blob/develop/core/src/main/java/com/adobe/ride/core/controllers/RestApiController.java)\n\nAn examination of the pom files in those two sample projects will given you an idea of the dependencies you will need to identify in order to build and use your extension.  You build your extension as you would any java project.  Below is an example using Maven\n\n## Writing Tests\n\n\nOnce you have created and built your extension, you can begin using is tests which abstract away a significant portion repetitive code, as is shown below (the annotation is TestNG standard, built into Ride):\n\n```\n  @Test(groups = {\"smoke\", \"acceptance\"})\n  public void testAuthenticatedCalltoServer() {\n    String itemName = UUID.randomUUID().toString();\n\n    // Create object\n    SampleServiceObject1 testObject = new SampleServiceObject1(itemName, false);\n    \n    // Send object data to service\n    SampleServiceController.createOrUpdateObject(testObject.getObjectPath(), testObject,\n        ExpectedResponse.CREATED_RESPONSE, true);\n  }\n```\n\nIf you don't have [Maven failsafe](https://maven.apache.org/surefire/maven-failsafe-plugin/) configured, it is recommended that you append your test file names with \"_IT\" so that they will be run by Failsafe as opposed to maven Surefire (for example, MyBasicTest_IT.java).\n\n## Running Your Tests\n\nWhen you are ready to run your tests from the command line, below are a few examples of run commands (standard maven command line syntax):\n\n\n``` \n#run all against prod01 environment\nmvn clean verify -Dtarget=prod01\n```\n\n``` \n#run specific test\nmvn clean verify -Dtarget=prod01 -Dit.test=\"myGreatTestFile_IT.java#creationTest\n```\n\n``` \n#run specific test group\nmvn clean verify -Dtarget=prod01 -Dgroup=smoke\n```\n\n## Fuzzing\n\nWith a few simple lines of code, you can generate different data type and content tests against the payload schema to see if your service handles each correctly.  Ride internally maintains arrays of non-strings, SQL injection strings, No SQL injection strings, and localized strings to test against the definitions in your schema.  The Fuzzer walks the entire hierarchy of any arbitrary schema and tests each node in isolation ([sample code](https://github.com/adobe/ride/blob/develop/sample/sample-service-tests/src/test/java/com/adobe/ride/sample/Basic_FuzzTest_IT.java)):\n\n```\n@Factory\n  public Object[] fuzzObjectMetadata_IT() throws Exception {\n    String itemName = UUID.randomUUID().toString();\n    SampleServiceObject1 object1 = new SampleServiceObject1(itemName, false);\n    return new Object[] {new MetadataFuzzer(Service.SAMPLE_SERVICE.toString(), object1)};\n  }\n\n\n```\n\n## Performance Testing\n\nPart of the power of Ride is that once you have your extension written, you can use it for fuzzing (as shown above), but also for performance testing.  The performance library in Ride is based on Gatling, so while there is a bit of setup, and a bit of a shift in syntax to scala, you are still able to setup tests that measure performance for full flows of data withough having to rewrite what you've already created in your extension - [sample Ride performance test](https://github.com/adobe/ride/blob/develop/sample/sample-service-performance-tests/src/main/scala/com/adobe/ride/sample/performance/SampleServiceBasicRunner.scala).\n\n\n## Additional Documentation\n\nThere are a number of supporting informational documents in this repo which will help you utilize and perhaps contribute to Ride.\n\n\n* [Architecture (former main readme)](https://github.com/adobe/ride/blob/develop/Architecture.md)\n* [Quick Start](https://github.com/adobe/ride/blob/develop/QuickStart.md)\n* [Usage](https://github.com/adobe/ride/blob/develop/Usage.md)\n* [Using Authentication](https://github.com/adobe/ride/blob/develop/UsingAuthentiation.md)\n\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fadobe%2Fride","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fadobe%2Fride","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fadobe%2Fride/lists"}