summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitignore1
-rw-r--r--python-api-watchdog.spec469
-rw-r--r--sources1
3 files changed, 471 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore
index e69de29..a871fb3 100644
--- a/.gitignore
+++ b/.gitignore
@@ -0,0 +1 @@
+/api_watchdog-0.6.0.tar.gz
diff --git a/python-api-watchdog.spec b/python-api-watchdog.spec
new file mode 100644
index 0000000..0f25651
--- /dev/null
+++ b/python-api-watchdog.spec
@@ -0,0 +1,469 @@
+%global _empty_manifest_terminate_build 0
+Name: python-api-watchdog
+Version: 0.6.0
+Release: 1
+Summary: API watchdog
+License: MIT
+URL: https://pypi.org/project/api-watchdog/
+Source0: https://mirrors.nju.edu.cn/pypi/web/packages/36/10/998688ce6ea7b1f8ee50771e831395ed978f47484cb8044d9fdfc0cc15fc/api_watchdog-0.6.0.tar.gz
+BuildArch: noarch
+
+Requires: python3-pydantic
+Requires: python3-jq
+Requires: python3-requests
+Requires: python3-reasoner-pydantic
+
+%description
+# API Watchdog
+
+## Usage
+```
+api-watchdog discover path/to/test/files
+```
+Will output the abbreviated result of the tests to stdout.
+
+```
+api-watchdog discover --email path/to/test/files
+```
+Will email the results of the tests to the relevant addresses
+(as determined by the `email_to=` field of the test. Test results
+are grouped so that only one email per address is sent per run.
+
+Whjen using the CLI, these environment variables must be set to email results
+- MAILGUN_API_URL
+- MAILGUN_API_TOKEN
+- MAILGUN_FROM
+
+```
+api-watchdog discover -o results_file.json path/to/test/files
+```
+Will serialize the `WatchdogResultGroup` object to the path specified
+by the `-o` flag.
+
+## Installation
+API watchdog handles validation support through extra requirements.
+This means that to install it with TRAPI validation you invoke
+```
+pip install api-watchdog[TRAPI]
+```
+
+If you are using `zsh` you will run affoul of bracket globbing and should use
+```
+pip install 'api-watchdog[TRAPI]'
+```
+
+See this [stackoverflow question](https://stackoverflow.com/questions/30539798/zsh-no-matches-found-requestssecurity) for context.
+
+Available extensions are:
+- TRAPI
+
+If you do not want any validation support you can use the bare `pip install api-watchdog` command.
+
+## WatchdogTest format
+The main way you'll interface with API Watchdog is through `WatchdogTest`s.
+Each `WatchdogTest` has
+- name (str): The name of the test
+- target (url): The endpoint that the test targets
+- expectations (Array[Expectation]): A list of requirements that the response must meet for the test to pass.
+- payload (object): The json passed to the endpoint.
+
+## Expectation format
+An `Expectation` describes where to find a piece of data in the response and what that piece of data should be in order for the test to pass.
+Each `Expectation` has
+
+- selector (jq program): A string describing a jq program that selects the one or more elements to test against
+- value (Any): a value to test equality against
+- validation_type (ValidationType): An API Watchdog validation type used to validate the value/response. The value/response will be implicitly converted to this type. For example, if you specify 'float' and the value is an integer it will be implicitly converted to a float.
+- level (Optional[ExpectationLevel]): How important an expectation is. Defaults to "critical"
+
+## ExpectationLevel
+One of the strings:
+- critical
+- warning
+- info
+Only "critical" expectations affect the success or failure of a `WatchdogTest`.
+
+
+The selector format is a string that is a [jq program](https://stedolan.github.io/jq/). This allows for rich selection capabilities.
+For example:
+
+```
+ {
+ "selector": ".message.knowledge_graph.nodes[\"MONDO:0005148\"].name",
+ "value": "type 2 diabetes mellitus",
+ "validation_type": "string"
+ },
+```
+
+Is an `Expectation` that checks if a node is present in the knowledge graph of a TRAPI response.
+
+The possible validation types are
+- "string",
+- "int",
+- "float",
+- "object",
+- "bool",
+- "null",
+- "trapi.knowledge_graph",
+- "trapi.node",
+- "trapi.edge",
+- "trapi.query_graph",
+- "trapi.q_node",
+- "trapi.q_edge",
+- "trapi.query_constraint",
+- "trapi.result",
+- "trapi.node_binding",
+- "trapi.edge_binding",
+- "trapi.message",
+- "trapi.query",
+- "trapi.response",
+- "trapi.async_query",
+- "trapi.operation",
+- "trapi.workflow",
+- "trapi.attribute",
+- "trapi.biolink_entity",
+- "trapi.biolink_predicate",
+- "trapi.curie",
+- "trapi.log_entry",
+- "trapi.log_level",
+- "trapi.meta_edge",
+- "trapi.meta_node",
+- "trapi.meta_knowledge_graph",
+- "trapi.meta_attribute"
+
+
+## What it is
+An API monitoring utility that aspires to support:
+- [ ] Validation
+- [ ] Continuous Integration
+- [ ] Multiple input and output formats
+- [ ] Test discovery / minimal configuration
+
+## What it is not
+- A way to regularly schedule tests against an endpoint, eg. [cron](https://en.wikipedia.org/wiki/Cron), [celery](https://docs.celeryproject.org/en/stable/getting-started/introduction.html)
+- A way to specify api schemas eg. [marshmallow](https://marshmallow.readthedocs.io/en/stable/), [pydantic](https://pydantic-docs.helpmanual.io/)
+
+
+
+
+
+%package -n python3-api-watchdog
+Summary: API watchdog
+Provides: python-api-watchdog
+BuildRequires: python3-devel
+BuildRequires: python3-setuptools
+BuildRequires: python3-pip
+%description -n python3-api-watchdog
+# API Watchdog
+
+## Usage
+```
+api-watchdog discover path/to/test/files
+```
+Will output the abbreviated result of the tests to stdout.
+
+```
+api-watchdog discover --email path/to/test/files
+```
+Will email the results of the tests to the relevant addresses
+(as determined by the `email_to=` field of the test. Test results
+are grouped so that only one email per address is sent per run.
+
+Whjen using the CLI, these environment variables must be set to email results
+- MAILGUN_API_URL
+- MAILGUN_API_TOKEN
+- MAILGUN_FROM
+
+```
+api-watchdog discover -o results_file.json path/to/test/files
+```
+Will serialize the `WatchdogResultGroup` object to the path specified
+by the `-o` flag.
+
+## Installation
+API watchdog handles validation support through extra requirements.
+This means that to install it with TRAPI validation you invoke
+```
+pip install api-watchdog[TRAPI]
+```
+
+If you are using `zsh` you will run affoul of bracket globbing and should use
+```
+pip install 'api-watchdog[TRAPI]'
+```
+
+See this [stackoverflow question](https://stackoverflow.com/questions/30539798/zsh-no-matches-found-requestssecurity) for context.
+
+Available extensions are:
+- TRAPI
+
+If you do not want any validation support you can use the bare `pip install api-watchdog` command.
+
+## WatchdogTest format
+The main way you'll interface with API Watchdog is through `WatchdogTest`s.
+Each `WatchdogTest` has
+- name (str): The name of the test
+- target (url): The endpoint that the test targets
+- expectations (Array[Expectation]): A list of requirements that the response must meet for the test to pass.
+- payload (object): The json passed to the endpoint.
+
+## Expectation format
+An `Expectation` describes where to find a piece of data in the response and what that piece of data should be in order for the test to pass.
+Each `Expectation` has
+
+- selector (jq program): A string describing a jq program that selects the one or more elements to test against
+- value (Any): a value to test equality against
+- validation_type (ValidationType): An API Watchdog validation type used to validate the value/response. The value/response will be implicitly converted to this type. For example, if you specify 'float' and the value is an integer it will be implicitly converted to a float.
+- level (Optional[ExpectationLevel]): How important an expectation is. Defaults to "critical"
+
+## ExpectationLevel
+One of the strings:
+- critical
+- warning
+- info
+Only "critical" expectations affect the success or failure of a `WatchdogTest`.
+
+
+The selector format is a string that is a [jq program](https://stedolan.github.io/jq/). This allows for rich selection capabilities.
+For example:
+
+```
+ {
+ "selector": ".message.knowledge_graph.nodes[\"MONDO:0005148\"].name",
+ "value": "type 2 diabetes mellitus",
+ "validation_type": "string"
+ },
+```
+
+Is an `Expectation` that checks if a node is present in the knowledge graph of a TRAPI response.
+
+The possible validation types are
+- "string",
+- "int",
+- "float",
+- "object",
+- "bool",
+- "null",
+- "trapi.knowledge_graph",
+- "trapi.node",
+- "trapi.edge",
+- "trapi.query_graph",
+- "trapi.q_node",
+- "trapi.q_edge",
+- "trapi.query_constraint",
+- "trapi.result",
+- "trapi.node_binding",
+- "trapi.edge_binding",
+- "trapi.message",
+- "trapi.query",
+- "trapi.response",
+- "trapi.async_query",
+- "trapi.operation",
+- "trapi.workflow",
+- "trapi.attribute",
+- "trapi.biolink_entity",
+- "trapi.biolink_predicate",
+- "trapi.curie",
+- "trapi.log_entry",
+- "trapi.log_level",
+- "trapi.meta_edge",
+- "trapi.meta_node",
+- "trapi.meta_knowledge_graph",
+- "trapi.meta_attribute"
+
+
+## What it is
+An API monitoring utility that aspires to support:
+- [ ] Validation
+- [ ] Continuous Integration
+- [ ] Multiple input and output formats
+- [ ] Test discovery / minimal configuration
+
+## What it is not
+- A way to regularly schedule tests against an endpoint, eg. [cron](https://en.wikipedia.org/wiki/Cron), [celery](https://docs.celeryproject.org/en/stable/getting-started/introduction.html)
+- A way to specify api schemas eg. [marshmallow](https://marshmallow.readthedocs.io/en/stable/), [pydantic](https://pydantic-docs.helpmanual.io/)
+
+
+
+
+
+%package help
+Summary: Development documents and examples for api-watchdog
+Provides: python3-api-watchdog-doc
+%description help
+# API Watchdog
+
+## Usage
+```
+api-watchdog discover path/to/test/files
+```
+Will output the abbreviated result of the tests to stdout.
+
+```
+api-watchdog discover --email path/to/test/files
+```
+Will email the results of the tests to the relevant addresses
+(as determined by the `email_to=` field of the test. Test results
+are grouped so that only one email per address is sent per run.
+
+Whjen using the CLI, these environment variables must be set to email results
+- MAILGUN_API_URL
+- MAILGUN_API_TOKEN
+- MAILGUN_FROM
+
+```
+api-watchdog discover -o results_file.json path/to/test/files
+```
+Will serialize the `WatchdogResultGroup` object to the path specified
+by the `-o` flag.
+
+## Installation
+API watchdog handles validation support through extra requirements.
+This means that to install it with TRAPI validation you invoke
+```
+pip install api-watchdog[TRAPI]
+```
+
+If you are using `zsh` you will run affoul of bracket globbing and should use
+```
+pip install 'api-watchdog[TRAPI]'
+```
+
+See this [stackoverflow question](https://stackoverflow.com/questions/30539798/zsh-no-matches-found-requestssecurity) for context.
+
+Available extensions are:
+- TRAPI
+
+If you do not want any validation support you can use the bare `pip install api-watchdog` command.
+
+## WatchdogTest format
+The main way you'll interface with API Watchdog is through `WatchdogTest`s.
+Each `WatchdogTest` has
+- name (str): The name of the test
+- target (url): The endpoint that the test targets
+- expectations (Array[Expectation]): A list of requirements that the response must meet for the test to pass.
+- payload (object): The json passed to the endpoint.
+
+## Expectation format
+An `Expectation` describes where to find a piece of data in the response and what that piece of data should be in order for the test to pass.
+Each `Expectation` has
+
+- selector (jq program): A string describing a jq program that selects the one or more elements to test against
+- value (Any): a value to test equality against
+- validation_type (ValidationType): An API Watchdog validation type used to validate the value/response. The value/response will be implicitly converted to this type. For example, if you specify 'float' and the value is an integer it will be implicitly converted to a float.
+- level (Optional[ExpectationLevel]): How important an expectation is. Defaults to "critical"
+
+## ExpectationLevel
+One of the strings:
+- critical
+- warning
+- info
+Only "critical" expectations affect the success or failure of a `WatchdogTest`.
+
+
+The selector format is a string that is a [jq program](https://stedolan.github.io/jq/). This allows for rich selection capabilities.
+For example:
+
+```
+ {
+ "selector": ".message.knowledge_graph.nodes[\"MONDO:0005148\"].name",
+ "value": "type 2 diabetes mellitus",
+ "validation_type": "string"
+ },
+```
+
+Is an `Expectation` that checks if a node is present in the knowledge graph of a TRAPI response.
+
+The possible validation types are
+- "string",
+- "int",
+- "float",
+- "object",
+- "bool",
+- "null",
+- "trapi.knowledge_graph",
+- "trapi.node",
+- "trapi.edge",
+- "trapi.query_graph",
+- "trapi.q_node",
+- "trapi.q_edge",
+- "trapi.query_constraint",
+- "trapi.result",
+- "trapi.node_binding",
+- "trapi.edge_binding",
+- "trapi.message",
+- "trapi.query",
+- "trapi.response",
+- "trapi.async_query",
+- "trapi.operation",
+- "trapi.workflow",
+- "trapi.attribute",
+- "trapi.biolink_entity",
+- "trapi.biolink_predicate",
+- "trapi.curie",
+- "trapi.log_entry",
+- "trapi.log_level",
+- "trapi.meta_edge",
+- "trapi.meta_node",
+- "trapi.meta_knowledge_graph",
+- "trapi.meta_attribute"
+
+
+## What it is
+An API monitoring utility that aspires to support:
+- [ ] Validation
+- [ ] Continuous Integration
+- [ ] Multiple input and output formats
+- [ ] Test discovery / minimal configuration
+
+## What it is not
+- A way to regularly schedule tests against an endpoint, eg. [cron](https://en.wikipedia.org/wiki/Cron), [celery](https://docs.celeryproject.org/en/stable/getting-started/introduction.html)
+- A way to specify api schemas eg. [marshmallow](https://marshmallow.readthedocs.io/en/stable/), [pydantic](https://pydantic-docs.helpmanual.io/)
+
+
+
+
+
+%prep
+%autosetup -n api-watchdog-0.6.0
+
+%build
+%py3_build
+
+%install
+%py3_install
+install -d -m755 %{buildroot}/%{_pkgdocdir}
+if [ -d doc ]; then cp -arf doc %{buildroot}/%{_pkgdocdir}; fi
+if [ -d docs ]; then cp -arf docs %{buildroot}/%{_pkgdocdir}; fi
+if [ -d example ]; then cp -arf example %{buildroot}/%{_pkgdocdir}; fi
+if [ -d examples ]; then cp -arf examples %{buildroot}/%{_pkgdocdir}; fi
+pushd %{buildroot}
+if [ -d usr/lib ]; then
+ find usr/lib -type f -printf "/%h/%f\n" >> filelist.lst
+fi
+if [ -d usr/lib64 ]; then
+ find usr/lib64 -type f -printf "/%h/%f\n" >> filelist.lst
+fi
+if [ -d usr/bin ]; then
+ find usr/bin -type f -printf "/%h/%f\n" >> filelist.lst
+fi
+if [ -d usr/sbin ]; then
+ find usr/sbin -type f -printf "/%h/%f\n" >> filelist.lst
+fi
+touch doclist.lst
+if [ -d usr/share/man ]; then
+ find usr/share/man -type f -printf "/%h/%f.gz\n" >> doclist.lst
+fi
+popd
+mv %{buildroot}/filelist.lst .
+mv %{buildroot}/doclist.lst .
+
+%files -n python3-api-watchdog -f filelist.lst
+%dir %{python3_sitelib}/*
+
+%files help -f doclist.lst
+%{_docdir}/*
+
+%changelog
+* Thu May 18 2023 Python_Bot <Python_Bot@openeuler.org> - 0.6.0-1
+- Package Spec generated
diff --git a/sources b/sources
new file mode 100644
index 0000000..208469f
--- /dev/null
+++ b/sources
@@ -0,0 +1 @@
+27abd5476e9b915dd44d3bb7da6f80b4 api_watchdog-0.6.0.tar.gz