Adding pytests

pull/13/head
Cotton 2020-01-20 02:25:56 -08:00
parent 53a0b6c788
commit 98f7bb3b6e
8 changed files with 50 additions and 13 deletions

View File

@ -12,19 +12,12 @@ jobs:
- name: Set up Python 3.7
uses: actions/setup-python@v1
with:
python-version: 3.7
python-version: 2.7
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install -r requirements.txt
- name: Lint with flake8
run: |
pip install flake8
# stop the build if there are Python syntax errors or undefined names
flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics
# exit-zero treats all errors as warnings. The GitHub editor is 127 chars wide
flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics
- name: Test with pytest
run: |
pip install pytest
pytest
pytest csrgen_test.py

3
.gitignore vendored
View File

@ -1,3 +1,6 @@
dist/*
__*
CSR_Generator.egg-info/*
*.log
*.csr
*.key

View File

@ -3,7 +3,8 @@
Generate a key, self-signed certificate, and certificate request.
## Information
You'll notice there is only one version of python scripts. This can be used with both python(2.7) and python(3.5).
This script is for Python 2.7. Due to how the input() function has changed between python2 and python3, this
script is not backwards compatible at this time.
## Installation / Dependencies
The following modules are required:

View File

@ -8,14 +8,14 @@
# Usage: csrgen -n <hostname> -s <san0> <san1>
#
# If you want to generate multiple CSRs, you can use the -f command to
# feed in a .yaml file via the CLI. See the example sample.yaml in this
# feed in a .yaml file via the CLI. See the example samples/sample-file.yaml in this
# repository for examples.
#
# If you want to predefine some of your CSR attributes, you can use the -u command
# to feed in a .yaml file via the CLI. See the example csr.yaml in this repository
# to feed in a .yaml file via the CLI. See the example samples/csr-sample-unattended.yaml in this repository
# for examples.
#
# Author: Courtney Cotton <cotton@cottoncourtney.com> 06-25-2014, Updated 8-9-2017
# Author: Cotton Beckfield <cotton@cottonbeckfield.com> 06-25-2014, Updated 01-20-2020
# Author: Ben Mz <bmz@prohacktive.io> Updated 06-15-2018
# Libraries/Modules
@ -295,6 +295,7 @@ class Authority(Certificate):
def main(argv):
print(argv)
# Define default values
VERBOSE = False
LOG_FILE = "./certGen.log"

BIN
csrgen.pyc Normal file

Binary file not shown.

39
csrgen_test.py Normal file
View File

@ -0,0 +1,39 @@
import pytest
import csrgen
import logging
def import_logging():
logger = logging.getLogger('certgen')
hdlr = logging.handlers.TimedRotatingFileHandler("csrgen_test.log", when="midnight", backupCount=3)
formatter = logging.Formatter('%(asctime)s %(levelname)s %(message)s')
hdlr.setFormatter(formatter)
logger.addHandler(hdlr)
logger.setLevel("WARN")
return logger
# Test that if a file is supplied (../samples/sample-file.yaml) the code does #
# exit with an error.
def test_load_nodes():
logger = import_logging()
cert = csrgen.Certificate(logger, {'verbose': False, 'size': '2048', 'C': 'Te', 'ST': 'PACA', 'L': 'Gap', 'O': 'ProHacktive SAS', 'OU': 'prohacktive.io'})
result = cert.loadNodes("samples/sample-file.yaml")
def test_load_defaults():
logger = import_logging()
cert = csrgen.Certificate(logger, {'verbose': False, 'size': '2048'})
result = cert.loadDefaults("samples/csr-sample-unattended.yaml")
def test_generate_csr():
logger = import_logging()
cert = csrgen.Certificate(logger, {'verbose': False, 'size': '2048', 'hostname': 'test-csr.edu', 'sans': 'test-csr-sans.edu',
'C': 'Te', 'ST': 'PACA', 'L': 'Gap', 'O': 'ProHacktive SAS', 'OU': 'prohacktive.io'})
result = cert.generateCSR()
# Test that if a file is supplied and a ../samples/csr-sample-unattended.yaml is supplied
# that the code does not exit.
# Test that if someone supplies -n the code does not exit.
# Test that if someone supplies a -n and a -s that the code does not exit.