feat: refactor app

This commit is contained in:
Ruidy 2021-07-05 18:46:05 +02:00
parent d1ddb0ea87
commit 8bbd7faf09
5 changed files with 51 additions and 14 deletions

View file

@ -1,11 +1,16 @@
.PHONY: lint
lint:
black -l 99 .
flake8 .
mypy .
vulture .
bandit .
pipenv run black -l 99 .
pipenv run flake8 .
pipenv run mypy .
pipenv run vulture .
pipenv run bandit .
.PHONY: test
test:
pytest -v app/
pytest -v
.PHONY: cli
cli:
pipenv run python app/main.py

View file

@ -4,6 +4,7 @@ verify_ssl = true
name = "pypi"
[packages]
typer = "*"
[dev-packages]
bandit = "*"

29
Pipfile.lock generated
View file

@ -1,7 +1,7 @@
{
"_meta": {
"hash": {
"sha256": "59d461042336fd4cdcc06bf22ef4f96e37a2192ea2a45f76767151f8db5502d0"
"sha256": "1a3b805c8e7a09b28dbba4cf1ca47933dbbec3fb63377f92acec697ac9ebb920"
},
"pipfile-spec": 6,
"requires": {
@ -15,7 +15,24 @@
}
]
},
"default": {},
"default": {
"click": {
"hashes": [
"sha256:d2b5255c7c6349bc1bd1e59e08cd12acbbd63ce649f2588755783aa94dfb6b1a",
"sha256:dacca89f4bfadd5de3d7489b7c8a566eee0d3676333fbb50030263894c38c0dc"
],
"markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'",
"version": "==7.1.2"
},
"typer": {
"hashes": [
"sha256:5455d750122cff96745b0dec87368f56d023725a7ebc9d2e54dd23dc86816303",
"sha256:ba58b920ce851b12a2d790143009fa00ac1d05b3ff3257061ff69dbdfc3d161b"
],
"index": "pypi",
"version": "==0.3.2"
}
},
"develop": {
"appdirs": {
"hashes": [
@ -50,11 +67,11 @@
},
"click": {
"hashes": [
"sha256:8c04c11192119b1ef78ea049e0a6f0463e4c48ef00a30160c704337586f3ad7a",
"sha256:fba402a4a47334742d782209a7c79bc448911afe1149d07bdabdf480b3e2f4b6"
"sha256:d2b5255c7c6349bc1bd1e59e08cd12acbbd63ce649f2588755783aa94dfb6b1a",
"sha256:dacca89f4bfadd5de3d7489b7c8a566eee0d3676333fbb50030263894c38c0dc"
],
"markers": "python_version >= '3.6'",
"version": "==8.0.1"
"markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'",
"version": "==7.1.2"
},
"flake8": {
"hashes": [

View file

@ -1,6 +1,8 @@
import random
import string
import typer
def generate_password(seed: int) -> str:
lowercase = string.ascii_lowercase
@ -12,3 +14,15 @@ def generate_password(seed: int) -> str:
random_generator = random.Random(seed)
return "".join(random_generator.sample(letters, 8))
app = typer.Typer()
@app.command()
def main() -> None:
typer.echo(generate_password(0))
if __name__ == "__main__":
app()

View file

@ -1,6 +1,7 @@
from app.main import generate_password
import pytest
from app.main import generate_password
@pytest.mark.parametrize(
("seed", "expected"),
@ -11,4 +12,3 @@ import pytest
)
def test_can_generate_random_password(seed: int, expected: str) -> None:
assert generate_password(seed) == expected