1{ lib, buildPythonPackage, fetchPypi, isPy27, fetchpatch
2, aws-xray-sdk
3, backports_tempfile
4, boto3
5, botocore
6, cfn-lint
7, docker
8, flask
9, freezegun
10, jinja2
11, jsondiff
12, mock
13, pyaml
14, python-jose
15, pytz
16, requests
17, responses
18, six
19, sshpubkeys
20, sure
21, werkzeug
22, xmltodict
23, parameterized
24, idna
25, nose
26, pytestCheckHook
27}:
28
29buildPythonPackage rec {
30 pname = "moto";
31 version = "1.3.16";
32
33 src = fetchPypi {
34 inherit pname version;
35 sha256 = "0zy0prsyip264i6h03lxsn1qg1n3dc8c4iyfawckjqvm24gnns3c";
36 };
37
38 postPatch = ''
39 substituteInPlace setup.py \
40 --replace "ecdsa<0.15" "ecdsa" \
41 --replace "idna<3,>=2.5" "idna" \
42 --replace "MarkupSafe<2.0" "MarkupSafe" \
43 '';
44
45 patches = [
46 # Remove dependence on boto. The boto library (long ago superseded by boto3)
47 # has not had an official release in over two years or even a commit in the
48 # last 18 months. These patches should be included in the next moto release
49 # after 1.3.16
50 (fetchpatch {
51 url = "https://github.com/spulec/moto/pull/3503/commits/ae85c539fd57034c4d5cfd0f95af41ff19862dd1.patch";
52 sha256 = "16hr2py6q701d8ih6zcvs3lbanshpbk15ixckgdqngjf160k5m9p";
53 excludes = ["tests/test_ec2/test_ec2_cloudformation.py"];
54 })
55 (fetchpatch {
56 url = "https://github.com/spulec/moto/pull/3468/commits/6ee39bd7fda4d3623569e10dcd9561bf2cd1d0bd.patch";
57 sha256 = "10m3xdqxgys7spav9mkbhcn4z0124rlprwxnw6ysb10610xlna0i";
58 })
59 ];
60
61 propagatedBuildInputs = [
62 aws-xray-sdk
63 boto3
64 botocore
65 cfn-lint
66 docker
67 flask # required for server
68 jinja2
69 jsondiff
70 mock
71 pyaml
72 python-jose
73 pytz
74 six
75 requests
76 responses
77 sshpubkeys
78 werkzeug
79 xmltodict
80 idna
81 ] ++ lib.optionals isPy27 [ backports_tempfile ];
82
83 # Next release after 1.3.16 will not require `nose`
84 checkInputs = [ boto3 nose freezegun pytestCheckHook sure parameterized ];
85
86 # Multiple test files still import boto, rather than boto3 like
87 # boto is long-deprecated and broken on python3.9
88 # https://github.com/spulec/moto/blob/63ce647123755e4c4693a89f52c254596004c098/tests/test_autoscaling/test_autoscaling.py#L2
89 # NOTE: This should change to use disabledTestFiles / disabledTestPaths once that
90 # feature stabalizes: see #113153 (mostly the discussion therein), #113167, #110700
91 pytestFlagsArray = [
92 "--ignore=tests/test_awslambda/test_policy.py"
93 "--ignore=tests/test_autoscaling/test_autoscaling.py"
94 "--ignore=tests/test_autoscaling/test_cloudformation.py"
95 "--ignore=tests/test_autoscaling/test_elbv2.py"
96 "--ignore=tests/test_autoscaling/test_launch_configurations.py"
97 "--ignore=tests/test_autoscaling/test_policies.py"
98 "--ignore=tests/test_autoscaling/test_server.py"
99 "--ignore=tests/test_awslambda/test_lambda.py"
100 "--ignore=tests/test_awslambda/test_lambda_cloudformation.py"
101 "--ignore=tests/test_batch/test_cloudformation.py"
102 "--ignore=tests/test_batch/test_server.py"
103 "--ignore=tests/test_cloudformation/test_cloudformation_depends_on.py"
104 "--ignore=tests/test_cloudformation/test_cloudformation_stack_crud.py"
105 "--ignore=tests/test_cloudformation/test_cloudformation_stack_crud_boto3.py"
106 "--ignore=tests/test_cloudformation/test_cloudformation_stack_integration.py"
107 "--ignore=tests/test_cloudformation/test_stack_parsing.py"
108 "--ignore=tests/test_cloudformation/test_validate.py"
109 "--ignore=tests/test_cloudwatch/test_cloudwatch.py"
110 "--ignore=tests/test_cognitoidentity/test_server.py"
111 "--ignore=tests/test_config/test_config.py"
112 "--ignore=tests/test_core/test_auth.py"
113 "--ignore=tests/test_core/test_decorator_calls.py"
114 "--ignore=tests/test_core/test_nested.py"
115 "--ignore=tests/test_core/test_server.py"
116 "--ignore=tests/test_datapipeline/test_datapipeline.py"
117 "--ignore=tests/test_datapipeline/test_server.py"
118 "--ignore=tests/test_datasync/test_datasync.py"
119 "--ignore=tests/test_dynamodb/test_dynamodb.py"
120 "--ignore=tests/test_dynamodb/test_dynamodb_table_with_range_key.py"
121 "--ignore=tests/test_dynamodb/test_dynamodb_table_without_range_key.py"
122 "--ignore=tests/test_dynamodb/test_server.py"
123 "--ignore=tests/test_dynamodb2/test_dynamodb.py"
124 "--ignore=tests/test_dynamodb2/test_dynamodb_table_with_range_key.py"
125 "--ignore=tests/test_dynamodb2/test_dynamodb_table_without_range_key.py"
126 "--ignore=tests/test_dynamodb2/test_server.py"
127 "--ignore=tests/test_ec2/test_amazon_dev_pay.py"
128 "--ignore=tests/test_ec2/test_amis.py"
129 "--ignore=tests/test_ec2/test_availability_zones_and_regions.py"
130 "--ignore=tests/test_ec2/test_customer_gateways.py"
131 "--ignore=tests/test_ec2/test_dhcp_options.py"
132 "--ignore=tests/test_ec2/test_elastic_block_store.py"
133 "--ignore=tests/test_ec2/test_elastic_ip_addresses.py"
134 "--ignore=tests/test_ec2/test_elastic_network_interfaces.py"
135 "--ignore=tests/test_ec2/test_general.py"
136 "--ignore=tests/test_ec2/test_instances.py"
137 "--ignore=tests/test_ec2/test_internet_gateways.py"
138 "--ignore=tests/test_ec2/test_ip_addresses.py"
139 "--ignore=tests/test_ec2/test_key_pairs.py"
140 "--ignore=tests/test_ec2/test_monitoring.py"
141 "--ignore=tests/test_ec2/test_network_acls.py"
142 "--ignore=tests/test_ec2/test_placement_groups.py"
143 "--ignore=tests/test_ec2/test_regions.py"
144 "--ignore=tests/test_ec2/test_reserved_instances.py"
145 "--ignore=tests/test_ec2/test_route_tables.py"
146 "--ignore=tests/test_ec2/test_security_groups.py"
147 "--ignore=tests/test_ec2/test_spot_instances.py"
148 "--ignore=tests/test_ec2/test_subnets.py"
149 "--ignore=tests/test_ec2/test_tags.py"
150 "--ignore=tests/test_ec2/test_virtual_private_gateways.py"
151 "--ignore=tests/test_ec2/test_vm_export.py"
152 "--ignore=tests/test_ec2/test_vm_import.py"
153 "--ignore=tests/test_ec2/test_vpc_peering.py"
154 "--ignore=tests/test_ec2/test_vpcs.py"
155 "--ignore=tests/test_ec2/test_vpn_connections.py"
156 "--ignore=tests/test_ec2/test_vpn_connections.py"
157 "--ignore=tests/test_ec2/test_windows.py"
158 "--ignore=tests/test_ecs/test_ecs_boto3.py"
159 "--ignore=tests/test_elb/test_elb.py"
160 "--ignore=tests/test_elb/test_server.py"
161 "--ignore=tests/test_elbv2/test_elbv2.py"
162 "--ignore=tests/test_elbv2/test_server.py"
163 "--ignore=tests/test_emr/test_emr.py"
164 "--ignore=tests/test_emr/test_server.py"
165 "--ignore=tests/test_glacier/test_glacier_archives.py"
166 "--ignore=tests/test_glacier/test_glacier_jobs.py"
167 "--ignore=tests/test_glacier/test_glacier_vaults.py"
168 "--ignore=tests/test_iam/test_iam.py"
169 "--ignore=tests/test_iam/test_iam_cloudformation.py"
170 "--ignore=tests/test_iam/test_iam_groups.py"
171 "--ignore=tests/test_iam/test_server.py"
172 "--ignore=tests/test_iot/test_server.py"
173 "--ignore=tests/test_iotdata/test_server.py"
174 "--ignore=tests/test_kinesis/test_kinesis.py"
175 "--ignore=tests/test_kinesis/test_kinesis_cloudformation.py"
176 "--ignore=tests/test_kinesis/test_server.py"
177 "--ignore=tests/test_kinesisvideo/test_server.py"
178 "--ignore=tests/test_kinesisvideoarchivedmedia/test_server.py"
179 "--ignore=tests/test_kms/test_kms.py"
180 "--ignore=tests/test_kms/test_server.py"
181 "--ignore=tests/test_kms/test_utils.py"
182 "--ignore=tests/test_logs/test_logs.py"
183 "--ignore=tests/test_polly/test_server.py"
184 "--ignore=tests/test_rds/test_rds.py"
185 "--ignore=tests/test_rds/test_server.py"
186 "--ignore=tests/test_rds2/test_server.py"
187 "--ignore=tests/test_redshift/test_redshift.py"
188 "--ignore=tests/test_redshift/test_server.py"
189 "--ignore=tests/test_resourcegroupstaggingapi/test_resourcegroupstaggingapi.py"
190 "--ignore=tests/test_route53/test_route53.py"
191 "--ignore=tests/test_s3/test_s3.py"
192 "--ignore=tests/test_s3/test_s3_cloudformation.py"
193 "--ignore=tests/test_s3/test_s3_lifecycle.py"
194 "--ignore=tests/test_s3/test_s3_storageclass.py"
195 "--ignore=tests/test_s3/test_s3_utils.py"
196 "--ignore=tests/test_s3bucket_path/test_s3bucket_path.py"
197 "--ignore=tests/test_s3bucket_path/test_s3bucket_path_combo.py"
198 "--ignore=tests/test_secretsmanager/test_server.py"
199 "--ignore=tests/test_ses/test_server.py"
200 "--ignore=tests/test_ses/test_ses.py"
201 "--ignore=tests/test_ses/test_ses_boto3.py"
202 "--ignore=tests/test_ses/test_ses_sns_boto3.py"
203 "--ignore=tests/test_sns/test_application.py"
204 "--ignore=tests/test_sns/test_application_boto3.py"
205 "--ignore=tests/test_sns/test_publishing.py"
206 "--ignore=tests/test_sns/test_publishing_boto3.py"
207 "--ignore=tests/test_sns/test_server.py"
208 "--ignore=tests/test_sns/test_subscriptions.py"
209 "--ignore=tests/test_sns/test_subscriptions_boto3.py"
210 "--ignore=tests/test_sns/test_topics.py"
211 "--ignore=tests/test_sns/test_topics_boto3.py"
212 "--ignore=tests/test_sqs/test_server.py"
213 "--ignore=tests/test_sqs/test_sqs.py"
214 "--ignore=tests/test_ssm/test_ssm_boto3.py"
215 "--ignore=tests/test_ssm/test_ssm_docs.py"
216 "--ignore=tests/test_sts/test_server.py"
217 "--ignore=tests/test_sts/test_sts.py"
218 "--ignore=tests/test_swf/models/test_activity_task.py"
219 "--ignore=tests/test_swf/models/test_decision_task.py"
220 "--ignore=tests/test_swf/models/test_timeout.py"
221 "--ignore=tests/test_swf/models/test_workflow_execution.py"
222 "--ignore=tests/test_swf/responses/test_activity_tasks.py"
223 "--ignore=tests/test_swf/responses/test_activity_types.py"
224 "--ignore=tests/test_swf/responses/test_decision_tasks.py"
225 "--ignore=tests/test_swf/responses/test_domains.py"
226 "--ignore=tests/test_swf/responses/test_timeouts.py"
227 "--ignore=tests/test_swf/responses/test_workflow_executions.py"
228 "--ignore=tests/test_swf/responses/test_workflow_types.py"
229 ];
230
231 disabledTests = [
232 # these tests rely on the network
233 "test_server"
234 "test_managedblockchain_nodes"
235 "test_swf"
236 "test_simple_instance"
237 "test_passthrough_requests"
238 "test_s3_server_get"
239 "test_s3_server_bucket_create"
240 "test_s3_server_post_to_bucket"
241 "test_s3_server_put_ipv6"
242 "test_s3_server_put_ipv4"
243 "test_http_proxying_integration"
244 "test_submit_job_by_name"
245 "test_submit_job"
246 "test_list_jobs"
247 "test_terminate_job"
248 "test_idtoken_contains_kid_header"
249 "test_latest_meta_data"
250 "test_meta_data_iam"
251 "test_meta_data_security_credentials"
252 "test_meta_data_default_role"
253 "test_reset_api"
254 "test_data_api"
255 "test_requests_to_amazon_subdomains_dont_work"
256 "test_get_records_seq"
257 "test_stream_with_range_key"
258 "test_create_notebook_instance_bad_volume_size"
259 ];
260
261 meta = with lib; {
262 description = "Allows your tests to easily mock out AWS Services";
263 homepage = "https://github.com/spulec/moto";
264 license = licenses.asl20;
265 maintainers = [ ];
266 };
267}