nixpkgs/pkgs/development/python-modules/moto/default.nix
2023-03-03 23:57:10 +01:00

164 lines
5.5 KiB
Nix

{ lib
, stdenv
, buildPythonPackage
, fetchPypi
, pythonOlder
# build
, setuptools
# runtime
, aws-xray-sdk
, boto3
, botocore
, cfn-lint
, cryptography
, docker
, flask
, flask-cors
, graphql-core
, idna
, jinja2
, jsondiff
, openapi-spec-validator
, pyparsing
, python-dateutil
, python-jose
, pyyaml
, requests
, responses
, sshpubkeys
, werkzeug
, xmltodict
# tests
, freezegun
, pytestCheckHook
, pytest-xdist
, sure
}:
buildPythonPackage rec {
pname = "moto";
version = "4.1.3";
format = "pyproject";
disabled = pythonOlder "3.6";
src = fetchPypi {
inherit pname version;
hash = "sha256-yCAMyqlEDC6dqgvV4L12inGdtaLILqjXgvDj+gmjxeI=";
};
nativeBuildInputs = [
setuptools
];
propagatedBuildInputs = [
aws-xray-sdk
boto3
botocore
cfn-lint
cryptography
docker
flask
flask-cors
graphql-core
idna
jinja2
jsondiff
openapi-spec-validator
pyparsing
python-dateutil
python-jose
pyyaml
requests
responses
sshpubkeys
werkzeug
xmltodict
];
nativeCheckInputs = [
freezegun
pytestCheckHook
sure
];
pytestFlagsArray = [
# Disable tests that try to access the network
"--deselect=tests/test_cloudformation/test_cloudformation_custom_resources.py::test_create_custom_lambda_resource__verify_cfnresponse_failed"
"--deselect=tests/test_cloudformation/test_server.py::test_cloudformation_server_get"
"--deselect=tests/test_core/test_decorator_calls.py::test_context_manager"
"--deselect=tests/test_core/test_decorator_calls.py::test_decorator_start_and_stop"
"--deselect=tests/test_core/test_request_mocking.py::test_passthrough_requests"
"--deselect=tests/test_firehose/test_firehose_put.py::test_put_record_batch_http_destination"
"--deselect=tests/test_firehose/test_firehose_put.py::test_put_record_http_destination"
"--deselect=tests/test_logs/test_integration.py::test_put_subscription_filter_with_lambda"
"--deselect=tests/test_sqs/test_integration.py::test_invoke_function_from_sqs_exception"
"--deselect=tests/test_sqs/test_sqs_integration.py::test_invoke_function_from_sqs_exception"
"--deselect=tests/test_stepfunctions/test_stepfunctions.py::test_state_machine_creation_fails_with_invalid_names"
"--deselect=tests/test_stepfunctions/test_stepfunctions.py::test_state_machine_list_executions_with_pagination"
"--deselect=tests/test_iotdata/test_iotdata.py::test_update"
"--deselect=tests/test_iotdata/test_iotdata.py::test_basic"
"--deselect=tests/test_iotdata/test_iotdata.py::test_delete_field_from_device_shadow"
"--deselect=tests/test_iotdata/test_iotdata.py::test_publish"
"--deselect=tests/test_s3/test_server.py::test_s3_server_bucket_versioning"
"--deselect=tests/test_s3/test_multiple_accounts_server.py::TestAccountIdResolution::test_with_custom_request_header"
# Disable tests that require docker daemon
"--deselect=tests/test_events/test_events_lambdatriggers_integration.py::test_creating_bucket__invokes_lambda"
"--deselect=tests/test_s3/test_s3_lambda_integration.py::test_objectcreated_put__invokes_lambda"
# json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
"--deselect=tests/test_cloudformation/test_cloudformation_stack_integration.py::test_lambda_function"
# AssertionError: CloudWatch log event was not found.
"--deselect=tests/test_logs/test_integration.py::test_subscription_filter_applies_to_new_streams"
# KeyError: 'global'
"--deselect=tests/test_iotdata/test_server.py::test_iotdata_list"
"--deselect=tests/test_iotdata/test_server.py::test_publish"
# Blocks test execution
"--deselect=tests/test_utilities/test_threaded_server.py::TestThreadedMotoServer::test_load_data_from_inmemory_client"
] ++ lib.optionals (stdenv.isDarwin && stdenv.isAarch64) [
"--deselect=tests/test_utilities/test_threaded_server.py::test_threaded_moto_server__different_port"
"--deselect=tests/test_utilities/test_threaded_server.py::TestThreadedMotoServer::test_server_can_handle_multiple_services"
"--deselect=tests/test_utilities/test_threaded_server.py::TestThreadedMotoServer::test_server_is_reachable"
# AssertionError: expected `{0}` to be greater than `{1}`
"--deselect=tests/test_databrew/test_databrew_recipes.py::test_publish_recipe"
];
disabledTestPaths = [
# xml.parsers.expat.ExpatError: out of memory: line 1, column 0
"tests/test_sts/test_sts.py"
# botocore.exceptions.NoCredentialsError: Unable to locate credentials
"tests/test_redshiftdata/test_redshiftdata.py"
# Tries to access the network
"tests/test_appsync/test_appsync_schema.py"
"tests/test_awslambda/test_lambda_eventsourcemapping.py"
"tests/test_awslambda/test_lambda_invoke.py"
"tests/test_batch/test_batch_jobs.py"
"tests/test_kinesis/test_kinesis.py"
"tests/test_kinesis/test_kinesis_stream_consumers.py"
];
disabledTests = [
# only appears in aarch64 currently, but best to be safe
"test_state_machine_list_executions_with_filter"
# tests fail with 404 after Werkzeug 2.2 upgrade, see https://github.com/spulec/moto/issues/5341#issuecomment-1206995825
"test_appsync_list_tags_for_resource"
"test_s3_server_post_to_bucket_redirect"
];
meta = with lib; {
description = "Allows your tests to easily mock out AWS Services";
homepage = "https://github.com/spulec/moto";
changelog = "https://github.com/getmoto/moto/blob/${version}/CHANGELOG.md";
license = licenses.asl20;
maintainers = [ ];
};
}