Security News
Fluent Assertions Faces Backlash After Abandoning Open Source Licensing
Fluent Assertions is facing backlash after dropping the Apache license for a commercial model, leaving users blindsided and questioning contributor rights.
Toolchain to define and verify REST API in BDD.
Using Given
, when
, functions as you see in the example below, you can
determine and assert the behaviour of your REST API
.
The story
, response
, status
objects are some proxies for currently
writing story(inside the with Given( ... ): context) and it's response.
and the last response after a Given
and or when
.
import re
import sys
import json
from bddrest.authoring import Given, when, response, status
def wsgi_application(environ, start_response):
path = environ['PATH_INFO']
if path.endswith('/None'):
start_response(
'404 Not Found',
[('Content-Type', 'text/plain;charset=utf-8')]
)
yield b''
else:
start_response(
'200 OK',
[('Content-Type', 'application/json;charset=utf-8')]
)
result = json.dumps(dict(
foo='bar'
))
yield result.encode()
with Given(
wsgi_application,
title='Quickstart!',
path='/books/id: 1',
as_='visitor') as story:
assert status == 200
assert status == '200 OK'
assert 'foo' in response.json
assert response.json['foo'] == 'bar'
when(
'Trying invalid book id',
path_parameters={'id': None}
)
assert response.status == 404
Story
story.dumps()
Produces:
base_call:
as_: visitor
description: As a member I have to POST a book to the library.
form:
name: BDD Book
query:
a: b
response:
headers:
- 'Content-Type: application/json;charset=utf-8'
json:
foo: bar
status: 200 OK
title: Posting a book
path: /books/:id
path_parameters:
id: '1'
verb: GET
calls:
- response:
headers:
- 'Content-Type: text/plain;charset=utf-8'
status: 404 Not Found
title: Trying invalid book id
path_parameters:
id: None
You may load the story again from this yaml with Story.loads(yaml)
.
There are two additional methods available to dump and load to
and from a file: story.load(file)
and story.dump(file)
You may pass the autodump
argument of the Given
function to configure the
auto-dumping:
:param autodump: A file-like object to write dumped story.
Default is `None`, means autodump is disabled by default.
You may pass the autodoc
argument of the Given
function to configure the
auto-documentation:
:param autodoc: A file-like object to write documentation.
Default is `None`, meana autodoc is disabled by default.
:param autodoc_format: Either ``markdown`` or ``html``. default is
``markdown``.
You can use story.document([formatter_factory=MarkdownFormatter])
to generate documentation
in arbitrary format for example: Markdown
.
There is also a CLI to do this:
bddrest document < story.yml > story.md
## Posting a book
### GET /books/:id
As a member I have to POST a book to the library.
### Path Parameters
Name | Example
--- | ---
id | 1
### Query Strings
Name | Example
--- | ---
a | b
### Form
Name | Example
--- | ---
name | BDD Book
### Response: 200 OK
#### Headers
* Content-Type: application/json;charset=utf-8
#### Body
```json
{"foo": "bar"}
```
## WHEN: Trying invalid book id
### Path Parameters
Name | Example
--- | ---
id | None
### Response: 404 Not Found
#### Headers
* Content-Type: text/plain;charset=utf-8
After installing the project a command named bddrest
will be available.
bddrest -h
Add this into your .bashrc
and or $VIRTUAL_ENV/bin/postactivate
.
eval "$(register-python-argcomplete bddrest)"
FAQs
A toolchain for testing REST APIs in BDD manner.
We found that bddrest demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Fluent Assertions is facing backlash after dropping the Apache license for a commercial model, leaving users blindsided and questioning contributor rights.
Research
Security News
Socket researchers uncover the risks of a malicious Python package targeting Discord developers.
Security News
The UK is proposing a bold ban on ransomware payments by public entities to disrupt cybercrime, protect critical services, and lead global cybersecurity efforts.