211 lines
4.4 KiB
Nix
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
|
|
};
|
|
}
|