{"id":23158796,"url":"https://github.com/mitchs-dev/endpoint-tests","last_synced_at":"2025-04-04T18:41:03.143Z","repository":{"id":181110655,"uuid":"617538354","full_name":"mitchs-dev/endpoint-tests","owner":"mitchs-dev","description":"An 'all-in-one' simple endpoint testing platform","archived":false,"fork":false,"pushed_at":"2023-03-22T16:04:12.000Z","size":34,"stargazers_count":0,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-10T03:46:33.204Z","etag":null,"topics":["endpoint-testing"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mitchs-dev.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2023-03-22T15:42:14.000Z","updated_at":"2024-11-28T15:16:04.000Z","dependencies_parsed_at":"2023-07-14T04:36:17.711Z","dependency_job_id":null,"html_url":"https://github.com/mitchs-dev/endpoint-tests","commit_stats":null,"previous_names":["mitchs-dev/endpoint-tests"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mitchs-dev%2Fendpoint-tests","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mitchs-dev%2Fendpoint-tests/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mitchs-dev%2Fendpoint-tests/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mitchs-dev%2Fendpoint-tests/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mitchs-dev","download_url":"https://codeload.github.com/mitchs-dev/endpoint-tests/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247234841,"owners_count":20905852,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["endpoint-testing"],"created_at":"2024-12-17T22:27:44.468Z","updated_at":"2025-04-04T18:41:03.120Z","avatar_url":"https://github.com/mitchs-dev.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Table of contents\n\n- [Table of contents](#table-of-contents)\n- [Introduction](#introduction)\n- [Requirements](#requirements)\n- [Configuration](#configuration)\n  - [maxWorkers](#maxworkers)\n- [Tests](#tests)\n  - [loadTesting](#loadtesting)\n    - [apiLoadTesting](#apiloadtesting)\n      - [simpleLoadTest](#simpleloadtest)\n      - [creationLoadTest](#creationloadtest)\n    - [uiLoadTesting](#uiloadtesting)\n- [exampleConfigFile](#exampleconfigfile)\n- [disclaimer](#disclaimer)\n\n# Introduction\n\nPlanned to be an 'all-in-one' simple testing platform for various infrastructure using only one `YAML` file.\n\n# Requirements\n\n1. Python [3.10](https://www.python.org/downloads/release/python-3100/)+\n2. Run: `pip3 install -r requirements.txt` in root directory.\n3. Create `config.yaml` in root directory with the configuration options below. (See [exampleConfigFile](#exampleconfigfile) for full configuration values)\n\n# Configuration\n\nEach test contains it's own set of configurable options, but there are some global configuration items which are mentioned below.\n\n```yaml\nconfig:\n  baseUrl: \"https://example.domain.com\" # The base URL for the service which you are testing\n  debugMode: false # Enable debug mode (default: false)\n  maxWorkers: 10 # Set maximum worker threads to use (default: 10)\n  requestTimeout: 30 # Set request timeout value [in seconds] (default: 30)\ncredentials: # Credentials to be used for various endpoints stored in a disctionary structure\n  - name: \"example-credential\" # Name to ID your credential\n    type: \"header\" # Type of credential - Currently only 'header' is supported\n    key: \"Authorization\" # Key to use for the 'header' credential (commonly: Authorization)\n    value: \"my.API.token.Value\" # Value to use for the 'header' credential (I.e API token)\n```\n\n## maxWorkers\n\nMax workers lets you define the maximum worker threads to allocate during execution. You can fine tune this to your environment. However, it's a good idea to keep in mind that you should increase this with caution with higher thread counts as this could potentially be _very_ performance heavy. Each test will have an option to define request counts so if you require several requests to be made, you can still make these requests with a lower worker thread count. Alternatively, you can always horizontally scale your testing to a different client node.\n\n# Tests\n\n## loadTesting\n\nThe load testing category provides a performance anaylsis of an API endpoint by sending x requests in parallel using the config-defined worker threads.\n\nHere are the configurable options for the load testing category\n\n```yaml\ncategories: # All categories which can be configured for the tool\n  loadTest: # The configuration values for the load testing category\n    enable: true # Enable the load test category (default: true)\n```\n\n### apiLoadTesting\n\nThe API load testing tests are specifically designed to probe API endpoints. These tests in their current state are simple, but could be expanded in the future. \n\nHere are the configurable options for the API load testing category\n\n```yaml\ncategories: # All categories which can be configured for the tool\n  loadTest: # The configuration values for the load testing category\n    tests: # Tests available within the load testing category\n      api: # The API load testing tests\n        enable: true # Enable API load testing tests (default: true)\n        path: \"/api/\" # The path which your API is available at\n```\n\nBelow are the details for the suite of tests available for API testing.\n\n1. [simpleLoadTest](#simpleloadtest)\n2. [creationLoadTest](#creationloadtest)\n\n\n\n#### simpleLoadTest\n\nDesigned to run `requestCount` number of endpoint connection checks.\n\n```yaml\ncategories: # All categories which can be configured for the tool\n  loadTest: # The configuration values for the load testing category\n    tests: # Tests available within the load testing category\n      api: # The API load testing tests\n        suite: # The suite of tests available for API load testing\n          simpleLoadTest: # Configuation values for simple load test\n            enable: true # Enable simple load test (default: true)\n            endpoint: \"ping\" # Endpoint to test\n            requestCount: 100 # Requests to send (default: 100)\n            failureThreshhold: 1 # Amount of acceptable failures (Default: 1)\n            credentials: # Credentials to authenticate with for the endpoint\n              required: true # Require credentials (default: true)\n              name: \"example-credential\" # Credentials to use in 'credentials' dictionary\n```\n\n#### creationLoadTest\n\nDesigned to create and (optionally) delete `requestCount` resources at a defined endpoint.\n\n```yaml\ncategories: # All categories which can be configured for the tool\n  loadTest: # The configuration values for the load testing category\n    tests: # Tests available within the load testing category\n      api: # The API load testing tests\n        suite: # The suite of tests available for API load testing\n          creationLoadTest: # Configuation values for creation load test\n            enable: false # Enable configuration load test (default: true)\n            sets: # Dictionary of endpoints to create/delete resources\n              - name: \"account-creation\" # Name to ID endpoint\n                enable: true # Enable the endpoint (default: true)\n                create: # Configuration options for creating resources\n                  endpoint: \"admin/accounts\" # Endpoint to hit\n                delete: # Configuration options for deleting resources\n                  enable: true # Enable resource deletion (default: true)\n                  endpoint: \"admin/accounts\" # Endpoint to hit\n                requestCount: 100 # Amount of times to create/delete resources (default: 100)\n                failureThreshhold: 1 # Amount of acceptable failures (Default: 1)\n            credentials: # Credentials to authenticate with for the endpoint\n              required: true # Require credentials (default: true)\n              name: \"example-credential\" # Credentials to use in 'credentials' dictionary\n```\n\n### uiLoadTesting\n\nUI load testing is currently unavailable. If you try to run this module, you'll see output similar to:\n\n```\n----- LOAD TESTING -----\n[...]\n--\u003e loadTesting.ui [2/2]\nRun UI Test\nTBD\n```\n\nHere are the configurable options for the API load testing category\n\n```yaml\ncategories: # All categories which can be configured for the tool\n  loadTest: # The configuration values for the load testing category\n    tests: # Tests available within the load testing category\n      ui: # The UI load testing tests\n        enable: false # Enable UI load testing tests (default: false)\n```\n\n# exampleConfigFile\n\n**IMPORTANT**: It's suggested to simply copy and paste this configuration and update values as needed as all values should be considered _required_.\n\n```yaml\nconfig: # Global configuration values for the tool\n  baseUrl: \"https://example.domain.com\" # The base URL for the service which you are testing\n  debugMode: false # Enable debug mode (default: false)\n  maxWorkers: 10 # Set maximum worker threads to use (Default: 10)\n  requestTimeout: 30 # Set request timeout value [in seconds] (default: 30)\ncredentials: # Credentials to be used for various endpoints stored in a disctionary structure\n  - name: \"example-credential\" # Name to ID your credential\n    type: \"header\" # Type of credential - Currently only 'header' is supported\n    key: \"Authorization\" # Key to use for the 'header' credential (commonly: Authorization)\n    value: \"my.API.token.Value\" # Value to use for the 'header' credential (I.e API token)\ncategories: # All categories which can be configured for the tool\n  loadTest: # The configuration values for the load testing category\n    enable: true # Enable the load test category (default: true)\n    tests: # Tests that reside within a category\n      api: # The API load testing tests\n        enable: true # Enable API load testing tests (default: true)\n        path: \"/api/\" # The path which your API is available at\n        suite: # The suite of tests available for API load testing\n          creationLoadTest: # Configuation values for creation load test\n            enable: false # Enable configuration load test (default: true)\n            sets: # Dictionary of endpoints to create/delete resources\n              - name: \"account-creation\" # Name to ID endpoint\n                enable: true # Enable the endpoint (default: true)\n                create: # Configuration options for creating resources\n                  endpoint: \"admin/accounts\" # Endpoint to hit\n                delete: # Configuration options for deleting resources\n                  enable: true # Enable resource deletion (default: true)\n                  endpoint: \"admin/accounts\" # Endpoint to hit\n                requestCount: 100 # Amount of times to create/delete resources (default: 100)\n                failureThreshhold: 1 # Amount of acceptable failures (Default: 1)\n            credentials: # Credentials to authenticate with for the endpoint\n              required: true # Require credentials (default: true)\n              name: \"example-credential\" # Credentials to use in 'credentials' dictionary\n          creationLoadTest: # Configuation values for creation load test\n            enable: false # Enable configuration load test (default: true)\n            sets: # Dictionary of endpoints to create/delete resources\n              - name: \"account-creation\" # Name to ID endpoint\n                enable: true # Enable the endpoint (default: true)\n                create: # Configuration options for creating resources\n                  endpoint: \"admin/accounts\" # Endpoint to hit\n                delete: # Configuration options for deleting resources\n                  enable: true # Enable resource deletion (default: true)\n                  endpoint: \"admin/accounts\" # Endpoint to hit\n                requestCount: 100 # Amount of times to create/delete resources (default: 100)\n                failureThreshhold: 1 # Amount of acceptable failures (Default: 1)\n            credentials: # Credentials to authenticate with for the endpoint\n              required: true # Require credentials (default: true)\n              name: \"example-credential\" # Credentials to use in 'credentials' dictionary\n      ui: # The UI load testing tests\n        enable: false # Enable UI load testing tests (default: false)\n   \n```\n# disclaimer\n\nThis tool works as is. But some parts were customized to be used for my own purposes and may be restrictive for various endpoint testing. However, feel free to push a PR or fork it for your own needs. Make sure to read [LICENSE](LICENSE) for additional details on how this project can be used.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmitchs-dev%2Fendpoint-tests","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmitchs-dev%2Fendpoint-tests","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmitchs-dev%2Fendpoint-tests/lists"}