nixpkgs/pkgs/development/python-modules/fluidasserts/default.nix
2020-05-11 22:12:11 +02:00

211 lines
4.4 KiB
Nix

{ buildPythonPackage
, fetchPypi
, isPy37
, lib
# pythonPackages
, aiohttp
, androguard
, azure-identity
, azure-keyvault
, azure-mgmt-compute
, azure-mgmt-keyvault
, azure-mgmt-network
, azure-mgmt-resource
, azure-mgmt-security
, azure-mgmt-storage
, azure-mgmt-sql
, azure-mgmt-web
, azure-storage
, bandit
, bcrypt
, beautifulsoup4
, boto3
, cfn-flip
, cython
, dnspython
, colorama
, configobj
, defusedxml
, GitPython
, google_api_python_client
, kubernetes
, ldap3
, mixpanel
, mysql-connector
, names
, ntplib
, oyaml
, paramiko
, pillow
, psycopg2
, pycrypto
, pygments
, pyhcl
, pyjks
, pynacl
, pyodbc
, pyopenssl
, pypdf2
, pysmb
, pytesseract
, python_magic
, pytz
, pywinrm
, requirements-detector
, selenium
, tlslite-ng
, viewstate
# pythonPackages to test the derivation
, pytest
, flask
, flask-httpauth
, docker
}:
buildPythonPackage rec {
pname = "fluidasserts";
version = "20.2.40218";
disabled = !isPy37;
src = fetchPypi {
inherit pname version;
sha256 = "b33ae7a14c57769b9da06c37bb19b6193291f12f159c42d7871ca22541ffa246";
};
patchPhase = ''
# Release packages from their hard pinned versions
sed -i -E "s/(.*)==.*/\1/g" requirements.txt
# Functionality that will be not present for the momment
# but that we'll work to add in the future
# Just a minimal portion of fluidasserts use this
substituteInPlace ./requirements.txt \
--replace "mitmproxy" "" \
'';
propagatedBuildInputs = [
# pythonPackages
aiohttp
androguard
azure-identity
azure-keyvault
azure-mgmt-compute
azure-mgmt-keyvault
azure-mgmt-network
azure-mgmt-resource
azure-mgmt-security
azure-mgmt-storage
azure-mgmt-sql
azure-mgmt-web
azure-storage
bandit
bcrypt
beautifulsoup4
boto3
cfn-flip
cython
dnspython
colorama
configobj
defusedxml
GitPython
google_api_python_client
kubernetes
ldap3
mixpanel
mysql-connector
names
ntplib
oyaml
paramiko
pillow
psycopg2
pycrypto
pygments
pyhcl
pyjks
pynacl
pyodbc
pyopenssl
pypdf2
pysmb
pytesseract
python_magic
pytz
pywinrm
requirements-detector
selenium
tlslite-ng
viewstate
];
configurePhase = ''
mkdir -p build/config
touch build/config/README.rst
'';
checkInputs = [
docker
flask
flask-httpauth
pytest
];
checkPhase = ''
# This tests require BWAPP Docker Container
sed -ie 's/test_a[0-9]//g' ./test/test_proto_http_open.py
sed -ie 's/test_a[0-9]//g' ./test/test_proto_http_close.py
# This tests require network connectivity
sed -ie 's/test_is_date_unsyncd//g' ./test/test_proto_http_open.py
sed -ie 's/test_is_date_unsyncd//g' ./test/test_proto_http_close.py
# Remove impurities
substituteInPlace ./test/conftest.py \
--replace "import wait" "" \
--replace "if not os.path.exists(name):" "if os.path.exists(name):" \
--replace "from test.mock import graphql_server" "" \
--replace "(graphql_server.start, 'MockGraphQLServer', ['proto_graphql'])," "" \
pytest --asserts-module 'iot' \
test/test_iot_phone.py
pytest --asserts-module 'ot' \
test/test_ot_powerlogic.py
pytest --asserts-module 'proto_http' \
test/test_proto_{http_close,http_open}.py
pytest --asserts-module 'proto_rest' \
test/test_proto_rest.py
# This file launches mock docker containers and servers
# let's remove it to create a custom test environment
rm test/conftest.py
pytest \
test/test_cloud_aws_terraform_{cloudfront,dynamodb,ebs,ec2,elb}.py \
test/test_cloud_aws_terraform_{fsx,iam,kms,rds,s3}.py \
test/test_cloud_aws_cloudformation_{cloudfront,dynamodb,ec2,elb,elb2}.py \
test/test_cloud_aws_cloudformation_{fsx,iam,kms,rds,s3,secretsmanager}.py \
test/test_format_{apk,jks,jwt,pdf,pkcs12,string}.py \
test/test_helper_{asynchronous,crypto}.py \
test/test_lang_{javascript,java}.py \
test/test_lang_{core,csharp,docker,dotnetconfig,html,php,python,rpgle}.py \
test/test_utils_generic.py
'';
meta = with lib; {
description = "Assertion Library for Security Assumptions";
homepage = "https://gitlab.com/fluidattacks/asserts";
license = licenses.mpl20;
maintainers = with maintainers; [
kamadorueda
];
broken = true; # dependency tree is too fragile for nixpkgs
};
}