• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

ProteinsWebTeam / interpro7-api / 9887981828

11 Jul 2024 08:20AM UTC coverage: 93.827% (-0.2%) from 94.023%
9887981828

Pull #151

github

web-flow
Update webfront/serializers/content_serializers.py

Co-authored-by: Matthias Blum <mat.blum@gmail.com>
Pull Request #151: Replacing `_subset` with `_url` in filter by DB requests

429 of 436 new or added lines in 29 files covered. (98.39%)

6 existing lines in 5 files now uncovered.

9089 of 9687 relevant lines covered (93.83%)

0.94 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

95.45
/webfront/tests/tests_to_check_the_payload_structure_combining_endpoints.py
1
import unittest
1✔
2
import os
1✔
3

4
from rest_framework import status
1✔
5
from webfront.tests.InterproRESTTestCase import InterproRESTTestCase
1✔
6
from webfront.serializers.content_serializers import ModelContentSerializer
1✔
7

8
api_test_map = {
1✔
9
    "entry": {
10
        "interpro": ["IPR003165", "IPR001165"],
11
        "pfam": ["PF02171", "PF17180", "PF17176"],
12
        "smart": ["SM00950", "SM00002"],
13
        "profile": ["PS50822", "PS01031"],
14
        "interpro/pfam": ["PF02171"],
15
        "interpro/smart": ["SM00950"],
16
        "interpro/profile": ["PS50822"],
17
        "unintegrated/pfam": ["PF17180", "PF17176"],
18
        "unintegrated/smart": ["SM00002"],
19
        "unintegrated/profile": ["PS01031"],
20
    },
21
    "protein": {
22
        "uniprot": ["A1CUJ5", "M5ADK6", "A0A0A2L2G2", "P16582", "Q0VDM6"],
23
        "reviewed": ["A1CUJ5", "M5ADK6"],
24
        "unreviewed": ["A0A0A2L2G2", "P16582", "Q0VDM6"],
25
    },
26
    "structure": {"pdb": ["1JM7", "1T2V", "2BKM", "1JZ8"]},
27
    "taxonomy": {"uniprot": ["1", "2", "2579", "40296", "344612", "1001583", "10090"]},
28
    "proteome": {
29
        "uniprot": ["UP000006701", "UP000012042", "UP000030104", "UP000000589"]
30
    },
31
}
32
plurals = ModelContentSerializer.plurals
1✔
33

34

35
class ObjectStructureTwoEndpointsTest(InterproRESTTestCase):
1✔
36
    def test_endpoints_independently(self):
1✔
37
        for endpoint in api_test_map:
1✔
38
            current = f"/api/{endpoint}"
1✔
39
            response = self.client.get(current)
1✔
40
            self.assertEqual(
1✔
41
                response.status_code, status.HTTP_200_OK, f"URL: [{current}]"
42
            )
43
            self._check_counter_by_endpoint(
1✔
44
                endpoint, response.data, f"URL: [{current}]"
45
            )
46

47
            for db in api_test_map[endpoint]:
1✔
48
                current = f"/api/{endpoint}/{db}"
1✔
49
                response_db = self.client.get(current)
1✔
50
                self.assertEqual(
1✔
51
                    response_db.status_code,
52
                    status.HTTP_200_OK,
53
                    f"URL: [{current}]",
54
                )
55
                self.assertEqual(
1✔
56
                    len(response_db.data["results"]),
57
                    len(api_test_map[endpoint][db]),
58
                    f"URL: [{current}]",
59
                )
60
                self._check_is_list_of_metadata_objects(
1✔
61
                    response_db.data["results"], f"URL: [{current}]"
62
                )
63

64
                for acc in api_test_map[endpoint][db]:
1✔
65
                    current = f"/api/{endpoint}/{db}/{acc}"
1✔
66
                    response_acc = self.client.get(current)
1✔
67
                    self.assertEqual(
1✔
68
                        response_acc.status_code,
69
                        status.HTTP_200_OK,
70
                        f"URL: [{current}]",
71
                    )
72
                    self._check_object_by_accesssion(
1✔
73
                        response_acc.data, f"URL: [{current}]"
74
                    )
75

76
                    self._check_structure_and_chains(
1✔
77
                        response_acc, endpoint, db, acc, f"URL: [{current}]"
78
                    )
79

80
    def test_endpoint_endpoint(self):
1✔
81
        for endpoint1 in api_test_map:
1✔
82
            for endpoint2 in api_test_map:
1✔
83
                if endpoint1 == endpoint2:
1✔
84
                    continue
1✔
85

86
                # [endpoint]/[endpoint]
87
                current = f"/api/{endpoint1}/{endpoint2}"
1✔
88
                response = self.client.get(current)
1✔
89
                self.assertEqual(
1✔
90
                    response.status_code,
91
                    status.HTTP_200_OK,
92
                    f"URL : [{current}]",
93
                )
94
                self._check_counter_by_endpoint(
1✔
95
                    endpoint1, response.data, f"URL : [{current}]"
96
                )
97
                self._check_counter_by_endpoint(
1✔
98
                    endpoint2, response.data, f"URL : [{current}]"
99
                )
100

101
    def test_db_endpoint(self):
1✔
102
        for endpoint1 in api_test_map:
1✔
103
            for endpoint2 in api_test_map:
1✔
104
                if endpoint1 == endpoint2:
1✔
105
                    continue
1✔
106
                for db in api_test_map[endpoint1]:
1✔
107
                    # [endpoint]/[db]/[endpoint]
108
                    current = f"/api/{endpoint1}/{db}/{endpoint2}"
1✔
109
                    response = self._get_in_debug_mode(current)
1✔
110
                    if response.status_code == status.HTTP_200_OK:
1✔
111
                        self.assertEqual(
1✔
112
                            response.status_code,
113
                            status.HTTP_200_OK,
114
                            f"URL : [{current}]",
115
                        )
116
                        self._check_is_list_of_metadata_objects(
1✔
117
                            response.data["results"], f"URL : [{current}]"
118
                        )
119
                        self._check_is_list_of_objects_with_key(
1✔
120
                            response.data["results"],
121
                            plurals[endpoint2],
122
                            f"URL : [{current}]",
123
                        )
124
                    elif response.status_code != status.HTTP_204_NO_CONTENT:
1✔
125
                        self.assertEqual(
×
126
                            response.status_code, status.HTTP_204_NO_CONTENT
127
                        )
128

129
    def test_endpoint_db(self):
1✔
130
        for endpoint1 in api_test_map:
1✔
131
            for endpoint2 in api_test_map:
1✔
132
                if endpoint1 == endpoint2:
1✔
133
                    continue
1✔
134
                for db in api_test_map[endpoint1]:
1✔
135
                    # [endpoint]/[endpoint]/[db]
136
                    current = f"/api/{endpoint2}/{endpoint1}/{db}/"
1✔
137
                    response = self._get_in_debug_mode(current)
1✔
138
                    if response.status_code == status.HTTP_200_OK:
1✔
139
                        self.assertEqual(
1✔
140
                            response.status_code,
141
                            status.HTTP_200_OK,
142
                            f"URL : [{current}]",
143
                        )
144
                        self._check_counter_by_endpoint(
1✔
145
                            endpoint2, response.data, f"URL : [{current}]"
146
                        )
147
                        self._check_count_overview_per_endpoints(
1✔
148
                            response.data,
149
                            plurals[endpoint1],
150
                            plurals[endpoint2],
151
                            f"URL : [{current}]",
152
                        )
153
                    elif response.status_code != status.HTTP_204_NO_CONTENT:
1✔
154
                        self.fail(
×
155
                            "unexpected error code {} for the URL : [{}]".format(
156
                                response.status_code, current
157
                            )
158
                        )
159

160
    def test_acc_endpoint(self):
1✔
161
        for endpoint1 in api_test_map:
1✔
162
            for endpoint2 in api_test_map:
1✔
163
                if endpoint1 == endpoint2:
1✔
164
                    continue
1✔
165
                for db in api_test_map[endpoint1]:
1✔
166
                    for acc in api_test_map[endpoint1][db]:
1✔
167
                        # [endpoint]/[db]/[acc]/[endpoint]
168
                        current = f"/api/{endpoint1}/{db}/{acc}/{endpoint2}"
1✔
169
                        response = self._get_in_debug_mode(current)
1✔
170
                        if response.status_code == status.HTTP_200_OK:
1✔
171
                            self.assertEqual(
1✔
172
                                response.status_code,
173
                                status.HTTP_200_OK,
174
                                f"URL : [{current}]",
175
                            )
176
                            self._check_object_by_accesssion(
1✔
177
                                response.data, f"URL : [{current}]"
178
                            )
179
                            self._check_counter_by_endpoint(
1✔
180
                                endpoint2, response.data, f"URL : [{current}]"
181
                            )
182
                            self._check_structure_and_chains(
1✔
183
                                response, endpoint1, db, acc, f"/{endpoint2}"
184
                            )
185
                        elif response.status_code != status.HTTP_204_NO_CONTENT:
1✔
186
                            self.assertEqual(
×
187
                                response.status_code, status.HTTP_204_NO_CONTENT
188
                            )
189

190
    def test_endpoint_acc(self):
1✔
191
        for endpoint1 in api_test_map:
1✔
192
            for endpoint2 in api_test_map:
1✔
193
                if endpoint1 == endpoint2:
1✔
194
                    continue
1✔
195
                for db in api_test_map[endpoint1]:
1✔
196
                    for acc in api_test_map[endpoint1][db]:
1✔
197
                        # [endpoint]/[endpoint]/[db]/[acc]
198
                        current = f"/api/{endpoint2}/{endpoint1}/{db}/{acc}/"
1✔
199
                        response = self._get_in_debug_mode(current)
1✔
200
                        if response.status_code == status.HTTP_200_OK:
1✔
201
                            self.assertEqual(
1✔
202
                                response.status_code,
203
                                status.HTTP_200_OK,
204
                                f"URL : [{current}]",
205
                            )
206
                            self._check_counter_by_endpoint(
1✔
207
                                endpoint2, response.data, f"URL : [{current}]"
208
                            )
209
                            self._check_structure_chains_as_counter_filter(
1✔
210
                                endpoint1,
211
                                db,
212
                                acc,
213
                                endpoint2,
214
                                "",
215
                                plurals[endpoint1],
216
                                plurals[endpoint2],
217
                            )
218
                        elif response.status_code != status.HTTP_204_NO_CONTENT:
1✔
219
                            self.fail("ONLY 204 Errors are expected")
×
220

221
    def test_db_db(self):
1✔
222
        for endpoint1 in api_test_map:
1✔
223
            for endpoint2 in api_test_map:
1✔
224
                if endpoint1 == endpoint2:
1✔
225
                    continue
1✔
226
                for db in api_test_map[endpoint1]:
1✔
227
                    # [endpoint]/[db]/[endpoint]/[db]
228
                    for db2 in api_test_map[endpoint2]:
1✔
229
                        current = f"/api/{endpoint1}/{db}/{endpoint2}/{db2}"
1✔
230
                        response = self._get_in_debug_mode(current)
1✔
231
                        if response.status_code == status.HTTP_200_OK:
1✔
232
                            self._check_is_list_of_metadata_objects(
1✔
233
                                response.data["results"], f"URL : [{current}]"
234
                            )
235
                            key2 = f"{plurals[endpoint2]}_url"
1✔
236
                            for result in [x[key2] for x in response.data["results"]]:
1✔
237
                                self.assertURL(
1✔
238
                                    result,
239
                                    f"The URL in {key2}: {result} is not valid | URL: {current}",
240
                                )
241

242
                        elif response.status_code != status.HTTP_204_NO_CONTENT:
1✔
243
                            self.assertEqual(
×
244
                                response.status_code,
245
                                status.HTTP_204_NO_CONTENT,
246
                                f"URL : [{current}]",
247
                            )
248

249
    def test_db_acc(self):
1✔
250
        for endpoint1 in api_test_map:
1✔
251
            for endpoint2 in api_test_map:
1✔
252
                if endpoint1 == endpoint2:
1✔
253
                    continue
1✔
254
                for db in api_test_map[endpoint1]:
1✔
255
                    for db2 in api_test_map[endpoint2]:
1✔
256
                        for acc in api_test_map[endpoint1][db]:
1✔
257
                            # [endpoint]/[db]/[endpoint]/[db]/[acc]
258
                            current = f"/api/{endpoint2}/{db2}/{endpoint1}/{db}/{acc}/"
1✔
259
                            response = self._get_in_debug_mode(current)
1✔
260
                            if response.status_code == status.HTTP_200_OK:
1✔
261
                                self.assertEqual(
1✔
262
                                    response.status_code,
263
                                    status.HTTP_200_OK,
264
                                    f"URL : [{current}]",
265
                                )
266
                                self._check_is_list_of_metadata_objects(
1✔
267
                                    response.data["results"]
268
                                )
269
                                for result in [
1✔
270
                                    x[plurals[endpoint1]]
271
                                    for x in response.data["results"]
272
                                ]:
273
                                    self._check_list_of_matches(
1✔
274
                                        result,
275
                                        check_coordinates=endpoint1 != "taxonomy"
276
                                        and endpoint1 != "proteome",
277
                                        msg=f"URL : [{current}]",
278
                                    )
279
                                self._check_structure_chains_as_filter(
1✔
280
                                    endpoint1,
281
                                    db,
282
                                    acc,
283
                                    f"{endpoint2}/{db2}",
284
                                    "",
285
                                    plurals[endpoint1],
286
                                )
287
                            elif response.status_code != status.HTTP_204_NO_CONTENT:
1✔
288
                                self.assertEqual(
×
289
                                    response.status_code,
290
                                    status.HTTP_204_NO_CONTENT,
291
                                    f"URL : [{current}]",
292
                                )
293

294
    def test_acc_db(self):
1✔
295
        for endpoint1 in api_test_map:
1✔
296
            for endpoint2 in api_test_map:
1✔
297
                if endpoint1 == endpoint2:
1✔
298
                    continue
1✔
299
                for db in api_test_map[endpoint1]:
1✔
300
                    for db2 in api_test_map[endpoint2]:
1✔
301
                        for acc in api_test_map[endpoint1][db]:
1✔
302
                            # [endpoint]/[db]/[acc]/[endpoint]/[db]
303
                            current = f"/api/{endpoint1}/{db}/{acc}/{endpoint2}/{db2}"
1✔
304
                            response = self._get_in_debug_mode(current)
1✔
305
                            if response.status_code == status.HTTP_200_OK:
1✔
306
                                self.assertEqual(
1✔
307
                                    response.status_code,
308
                                    status.HTTP_200_OK,
309
                                    f"URL : [{current}]",
310
                                )
311
                                self._check_object_by_accesssion(
1✔
312
                                    response.data, f"URL : [{current}]"
313
                                )
314
                                key = f"{plurals[endpoint2]}_url"
1✔
315
                                self.assertURL(
1✔
316
                                    response.data[key],
317
                                    f"The URL in {key}: {response.data[key]} is not valid | URL: {current}",
318
                                )
319
                            elif response.status_code != status.HTTP_204_NO_CONTENT:
1✔
320
                                self.assertEqual(
×
321
                                    response.status_code, status.HTTP_204_NO_CONTENT
322
                                )
323

324
    def test_acc_acc(self):
1✔
325
        for endpoint1 in api_test_map:
1✔
326
            for endpoint2 in api_test_map:
1✔
327
                if endpoint1 == endpoint2:
1✔
328
                    continue
1✔
329
                for db in api_test_map[endpoint1]:
1✔
330
                    for db2 in api_test_map[endpoint2]:
1✔
331
                        for acc in api_test_map[endpoint1][db]:
1✔
332
                            # [endpoint]/[db]/[acc]/[endpoint]/[db]/[acc]
333
                            for acc2 in api_test_map[endpoint2][db2]:
1✔
334
                                current = "/api/{}/{}/{}/{}/{}/{}".format(
1✔
335
                                    endpoint1, db, acc, endpoint2, db2, acc2
336
                                )
337
                                response = self._get_in_debug_mode(current)
1✔
338
                                if response.status_code == status.HTTP_200_OK:
1✔
339
                                    self.assertEqual(
1✔
340
                                        response.status_code,
341
                                        status.HTTP_200_OK,
342
                                        f"URL : [{current}]",
343
                                    )
344
                                    self._check_object_by_accesssion(response.data)
1✔
345
                                    self._check_list_of_matches(
1✔
346
                                        response.data[plurals[endpoint2]],
347
                                        check_coordinates=endpoint2 != "taxonomy"
348
                                        and endpoint2 != "proteome",
349
                                        msg=f"URL : [{current}]",
350
                                    )
351
                                    self._check_structure_and_chains(
1✔
352
                                        response,
353
                                        endpoint1,
354
                                        db,
355
                                        acc,
356
                                        f"/{endpoint2}/{db2}/{acc2}",
357
                                        plurals[endpoint2],
358
                                    )
359
                                    self._check_structure_chains_as_filter(
1✔
360
                                        endpoint2,
361
                                        db2,
362
                                        acc2,
363
                                        f"{endpoint1}/{db}/{acc}",
364
                                        "",
365
                                        plurals[endpoint2],
366
                                    )
367
                                elif response.status_code != status.HTTP_204_NO_CONTENT:
1✔
368
                                    self.assertEqual(
×
369
                                        response.status_code,
370
                                        status.HTTP_204_NO_CONTENT,
371
                                        f"URL : [{current}]",
372
                                    )
373

374

375
@unittest.skipIf(
1✔
376
    "TRAVIS" in os.environ and os.environ["TRAVIS"] == "true",
377
    "Skipping this test on Travis CI.",
378
)
379
class ObjectStructureThreeEndpointsTest(InterproRESTTestCase):
1✔
380
    def test_endpoint_endpoint_endpoint(self):
1✔
381
        for endpoint1 in api_test_map:
1✔
382
            for endpoint2 in api_test_map:
1✔
383
                if endpoint1 == endpoint2:
1✔
384
                    continue
1✔
385
                for endpoint3 in api_test_map:
1✔
386
                    if endpoint3 == endpoint1 or endpoint3 == endpoint2:
1✔
387
                        continue
1✔
388

389
                    # [endpoint]/[endpoint]
390
                    current = f"/api/{endpoint1}/{endpoint2}/{endpoint3}"
1✔
391
                    response = self.client.get(current)
1✔
392
                    self.assertEqual(
1✔
393
                        response.status_code,
394
                        status.HTTP_200_OK,
395
                        f"URL : [{current}]",
396
                    )
397
                    self._check_counter_by_endpoint(
1✔
398
                        endpoint1, response.data, f"URL : [{current}]"
399
                    )
400
                    self._check_counter_by_endpoint(
1✔
401
                        endpoint2, response.data, f"URL : [{current}]"
402
                    )
403
                    self._check_counter_by_endpoint(
1✔
404
                        endpoint3, response.data, f"URL : [{current}]"
405
                    )
406

407
    def test_endpoint_db_endpoint(self):
1✔
408
        for endpoint1 in api_test_map:
1✔
409
            for endpoint2 in api_test_map:
1✔
410
                if endpoint1 == endpoint2:
1✔
411
                    continue
1✔
412
                for endpoint3 in api_test_map:
1✔
413
                    if endpoint3 == endpoint1 or endpoint3 == endpoint2:
1✔
414
                        continue
1✔
415
                    for db1 in api_test_map[endpoint1]:
1✔
416
                        # [endpoint]/[endpoint]/[db]/[endpoint]
417
                        current = f"/api/{endpoint2}/{endpoint1}/{db1}/{endpoint3}"
1✔
418
                        response = self._get_in_debug_mode(current)
1✔
419
                        if response.status_code == status.HTTP_200_OK:
1✔
420
                            self.assertEqual(
1✔
421
                                response.status_code,
422
                                status.HTTP_200_OK,
423
                                f"URL : [{current}]",
424
                            )
425
                            self._check_counter_by_endpoint(
1✔
426
                                endpoint2, response.data, f"URL : [{current}]"
427
                            )
428
                            self._check_counter_by_endpoint(
1✔
429
                                endpoint3, response.data, f"URL : [{current}]"
430
                            )
431
                        elif response.status_code != status.HTTP_204_NO_CONTENT:
1✔
UNCOV
432
                            self.assertEqual(
×
433
                                response.status_code, status.HTTP_204_NO_CONTENT
434
                            )
435

436
    def test_db_endpoint_endpoint(self):
1✔
437
        for endpoint1 in api_test_map:
1✔
438
            for endpoint2 in api_test_map:
1✔
439
                if endpoint1 == endpoint2:
1✔
440
                    continue
1✔
441
                for endpoint3 in api_test_map:
1✔
442
                    if endpoint3 == endpoint1 or endpoint3 == endpoint2:
1✔
443
                        continue
1✔
444
                    for db1 in api_test_map[endpoint1]:
1✔
445
                        # [endpoint]/[db]/[endpoint]/[endpoint]
446
                        current = f"/api/{endpoint1}/{db1}/{endpoint2}/{endpoint3}"
1✔
447
                        response = self._get_in_debug_mode(current)
1✔
448
                        if response.status_code == status.HTTP_200_OK:
1✔
449
                            self.assertEqual(
1✔
450
                                response.status_code,
451
                                status.HTTP_200_OK,
452
                                f"URL : [{current}]",
453
                            )
454
                            self._check_is_list_of_metadata_objects(
1✔
455
                                response.data["results"], f"URL : [{current}]"
456
                            )
457
                            self._check_is_list_of_objects_with_key(
1✔
458
                                response.data["results"],
459
                                plurals[endpoint2],
460
                                f"URL : [{current}]",
461
                            )
462
                        elif response.status_code != status.HTTP_204_NO_CONTENT:
1✔
463
                            self.assertEqual(
×
464
                                response.status_code, status.HTTP_204_NO_CONTENT
465
                            )
466

467
    def test_endpoint_endpoint_acc(self):
1✔
468
        for endpoint1 in api_test_map:
1✔
469
            for endpoint2 in api_test_map:
1✔
470
                if endpoint1 == endpoint2:
1✔
471
                    continue
1✔
472
                for endpoint3 in api_test_map:
1✔
473
                    if endpoint3 == endpoint1 or endpoint3 == endpoint2:
1✔
474
                        continue
1✔
475
                    for db1 in api_test_map[endpoint1]:
1✔
476
                        for acc in api_test_map[endpoint1][db1]:
1✔
477
                            # [endpoint]/[endpoint]/[endpoint]/[db]/[acc]
478
                            current = (
1✔
479
                                f"/api/{endpoint2}/{endpoint3}/{endpoint1}/{db1}/{acc}/"
480
                            )
481
                            response = self._get_in_debug_mode(current)
1✔
482
                            if response.status_code == status.HTTP_200_OK:
1✔
483
                                self.assertEqual(
1✔
484
                                    response.status_code,
485
                                    status.HTTP_200_OK,
486
                                    f"URL : [{current}]",
487
                                )
488
                                self._check_counter_by_endpoint(
1✔
489
                                    endpoint2,
490
                                    response.data,
491
                                    f"URL : [{current}]",
492
                                )
493
                                self._check_counter_by_endpoint(
1✔
494
                                    endpoint3,
495
                                    response.data,
496
                                    f"URL : [{current}]",
497
                                )
498
                                self._check_structure_chains_as_counter_filter(
1✔
499
                                    endpoint1,
500
                                    db1,
501
                                    acc,
502
                                    f"{endpoint2}/{endpoint3}",
503
                                    "",
504
                                    plurals[endpoint1],
505
                                    plurals[endpoint2],
506
                                )
507
                            elif response.status_code != status.HTTP_204_NO_CONTENT:
1✔
508
                                self.fail(
×
509
                                    "The response for [{}] had an HTTP error differen to 204".format(
510
                                        current
511
                                    )
512
                                )
513

514
    def test_endpoint_endpoint_db(self):
1✔
515
        for endpoint1 in api_test_map:
1✔
516
            for endpoint2 in api_test_map:
1✔
517
                if endpoint1 == endpoint2:
1✔
518
                    continue
1✔
519
                for endpoint3 in api_test_map:
1✔
520
                    if endpoint3 == endpoint1 or endpoint3 == endpoint2:
1✔
521
                        continue
1✔
522
                    for db1 in api_test_map[endpoint1]:
1✔
523
                        # [endpoint]/[endpoint]/[endpoint]/[db]
524
                        current = f"/api/{endpoint2}/{endpoint3}/{endpoint1}/{db1}/"
1✔
525
                        response = self._get_in_debug_mode(current)
1✔
526
                        if response.status_code == status.HTTP_200_OK:
1✔
527
                            self.assertEqual(
1✔
528
                                response.status_code,
529
                                status.HTTP_200_OK,
530
                                f"URL : [{current}]",
531
                            )
532
                            self._check_counter_by_endpoint(
1✔
533
                                endpoint2, response.data, f"URL : [{current}]"
534
                            )
535
                            self._check_counter_by_endpoint(
1✔
536
                                endpoint3, response.data, f"URL : [{current}]"
537
                            )
538
                            self._check_count_overview_per_endpoints(
1✔
539
                                response.data,
540
                                plurals[endpoint1],
541
                                plurals[endpoint2],
542
                                f"URL : [{current}]",
543
                            )
544
                        elif response.status_code != status.HTTP_204_NO_CONTENT:
1✔
545
                            self.fail(
×
546
                                "The response for [{}] had an HTTP error differen to 204".format(
547
                                    current
548
                                )
549
                            )
550

551
    def test_endpoint_acc_endpoint(self):
1✔
552
        for endpoint1 in api_test_map:
1✔
553
            for endpoint2 in api_test_map:
1✔
554
                if endpoint1 == endpoint2:
1✔
555
                    continue
1✔
556
                for endpoint3 in api_test_map:
1✔
557
                    if endpoint3 == endpoint1 or endpoint3 == endpoint2:
1✔
558
                        continue
1✔
559
                    for db1 in api_test_map[endpoint1]:
1✔
560
                        for acc in api_test_map[endpoint1][db1]:
1✔
561
                            # [endpoint]/[endpoint]/[db]/[acc]/[endpoint]
562
                            current = (
1✔
563
                                f"/api/{endpoint2}/{endpoint1}/{db1}/{acc}/{endpoint3}"
564
                            )
565
                            response = self._get_in_debug_mode(current)
1✔
566
                            if response.status_code == status.HTTP_200_OK:
1✔
567
                                self.assertEqual(
1✔
568
                                    response.status_code,
569
                                    status.HTTP_200_OK,
570
                                    f"URL : [{current}]",
571
                                )
572
                                self._check_counter_by_endpoint(
1✔
573
                                    endpoint2,
574
                                    response.data,
575
                                    f"URL : [{current}]",
576
                                )
577
                                self._check_counter_by_endpoint(
1✔
578
                                    endpoint3,
579
                                    response.data,
580
                                    f"URL : [{current}]",
581
                                )
582
                                self._check_structure_chains_as_counter_filter(
1✔
583
                                    endpoint1,
584
                                    db1,
585
                                    acc,
586
                                    endpoint2,
587
                                    f"/{endpoint3}",
588
                                    plurals[endpoint1],
589
                                    plurals[endpoint2],
590
                                )
591
                            elif response.status_code != status.HTTP_204_NO_CONTENT:
1✔
592
                                self.fail(
×
593
                                    "The response for [{}] had an HTTP error differen to 204".format(
594
                                        current
595
                                    )
596
                                )
597

598
    def test_acc_endpoint_endpoint(self):
1✔
599
        for endpoint1 in api_test_map:
1✔
600
            for endpoint2 in api_test_map:
1✔
601
                if endpoint1 == endpoint2:
1✔
602
                    continue
1✔
603
                for endpoint3 in api_test_map:
1✔
604
                    if endpoint3 == endpoint1 or endpoint3 == endpoint2:
1✔
605
                        continue
1✔
606
                    for db1 in api_test_map[endpoint1]:
1✔
607
                        for acc in api_test_map[endpoint1][db1]:
1✔
608
                            # [endpoint]/[db]/[acc]/[endpoint]/[endpoint]
609
                            current = (
1✔
610
                                f"/api/{endpoint1}/{db1}/{acc}/{endpoint2}/{endpoint3}"
611
                            )
612
                            response = self._get_in_debug_mode(current)
1✔
613

614
                            if response.status_code == status.HTTP_200_OK:
1✔
615
                                self.assertEqual(
1✔
616
                                    response.status_code,
617
                                    status.HTTP_200_OK,
618
                                    f"URL : [{current}]",
619
                                )
620
                                self._check_object_by_accesssion(
1✔
621
                                    response.data, f"URL : [{current}]"
622
                                )
623
                                self._check_counter_by_endpoint(
1✔
624
                                    endpoint2,
625
                                    response.data,
626
                                    f"URL : [{current}]",
627
                                )
628
                                self._check_counter_by_endpoint(
1✔
629
                                    endpoint3,
630
                                    response.data,
631
                                    f"URL : [{current}]",
632
                                )
633
                                self._check_structure_and_chains(
1✔
634
                                    response,
635
                                    endpoint1,
636
                                    db1,
637
                                    acc,
638
                                    f"/{endpoint2}/{endpoint3}",
639
                                )
640
                            elif response.status_code != status.HTTP_204_NO_CONTENT:
1✔
641
                                self.assertEqual(
×
642
                                    response.status_code, status.HTTP_204_NO_CONTENT
643
                                )
644

645
    def test_db_db_endpoint(self):
1✔
646
        for endpoint1 in api_test_map:
1✔
647
            for endpoint2 in api_test_map:
1✔
648
                if endpoint1 == endpoint2:
1✔
649
                    continue
1✔
650
                for endpoint3 in api_test_map:
1✔
651
                    if endpoint3 == endpoint1 or endpoint3 == endpoint2:
1✔
652
                        continue
1✔
653
                    for db1 in api_test_map[endpoint1]:
1✔
654
                        # [endpoint]/[db]/[endpoint]/[db]/[endpoint]
655
                        for db2 in api_test_map[endpoint2]:
1✔
656
                            current = (
1✔
657
                                f"/api/{endpoint1}/{db1}/{endpoint2}/{db2}/{endpoint3}"
658
                            )
659
                            response = self._get_in_debug_mode(current)
1✔
660
                            if response.status_code == status.HTTP_200_OK:
1✔
661
                                self._check_is_list_of_metadata_objects(
1✔
662
                                    response.data["results"],
663
                                    f"URL : [{current}]",
664
                                )
665

666
                                key = f"{plurals[endpoint2]}_url"
1✔
667
                                self._check_is_list_of_objects_with_key(
1✔
668
                                    response.data["results"],
669
                                    key,
670
                                    f"URL : [{current}]",
671
                                )
672
                                for result in [
1✔
673
                                    x[key] for x in response.data["results"]
674
                                ]:
675
                                    self.assertURL(
1✔
676
                                        result,
677
                                        f"The URL in {key}: {result} is not valid | URL: {current}",
678
                                    )
679
                                self._check_is_list_of_objects_with_key(
1✔
680
                                    response.data["results"],
681
                                    plurals[endpoint3],
682
                                    f"URL : [{current}]",
683
                                )
684
                            elif response.status_code != status.HTTP_204_NO_CONTENT:
1✔
685
                                self.assertEqual(
×
686
                                    response.status_code, status.HTTP_204_NO_CONTENT
687
                                )
688

689
    def test_db_endpoint_db(self):
1✔
690
        for endpoint1 in api_test_map:
1✔
691
            for endpoint2 in api_test_map:
1✔
692
                if endpoint1 == endpoint2:
1✔
693
                    continue
1✔
694
                for endpoint3 in api_test_map:
1✔
695
                    if endpoint3 == endpoint1 or endpoint3 == endpoint2:
1✔
696
                        continue
1✔
697
                    for db1 in api_test_map[endpoint1]:
1✔
698
                        for db2 in api_test_map[endpoint2]:
1✔
699
                            # [endpoint]/[db]/[endpoint]/[endpoint]/[db]
700
                            current = (
1✔
701
                                f"/api/{endpoint1}/{db1}/{endpoint3}/{endpoint2}/{db2}"
702
                            )
703
                            response = self._get_in_debug_mode(current)
1✔
704
                            if response.status_code == status.HTTP_200_OK:
1✔
705
                                self._check_is_list_of_metadata_objects(
1✔
706
                                    response.data["results"],
707
                                    f"URL : [{current}]",
708
                                )
709
                                key2 = f"{plurals[endpoint2]}_url"
1✔
710
                                self._check_is_list_of_objects_with_key(
1✔
711
                                    response.data["results"],
712
                                    key2,
713
                                    f"URL : [{current}]",
714
                                )
715
                                for result in [
1✔
716
                                    x[key2] for x in response.data["results"]
717
                                ]:
718
                                    self.assertURL(
1✔
719
                                        result,
720
                                        f"The URL in {key2}: {result} is not valid | URL: {current}",
721
                                    )
722
                                self._check_is_list_of_objects_with_key(
1✔
723
                                    response.data["results"],
724
                                    plurals[endpoint3],
725
                                    f"URL : [{current}]",
726
                                )
727
                            elif response.status_code != status.HTTP_204_NO_CONTENT:
1✔
728
                                self.assertEqual(
×
729
                                    response.status_code, status.HTTP_204_NO_CONTENT
730
                                )
731

732
    def test_endpoint_db_db(self):
1✔
733
        for endpoint1 in api_test_map:
1✔
734
            for endpoint2 in api_test_map:
1✔
735
                if endpoint1 == endpoint2:
1✔
736
                    continue
1✔
737
                for endpoint3 in api_test_map:
1✔
738
                    if endpoint3 == endpoint1 or endpoint3 == endpoint2:
1✔
739
                        continue
1✔
740
                    for db1 in api_test_map[endpoint1]:
1✔
741
                        for db2 in api_test_map[endpoint2]:
1✔
742
                            # [endpoint]/[endpoint]/[db]/[endpoint]/[db]
743
                            current = (
1✔
744
                                f"/api/{endpoint3}/{endpoint2}/{db2}/{endpoint1}/{db1}"
745
                            )
746
                            response = self._get_in_debug_mode(current)
1✔
747
                            if response.status_code == status.HTTP_200_OK:
1✔
748
                                self.assertEqual(
1✔
749
                                    response.status_code,
750
                                    status.HTTP_200_OK,
751
                                    f"URL : [{current}]",
752
                                )
753
                                self._check_counter_by_endpoint(
1✔
754
                                    endpoint3,
755
                                    response.data,
756
                                    f"URL : [{current}]",
757
                                )
758
                                self._check_count_overview_per_endpoints(
1✔
759
                                    response.data,
760
                                    plurals[endpoint2],
761
                                    plurals[endpoint3],
762
                                    f"URL : [{current}]",
763
                                )
764
                                self._check_count_overview_per_endpoints(
1✔
765
                                    response.data,
766
                                    plurals[endpoint1],
767
                                    plurals[endpoint3],
768
                                    f"URL : [{current}]",
769
                                )
770
                            elif response.status_code != status.HTTP_204_NO_CONTENT:
1✔
771
                                self.fail(
×
772
                                    "The response for [{}] had an HTTP error differen to 204".format(
773
                                        current
774
                                    )
775
                                )
776

777
    def test_acc_db_endpoint(self):
1✔
778
        for endpoint1 in api_test_map:
1✔
779
            for endpoint2 in api_test_map:
1✔
780
                if endpoint1 == endpoint2:
1✔
781
                    continue
1✔
782
                for endpoint3 in api_test_map:
1✔
783
                    if endpoint3 == endpoint1 or endpoint3 == endpoint2:
1✔
784
                        continue
1✔
785
                    for db1 in api_test_map[endpoint1]:
1✔
786
                        for db2 in api_test_map[endpoint2]:
1✔
787
                            for acc1 in api_test_map[endpoint1][db1]:
1✔
788
                                # [endpoint]/[db]/[acc]/[endpoint]/[db]/[endpoint]
789
                                current = f"/api/{endpoint1}/{db1}/{acc1}/{endpoint2}/{db2}/{endpoint3}"
1✔
790
                                response = self._get_in_debug_mode(current)
1✔
791
                                if response.status_code == status.HTTP_200_OK:
1✔
792
                                    self.assertEqual(
1✔
793
                                        response.status_code,
794
                                        status.HTTP_200_OK,
795
                                        f"URL : [{current}]",
796
                                    )
797
                                    self._check_object_by_accesssion(
1✔
798
                                        response.data, f"URL : [{current}]"
799
                                    )
800
                                    key2 = f"{plurals[endpoint2]}_url"
1✔
801
                                    self.assertURL(
1✔
802
                                        response.data[key2],
803
                                        f"The URL in {key2}: {response.data[key2]} is not valid | URL: {current}",
804
                                    )
805
                                    self._check_counter_by_endpoint(
1✔
806
                                        endpoint3,
807
                                        response.data,
808
                                        f"URL : [{current}]",
809
                                    )
810
                                    self._check_structure_and_chains(
1✔
811
                                        response,
812
                                        endpoint1,
813
                                        db1,
814
                                        acc1,
815
                                        f"/{endpoint2}/{db2}/{endpoint3}",
816
                                    )
817
                                elif response.status_code != status.HTTP_204_NO_CONTENT:
1✔
818
                                    self.assertEqual(
×
819
                                        response.status_code, status.HTTP_204_NO_CONTENT
820
                                    )
821

822
    def test_acc_endpoint_db(self):
1✔
823
        for endpoint1 in api_test_map:
1✔
824
            for endpoint2 in api_test_map:
1✔
825
                if endpoint1 == endpoint2:
1✔
826
                    continue
1✔
827
                for endpoint3 in api_test_map:
1✔
828
                    if endpoint3 == endpoint1 or endpoint3 == endpoint2:
1✔
829
                        continue
1✔
830
                    for db1 in api_test_map[endpoint1]:
1✔
831
                        for db2 in api_test_map[endpoint2]:
1✔
832
                            for acc1 in api_test_map[endpoint1][db1]:
1✔
833
                                # [endpoint]/[db]/[acc]/[endpoint]/[endpoint]/[db]
834
                                current = f"/api/{endpoint1}/{db1}/{acc1}/{endpoint3}/{endpoint2}/{db2}"
1✔
835
                                response = self._get_in_debug_mode(current)
1✔
836
                                if response.status_code == status.HTTP_200_OK:
1✔
837
                                    self.assertEqual(
1✔
838
                                        response.status_code,
839
                                        status.HTTP_200_OK,
840
                                        f"URL : [{current}]",
841
                                    )
842
                                    self._check_object_by_accesssion(
1✔
843
                                        response.data, f"URL : [{current}]"
844
                                    )
845
                                    key2 = f"{plurals[endpoint2]}_url"
1✔
846
                                    self.assertURL(
1✔
847
                                        response.data[key2],
848
                                        f"The URL in {key2}: {response.data[key2]} is not valid | URL: {current}",
849
                                    )
850
                                    self._check_counter_by_endpoint(
1✔
851
                                        endpoint3,
852
                                        response.data,
853
                                        f"URL : [{current}]",
854
                                    )
855
                                    self._check_structure_and_chains(
1✔
856
                                        response,
857
                                        endpoint1,
858
                                        db1,
859
                                        acc1,
860
                                        f"/{endpoint3}/{endpoint2}/{db2}",
861
                                    )
862
                                elif response.status_code != status.HTTP_204_NO_CONTENT:
1✔
863
                                    self.assertEqual(
×
864
                                        response.status_code, status.HTTP_204_NO_CONTENT
865
                                    )
866

867
    def test_db_acc_endpoint(self):
1✔
868
        for endpoint1 in api_test_map:
1✔
869
            for endpoint2 in api_test_map:
1✔
870
                if endpoint1 == endpoint2:
1✔
871
                    continue
1✔
872
                for endpoint3 in api_test_map:
1✔
873
                    if endpoint3 == endpoint1 or endpoint3 == endpoint2:
1✔
874
                        continue
1✔
875
                    for db1 in api_test_map[endpoint1]:
1✔
876
                        for db2 in api_test_map[endpoint2]:
1✔
877
                            for acc1 in api_test_map[endpoint1][db1]:
1✔
878
                                # /[endpoint]/[db]/[endpoint]/[db]/[acc]/[endpoint]
879
                                current = f"/api/{endpoint2}/{db2}/{endpoint1}/{db1}/{acc1}/{endpoint3}"
1✔
880
                                response = self._get_in_debug_mode(current)
1✔
881
                                if response.status_code == status.HTTP_200_OK:
1✔
882
                                    self.assertEqual(
1✔
883
                                        response.status_code,
884
                                        status.HTTP_200_OK,
885
                                        f"URL : [{current}]",
886
                                    )
887
                                    self._check_is_list_of_metadata_objects(
1✔
888
                                        response.data["results"]
889
                                    )
890
                                    for result in [
1✔
891
                                        x[plurals[endpoint1]]
892
                                        for x in response.data["results"]
893
                                    ]:
894
                                        self._check_list_of_matches(
1✔
895
                                            result,
896
                                            check_coordinates=endpoint1 != "taxonomy"
897
                                            and endpoint1 != "proteome",
898
                                            msg=f"URL : [{current}]",
899
                                        )
900
                                    self._check_is_list_of_objects_with_key(
1✔
901
                                        response.data["results"],
902
                                        plurals[endpoint3],
903
                                        f"URL : [{current}]",
904
                                    )
905
                                    self._check_structure_chains_as_filter(
1✔
906
                                        endpoint1,
907
                                        db1,
908
                                        acc1,
909
                                        f"{endpoint2}/{db2}",
910
                                        f"/{endpoint3}",
911
                                        plurals[endpoint1],
912
                                    )
913
                                elif response.status_code != status.HTTP_204_NO_CONTENT:
1✔
914
                                    self.assertEqual(
×
915
                                        response.status_code, status.HTTP_204_NO_CONTENT
916
                                    )
917

918
    def test_db_endpoint_acc(self):
1✔
919
        for endpoint1 in api_test_map:
1✔
920
            for endpoint2 in api_test_map:
1✔
921
                if endpoint1 == endpoint2:
1✔
922
                    continue
1✔
923
                for endpoint3 in api_test_map:
1✔
924
                    if endpoint3 == endpoint1 or endpoint3 == endpoint2:
1✔
925
                        continue
1✔
926
                    for db1 in api_test_map[endpoint1]:
1✔
927
                        for db2 in api_test_map[endpoint2]:
1✔
928
                            for acc1 in api_test_map[endpoint1][db1]:
1✔
929
                                # /[endpoint]/[db]/[endpoint]/[endpoint]/[db]/[acc]
930
                                current = f"/api/{endpoint2}/{db2}/{endpoint3}/{endpoint1}/{db1}/{acc1}"
1✔
931
                                response = self._get_in_debug_mode(current)
1✔
932
                                if response.status_code == status.HTTP_200_OK:
1✔
933
                                    self.assertEqual(
1✔
934
                                        response.status_code,
935
                                        status.HTTP_200_OK,
936
                                        f"URL : [{current}]",
937
                                    )
938
                                    self._check_is_list_of_metadata_objects(
1✔
939
                                        response.data["results"]
940
                                    )
941
                                    for result in [
1✔
942
                                        x[plurals[endpoint1]]
943
                                        for x in response.data["results"]
944
                                    ]:
945
                                        self._check_list_of_matches(
1✔
946
                                            result,
947
                                            check_coordinates=endpoint1 != "taxonomy"
948
                                            and endpoint1 != "proteome",
949
                                            msg=f"URL : [{current}]",
950
                                        )
951
                                    self._check_is_list_of_objects_with_key(
1✔
952
                                        response.data["results"],
953
                                        plurals[endpoint3],
954
                                        f"URL : [{current}]",
955
                                    )
956
                                    self._check_structure_chains_as_filter(
1✔
957
                                        endpoint1,
958
                                        db1,
959
                                        acc1,
960
                                        f"{endpoint2}/{db2}/{endpoint3}",
961
                                        "",
962
                                        plurals[endpoint1],
963
                                    )
964
                                elif response.status_code != status.HTTP_204_NO_CONTENT:
1✔
965
                                    self.assertEqual(
×
966
                                        response.status_code, status.HTTP_204_NO_CONTENT
967
                                    )
968

969
    def test_endpoint_db_acc(self):
1✔
970
        for endpoint1 in api_test_map:
1✔
971
            for endpoint2 in api_test_map:
1✔
972
                if endpoint1 == endpoint2:
1✔
973
                    continue
1✔
974
                for endpoint3 in api_test_map:
1✔
975
                    if endpoint3 == endpoint1 or endpoint3 == endpoint2:
1✔
976
                        continue
1✔
977
                    for db1 in api_test_map[endpoint1]:
1✔
978
                        for db2 in api_test_map[endpoint2]:
1✔
979
                            for acc1 in api_test_map[endpoint1][db1]:
1✔
980
                                # /[endpoint]/[endpoint]/[db]/[endpoint]/[db]/[acc]
981
                                current = f"/api/{endpoint3}/{endpoint2}/{db2}/{endpoint1}/{db1}/{acc1}"
1✔
982
                                response = self._get_in_debug_mode(current)
1✔
983
                                if response.status_code == status.HTTP_200_OK:
1✔
984
                                    self.assertEqual(
1✔
985
                                        response.status_code,
986
                                        status.HTTP_200_OK,
987
                                        f"URL : [{current}]",
988
                                    )
989
                                    self._check_counter_by_endpoint(
1✔
990
                                        endpoint3,
991
                                        response.data,
992
                                        f"URL : [{current}]",
993
                                    )
994
                                    self._check_count_overview_per_endpoints(
1✔
995
                                        response.data,
996
                                        plurals[endpoint2],
997
                                        plurals[endpoint3],
998
                                        f"URL : [{current}]",
999
                                    )
1000

1001
                                    self._check_structure_chains_as_counter_filter(
1✔
1002
                                        endpoint1,
1003
                                        db1,
1004
                                        acc1,
1005
                                        f"{endpoint3}/{endpoint2}/{db2}/",
1006
                                        "",
1007
                                        plurals[endpoint1],
1008
                                        plurals[endpoint3],
1009
                                    )
1010
                                elif response.status_code != status.HTTP_204_NO_CONTENT:
1✔
1011
                                    self.fail(
×
1012
                                        "The response for [{}] had an HTTP error differen to 204".format(
1013
                                            current
1014
                                        )
1015
                                    )
1016

1017
    def test_endpoint_acc_db(self):
1✔
1018
        for endpoint1 in api_test_map:
1✔
1019
            for endpoint2 in api_test_map:
1✔
1020
                if endpoint1 == endpoint2:
1✔
1021
                    continue
1✔
1022
                for endpoint3 in api_test_map:
1✔
1023
                    if endpoint3 == endpoint1 or endpoint3 == endpoint2:
1✔
1024
                        continue
1✔
1025
                    for db1 in api_test_map[endpoint1]:
1✔
1026
                        for db2 in api_test_map[endpoint2]:
1✔
1027
                            for acc1 in api_test_map[endpoint1][db1]:
1✔
1028
                                # /[endpoint]/[endpoint]/[db]/[acc]/[endpoint]/[db]
1029
                                current = f"/api/{endpoint3}/{endpoint1}/{db1}/{acc1}/{endpoint2}/{db2}"
1✔
1030
                                response = self._get_in_debug_mode(current)
1✔
1031
                                if response.status_code == status.HTTP_200_OK:
1✔
1032
                                    self.assertEqual(
1✔
1033
                                        response.status_code,
1034
                                        status.HTTP_200_OK,
1035
                                        f"URL : [{current}]",
1036
                                    )
1037
                                    self._check_counter_by_endpoint(
1✔
1038
                                        endpoint3,
1039
                                        response.data,
1040
                                        f"URL : [{current}]",
1041
                                    )
1042
                                    self._check_count_overview_per_endpoints(
1✔
1043
                                        response.data,
1044
                                        plurals[endpoint2],
1045
                                        plurals[endpoint3],
1046
                                        f"URL : [{current}]",
1047
                                    )
1048

1049
                                    self._check_structure_chains_as_counter_filter(
1✔
1050
                                        endpoint1,
1051
                                        db1,
1052
                                        acc1,
1053
                                        endpoint3,
1054
                                        f"/{endpoint2}/{db2}",
1055
                                        plurals[endpoint1],
1056
                                        plurals[endpoint3],
1057
                                    )
1058
                                elif response.status_code != status.HTTP_204_NO_CONTENT:
1✔
1059
                                    self.fail(
×
1060
                                        "unexpected error code {} for the URL : [{}]".format(
1061
                                            response.status_code, current
1062
                                        )
1063
                                    )
1064

1065
    def test_acc_acc_endpoint(self):
1✔
1066
        tested = []
1✔
1067
        for endpoint1 in api_test_map:
1✔
1068
            for endpoint2 in api_test_map:
1✔
1069
                if endpoint1 == endpoint2:
1✔
1070
                    continue
1✔
1071
                for endpoint3 in api_test_map:
1✔
1072
                    if endpoint3 == endpoint1 or endpoint3 == endpoint2:
1✔
1073
                        continue
1✔
1074
                    for db1 in api_test_map[endpoint1]:
1✔
1075
                        for db2 in api_test_map[endpoint2]:
1✔
1076
                            for acc1 in api_test_map[endpoint1][db1]:
1✔
1077
                                for acc2 in api_test_map[endpoint2][db2]:
1✔
1078
                                    # [endpoint]/[db]/[acc]/[endpoint]/[db]/[acc]/[endpoint]
1079
                                    current = f"/api/{endpoint1}/{db1}/{acc1}/{endpoint2}/{db2}/{acc2}/{endpoint3}"
1✔
1080
                                    tested.append(current)
1✔
1081
                                    response = self._get_in_debug_mode(current)
1✔
1082
                                    if response.status_code == status.HTTP_200_OK:
1✔
1083
                                        self.assertEqual(
1✔
1084
                                            response.status_code,
1085
                                            status.HTTP_200_OK,
1086
                                            f"URL : [{current}]",
1087
                                        )
1088
                                        self._check_object_by_accesssion(response.data)
1✔
1089
                                        self._check_list_of_matches(
1✔
1090
                                            response.data[plurals[endpoint2]],
1091
                                            check_coordinates=endpoint2 != "taxonomy"
1092
                                            and endpoint2 != "proteome",
1093
                                            msg=f"URL : [{current}]",
1094
                                        )
1095
                                        self._check_counter_by_endpoint(
1✔
1096
                                            endpoint3,
1097
                                            response.data,
1098
                                            f"URL : [{current}]",
1099
                                        )
1100

1101
                                        tested += self._check_structure_and_chains(
1✔
1102
                                            response,
1103
                                            endpoint1,
1104
                                            db1,
1105
                                            acc1,
1106
                                            f"/{endpoint2}/{db2}/{acc2}/{endpoint3}",
1107
                                        )
1108

1109
                                        tested += (
1✔
1110
                                            self._check_structure_chains_as_filter(
1111
                                                endpoint2,
1112
                                                db2,
1113
                                                acc2,
1114
                                                f"{endpoint1}/{db1}/{acc1}",
1115
                                                f"/{endpoint3}",
1116
                                            )
1117
                                        )
1118

1119
                                    elif (
1✔
1120
                                        response.status_code
1121
                                        != status.HTTP_204_NO_CONTENT
1122
                                    ):
1123
                                        self.assertEqual(
×
1124
                                            response.status_code,
1125
                                            status.HTTP_204_NO_CONTENT,
1126
                                        )
1127

1128
    def test_acc_endpoint_acc(self):
1✔
1129
        for endpoint1 in api_test_map:
1✔
1130
            for endpoint2 in api_test_map:
1✔
1131
                if endpoint1 == endpoint2:
1✔
1132
                    continue
1✔
1133
                for endpoint3 in api_test_map:
1✔
1134
                    if endpoint3 == endpoint1 or endpoint3 == endpoint2:
1✔
1135
                        continue
1✔
1136
                    for db1 in api_test_map[endpoint1]:
1✔
1137
                        for db2 in api_test_map[endpoint2]:
1✔
1138
                            for acc1 in api_test_map[endpoint1][db1]:
1✔
1139
                                for acc2 in api_test_map[endpoint2][db2]:
1✔
1140
                                    # [endpoint]/[db]/[acc]/[endpoint]/[endpoint]/[db]/[acc]
1141
                                    current = f"/api/{endpoint1}/{db1}/{acc1}/{endpoint3}/{endpoint2}/{db2}/{acc2}"
1✔
1142
                                    response = self._get_in_debug_mode(current)
1✔
1143
                                    if response.status_code == status.HTTP_200_OK:
1✔
1144
                                        self.assertEqual(
1✔
1145
                                            response.status_code,
1146
                                            status.HTTP_200_OK,
1147
                                            f"URL : [{current}]",
1148
                                        )
1149
                                        self._check_object_by_accesssion(response.data)
1✔
1150
                                        self._check_list_of_matches(
1✔
1151
                                            response.data[plurals[endpoint2]],
1152
                                            check_coordinates=endpoint2 != "taxonomy"
1153
                                            and endpoint2 != "proteome",
1154
                                            msg=f"URL : [{current}]",
1155
                                        )
1156
                                        self._check_counter_by_endpoint(
1✔
1157
                                            endpoint3,
1158
                                            response.data,
1159
                                            f"URL : [{current}]",
1160
                                        )
1161

1162
                                        self._check_structure_and_chains(
1✔
1163
                                            response,
1164
                                            endpoint1,
1165
                                            db1,
1166
                                            acc1,
1167
                                            f"/{endpoint3}/{endpoint2}/{db2}/{acc2}",
1168
                                        )
1169

1170
                                        self._check_structure_chains_as_filter(
1✔
1171
                                            endpoint2,
1172
                                            db2,
1173
                                            acc2,
1174
                                            f"{endpoint1}/{db1}/{acc1}/{endpoint3}",
1175
                                            "",
1176
                                        )
1177
                                    elif (
1✔
1178
                                        response.status_code
1179
                                        != status.HTTP_204_NO_CONTENT
1180
                                    ):
1181
                                        self.assertEqual(
×
1182
                                            response.status_code,
1183
                                            status.HTTP_204_NO_CONTENT,
1184
                                        )
1185

1186
    def test_endpoint_acc_acc(self):
1✔
1187
        for endpoint1 in api_test_map:
1✔
1188
            for endpoint2 in api_test_map:
1✔
1189
                if endpoint1 == endpoint2:
1✔
1190
                    continue
1✔
1191
                for endpoint3 in api_test_map:
1✔
1192
                    if endpoint3 == endpoint1 or endpoint3 == endpoint2:
1✔
1193
                        continue
1✔
1194
                    for db1 in api_test_map[endpoint1]:
1✔
1195
                        for db2 in api_test_map[endpoint2]:
1✔
1196
                            for acc1 in api_test_map[endpoint1][db1]:
1✔
1197
                                for acc2 in api_test_map[endpoint2][db2]:
1✔
1198
                                    # /[endpoint]/[endpoint]/[db]/[acc]/[endpoint]/[db]/[acc]
1199
                                    current = f"/api/{endpoint3}/{endpoint1}/{db1}/{acc1}/{endpoint2}/{db2}/{acc2}"
1✔
1200

1201
                                    response = self._get_in_debug_mode(current)
1✔
1202
                                    if response.status_code == status.HTTP_200_OK:
1✔
1203
                                        self.assertEqual(
1✔
1204
                                            response.status_code,
1205
                                            status.HTTP_200_OK,
1206
                                            f"URL : [{current}]",
1207
                                        )
1208
                                        self._check_counter_by_endpoint(
1✔
1209
                                            endpoint3,
1210
                                            response.data,
1211
                                            f"URL : [{current}]",
1212
                                        )
1213
                                        self._check_structure_chains_as_counter_filter(
1✔
1214
                                            endpoint1,
1215
                                            db1,
1216
                                            acc1,
1217
                                            endpoint3,
1218
                                            f"/{endpoint2}/{db2}/{acc2}",
1219
                                            plurals[endpoint1],
1220
                                            plurals[endpoint3],
1221
                                        )
1222
                                        self._check_structure_chains_as_counter_filter(
1✔
1223
                                            endpoint2,
1224
                                            db2,
1225
                                            acc2,
1226
                                            f"{endpoint3}/{endpoint1}/{db1}/{acc1}",
1227
                                            "",
1228
                                            plurals[endpoint2],
1229
                                            plurals[endpoint3],
1230
                                        )
1231
                                    elif (
1✔
1232
                                        response.status_code
1233
                                        != status.HTTP_204_NO_CONTENT
1234
                                    ):
1235
                                        self.fail(
×
1236
                                            "unexpected error code {} for the URL : [{}]".format(
1237
                                                response.status_code, current
1238
                                            )
1239
                                        )
1240

1241
    def test_db_db_db(self):
1✔
1242
        for endpoint1 in api_test_map:
1✔
1243
            for endpoint2 in api_test_map:
1✔
1244
                if endpoint1 == endpoint2:
1✔
1245
                    continue
1✔
1246
                for endpoint3 in api_test_map:
1✔
1247
                    if endpoint3 == endpoint1 or endpoint3 == endpoint2:
1✔
1248
                        continue
1✔
1249
                    for db1 in api_test_map[endpoint1]:
1✔
1250
                        for db2 in api_test_map[endpoint2]:
1✔
1251
                            for db3 in api_test_map[endpoint3]:
1✔
1252
                                current = f"/api/{endpoint1}/{db1}/{endpoint2}/{db2}/{endpoint3}/{db3}"
1✔
1253
                                response = self._get_in_debug_mode(current)
1✔
1254
                                if response.status_code == status.HTTP_200_OK:
1✔
1255
                                    self._check_is_list_of_metadata_objects(
1✔
1256
                                        response.data["results"],
1257
                                        f"URL : [{current}]",
1258
                                    )
1259
                                    key2 = f"{plurals[endpoint2]}_url"
1✔
1260
                                    self._check_is_list_of_objects_with_key(
1✔
1261
                                        response.data["results"],
1262
                                        key2,
1263
                                        f"URL : [{current}]",
1264
                                    )
1265
                                    for result in [
1✔
1266
                                        x[key2] for x in response.data["results"]
1267
                                    ]:
1268
                                        self.assertURL(
1✔
1269
                                            result,
1270
                                            f"The URL in {key2}: {result} is not valid | URL: {current}",
1271
                                        )
1272
                                    key3 = f"{plurals[endpoint3]}_url"
1✔
1273
                                    self._check_is_list_of_objects_with_key(
1✔
1274
                                        response.data["results"],
1275
                                        key3,
1276
                                        f"URL : [{current}]",
1277
                                    )
1278
                                    for result in [
1✔
1279
                                        x[key3] for x in response.data["results"]
1280
                                    ]:
1281
                                        self.assertURL(
1✔
1282
                                            result,
1283
                                            f"The URL in {key3}: {result} is not valid | URL: {current}",
1284
                                        )
1285
                                elif response.status_code != status.HTTP_204_NO_CONTENT:
1✔
1286
                                    self.assertEqual(
×
1287
                                        response.status_code,
1288
                                        status.HTTP_204_NO_CONTENT,
1289
                                        f"URL : [{current}]",
1290
                                    )
1291

1292
    def test_acc_db_db(self):
1✔
1293
        for endpoint1 in api_test_map:
1✔
1294
            for endpoint2 in api_test_map:
1✔
1295
                if endpoint1 == endpoint2:
1✔
1296
                    continue
1✔
1297
                for endpoint3 in api_test_map:
1✔
1298
                    if endpoint3 == endpoint1 or endpoint3 == endpoint2:
1✔
1299
                        continue
1✔
1300
                    for db1 in api_test_map[endpoint1]:
1✔
1301
                        for db2 in api_test_map[endpoint2]:
1✔
1302
                            for db3 in api_test_map[endpoint3]:
1✔
1303
                                for acc1 in api_test_map[endpoint1][db1]:
1✔
1304
                                    # [endpoint]/[db]/[acc]/[endpoint]/[db]/[endpoint]/[db]
1305
                                    current = f"/api/{endpoint1}/{db1}/{acc1}/{endpoint2}/{db2}/{endpoint3}/{db3}"
1✔
1306
                                    response = self._get_in_debug_mode(current)
1✔
1307
                                    if response.status_code == status.HTTP_200_OK:
1✔
1308
                                        self.assertEqual(
1✔
1309
                                            response.status_code,
1310
                                            status.HTTP_200_OK,
1311
                                            f"URL : [{current}]",
1312
                                        )
1313
                                        self._check_object_by_accesssion(
1✔
1314
                                            response.data, f"URL : [{current}]"
1315
                                        )
1316
                                        key2 = f"{plurals[endpoint2]}_url"
1✔
1317
                                        self.assertURL(
1✔
1318
                                            response.data[key2],
1319
                                            f"The URL in {key2}: {response.data[key2]} is not valid | URL: {current}",
1320
                                        )
1321
                                        key3 = f"{plurals[endpoint3]}_url"
1✔
1322
                                        self.assertURL(
1✔
1323
                                            response.data[key3],
1324
                                            f"The URL in {key3}: {response.data[key3]} is not valid | URL: {current}",
1325
                                        )
1326
                                        self._check_structure_and_chains(
1✔
1327
                                            response,
1328
                                            endpoint1,
1329
                                            db1,
1330
                                            acc1,
1331
                                            f"/{endpoint2}/{db2}/{endpoint3}/{db3}",
1332
                                        )
1333
                                    elif (
1✔
1334
                                        response.status_code
1335
                                        != status.HTTP_204_NO_CONTENT
1336
                                    ):
1337
                                        self.assertEqual(
×
1338
                                            response.status_code,
1339
                                            status.HTTP_204_NO_CONTENT,
1340
                                        )
1341

1342
    def test_db_acc_db(self):
1✔
1343
        for endpoint1 in api_test_map:
1✔
1344
            for endpoint2 in api_test_map:
1✔
1345
                if endpoint1 == endpoint2:
1✔
1346
                    continue
1✔
1347
                for endpoint3 in api_test_map:
1✔
1348
                    if endpoint3 == endpoint1 or endpoint3 == endpoint2:
1✔
1349
                        continue
1✔
1350
                    for db1 in api_test_map[endpoint1]:
1✔
1351
                        for db2 in api_test_map[endpoint2]:
1✔
1352
                            for db3 in api_test_map[endpoint3]:
1✔
1353
                                for acc1 in api_test_map[endpoint1][db1]:
1✔
1354
                                    # /[endpoint]/[db]/[endpoint]/[db]/[acc]/[endpoint]/[db]
1355
                                    current = f"/api/{endpoint2}/{db2}/{endpoint1}/{db1}/{acc1}/{endpoint3}/{db3}"
1✔
1356
                                    response = self._get_in_debug_mode(current)
1✔
1357
                                    if response.status_code == status.HTTP_200_OK:
1✔
1358
                                        self._check_is_list_of_metadata_objects(
1✔
1359
                                            response.data["results"]
1360
                                        )
1361
                                        for result in [
1✔
1362
                                            x[plurals[endpoint1]]
1363
                                            for x in response.data["results"]
1364
                                        ]:
1365
                                            self._check_list_of_matches(
1✔
1366
                                                result,
1367
                                                check_coordinates=endpoint1
1368
                                                != "taxonomy"
1369
                                                and endpoint1 != "proteome",
1370
                                                msg=f"URL : [{current}]",
1371
                                            )
1372
                                        key3 = f"{plurals[endpoint3]}_url"
1✔
1373
                                        for result in [
1✔
1374
                                            x[key3] for x in response.data["results"]
1375
                                        ]:
1376
                                            self.assertURL(
1✔
1377
                                                result,
1378
                                                f"The URL in {key3}: {result} is not valid | URL: {current}",
1379
                                            )
1380

1381
                                        self._check_structure_chains_as_filter(
1✔
1382
                                            endpoint1,
1383
                                            db1,
1384
                                            acc1,
1385
                                            f"{endpoint2}/{db2}",
1386
                                            f"/{endpoint3}/{db3}",
1387
                                            plurals[endpoint1],
1388
                                        )
1389
                                    elif (
1✔
1390
                                        response.status_code
1391
                                        != status.HTTP_204_NO_CONTENT
1392
                                    ):
1393
                                        self.assertEqual(
×
1394
                                            response.status_code,
1395
                                            status.HTTP_204_NO_CONTENT,
1396
                                        )
1397

1398
    def test_db_db_acc(self):
1✔
1399
        for endpoint1 in api_test_map:
1✔
1400
            for endpoint2 in api_test_map:
1✔
1401
                if endpoint1 == endpoint2:
1✔
1402
                    continue
1✔
1403
                for endpoint3 in api_test_map:
1✔
1404
                    if endpoint3 == endpoint1 or endpoint3 == endpoint2:
1✔
1405
                        continue
1✔
1406
                    for db1 in api_test_map[endpoint1]:
1✔
1407
                        for db2 in api_test_map[endpoint2]:
1✔
1408
                            for db3 in api_test_map[endpoint3]:
1✔
1409
                                for acc1 in api_test_map[endpoint1][db1]:
1✔
1410
                                    # /[endpoint]/[db]/[endpoint]/[db]/[endpoint]/[db]/[acc]
1411
                                    current = f"/api/{endpoint2}/{db2}/{endpoint3}/{db3}/{endpoint1}/{db1}/{acc1}"
1✔
1412
                                    response = self._get_in_debug_mode(current)
1✔
1413
                                    if response.status_code == status.HTTP_200_OK:
1✔
1414
                                        self._check_is_list_of_metadata_objects(
1✔
1415
                                            response.data["results"]
1416
                                        )
1417
                                        for result in [
1✔
1418
                                            x[plurals[endpoint1]]
1419
                                            for x in response.data["results"]
1420
                                        ]:
1421
                                            self._check_list_of_matches(
1✔
1422
                                                result,
1423
                                                check_coordinates=endpoint1
1424
                                                != "taxonomy"
1425
                                                and endpoint1 != "proteome",
1426
                                                msg=f"URL : [{current}]",
1427
                                            )
1428
                                        key3 = f"{plurals[endpoint3]}_url"
1✔
1429
                                        for result in [
1✔
1430
                                            x[key3] for x in response.data["results"]
1431
                                        ]:
1432
                                            self.assertURL(
1✔
1433
                                                result,
1434
                                                f"The URL in {key3}: {result} is not valid | URL: {current}",
1435
                                            )
1436

1437
                                        self._check_structure_chains_as_filter(
1✔
1438
                                            endpoint1,
1439
                                            db1,
1440
                                            acc1,
1441
                                            f"{endpoint2}/{db2}/{endpoint3}/{db3}",
1442
                                            "",
1443
                                            plurals[endpoint1],
1444
                                        )
1445

1446
                                    elif (
1✔
1447
                                        response.status_code
1448
                                        != status.HTTP_204_NO_CONTENT
1449
                                    ):
1450
                                        self.assertEqual(
×
1451
                                            response.status_code,
1452
                                            status.HTTP_204_NO_CONTENT,
1453
                                        )
1454

1455
    def test_acc_acc_db(self):
1✔
1456
        for endpoint1 in api_test_map:
1✔
1457
            for endpoint2 in api_test_map:
1✔
1458
                if endpoint1 == endpoint2:
1✔
1459
                    continue
1✔
1460
                for endpoint3 in api_test_map:
1✔
1461
                    if endpoint3 == endpoint1 or endpoint3 == endpoint2:
1✔
1462
                        continue
1✔
1463
                    for db1 in api_test_map[endpoint1]:
1✔
1464
                        for db2 in api_test_map[endpoint2]:
1✔
1465
                            for db3 in api_test_map[endpoint3]:
1✔
1466
                                for acc1 in api_test_map[endpoint1][db1]:
1✔
1467
                                    for acc2 in api_test_map[endpoint2][db2]:
1✔
1468
                                        # [endpoint]/[db]/[acc]/[endpoint]/[db]/[acc]/[endpoint]/[db]
1469
                                        current = f"/api/{endpoint1}/{db1}/{acc1}/{endpoint2}/{db2}/{acc2}/{endpoint3}/{db3}"
1✔
1470
                                        response = self._get_in_debug_mode(current)
1✔
1471
                                        if response.status_code == status.HTTP_200_OK:
1✔
1472
                                            self.assertEqual(
1✔
1473
                                                response.status_code,
1474
                                                status.HTTP_200_OK,
1475
                                                f"URL : [{current}]",
1476
                                            )
1477
                                            self._check_object_by_accesssion(
1✔
1478
                                                response.data
1479
                                            )
1480
                                            self._check_list_of_matches(
1✔
1481
                                                response.data[plurals[endpoint2]],
1482
                                                check_coordinates=endpoint2
1483
                                                != "taxonomy"
1484
                                                and endpoint2 != "proteome",
1485
                                                msg=f"URL : [{current}]",
1486
                                            )
1487
                                            key3 = f"{plurals[endpoint3]}_url"
1✔
1488
                                            self.assertURL(
1✔
1489
                                                response.data[key3],
1490
                                                f"The URL in {key3}: {response.data[key3]} is not valid | URL: {current}",
1491
                                            )
1492
                                            self._check_structure_and_chains(
1✔
1493
                                                response,
1494
                                                endpoint1,
1495
                                                db1,
1496
                                                acc1,
1497
                                                f"/{endpoint2}/{db2}/{acc2}/{endpoint3}/{db3}",
1498
                                            )
1499
                                            self._check_structure_chains_as_filter(
1✔
1500
                                                endpoint2,
1501
                                                db2,
1502
                                                acc2,
1503
                                                f"{endpoint1}/{db1}/{acc1}",
1504
                                                f"/{endpoint3}/{db3}",
1505
                                                plurals[endpoint2],
1506
                                            )
1507
                                        elif (
1✔
1508
                                            response.status_code
1509
                                            != status.HTTP_204_NO_CONTENT
1510
                                        ):
1511
                                            self.assertEqual(
×
1512
                                                response.status_code,
1513
                                                status.HTTP_204_NO_CONTENT,
1514
                                            )
1515

1516
    def test_acc_db_acc(self):
1✔
1517
        for endpoint1 in api_test_map:
1✔
1518
            for endpoint2 in api_test_map:
1✔
1519
                if endpoint1 == endpoint2:
1✔
1520
                    continue
1✔
1521
                for endpoint3 in api_test_map:
1✔
1522
                    if endpoint3 == endpoint1 or endpoint3 == endpoint2:
1✔
1523
                        continue
1✔
1524
                    for db1 in api_test_map[endpoint1]:
1✔
1525
                        for db2 in api_test_map[endpoint2]:
1✔
1526
                            for db3 in api_test_map[endpoint3]:
1✔
1527
                                for acc1 in api_test_map[endpoint1][db1]:
1✔
1528
                                    for acc2 in api_test_map[endpoint2][db2]:
1✔
1529
                                        # [endpoint]/[db]/[acc]/[endpoint]/[db]/[endpoint]/[db]/[acc]
1530
                                        current = f"/api/{endpoint1}/{db1}/{acc1}/{endpoint3}/{db3}/{endpoint2}/{db2}/{acc2}"
1✔
1531
                                        response = self._get_in_debug_mode(current)
1✔
1532
                                        if response.status_code == status.HTTP_200_OK:
1✔
1533
                                            self.assertEqual(
1✔
1534
                                                response.status_code,
1535
                                                status.HTTP_200_OK,
1536
                                                f"URL : [{current}]",
1537
                                            )
1538
                                            self._check_object_by_accesssion(
1✔
1539
                                                response.data
1540
                                            )
1541
                                            self._check_list_of_matches(
1✔
1542
                                                response.data[plurals[endpoint2]],
1543
                                                check_coordinates=endpoint2
1544
                                                != "taxonomy"
1545
                                                and endpoint2 != "proteome",
1546
                                                msg=f"URL : [{current}]",
1547
                                            )
1548
                                            key3 = f"{plurals[endpoint3]}_url"
1✔
1549
                                            self.assertURL(
1✔
1550
                                                response.data[key3],
1551
                                                f"The URL in {key3}: {response.data[key3]} is not valid | URL: {current}",
1552
                                            )
1553
                                            self._check_structure_and_chains(
1✔
1554
                                                response,
1555
                                                endpoint1,
1556
                                                db1,
1557
                                                acc1,
1558
                                                f"/{endpoint3}/{db3}/{endpoint2}/{db2}/{acc2}",
1559
                                            )
1560
                                            self._check_structure_chains_as_filter(
1✔
1561
                                                endpoint2,
1562
                                                db2,
1563
                                                acc2,
1564
                                                f"{endpoint1}/{db1}/{acc1}/{endpoint3}/{db3}",
1565
                                                "",
1566
                                                plurals[endpoint2],
1567
                                            )
1568
                                        elif (
1✔
1569
                                            response.status_code
1570
                                            != status.HTTP_204_NO_CONTENT
1571
                                        ):
1572
                                            self.assertEqual(
×
1573
                                                response.status_code,
1574
                                                status.HTTP_204_NO_CONTENT,
1575
                                            )
1576

1577
    def test_db_acc_acc(self):
1✔
1578
        for endpoint1 in api_test_map:
1✔
1579
            for endpoint2 in api_test_map:
1✔
1580
                if endpoint1 == endpoint2:
1✔
1581
                    continue
1✔
1582
                for endpoint3 in api_test_map:
1✔
1583
                    if endpoint3 == endpoint1 or endpoint3 == endpoint2:
1✔
1584
                        continue
1✔
1585
                    for db1 in api_test_map[endpoint1]:
1✔
1586
                        for db2 in api_test_map[endpoint2]:
1✔
1587
                            for db3 in api_test_map[endpoint3]:
1✔
1588
                                for acc1 in api_test_map[endpoint1][db1]:
1✔
1589
                                    for acc2 in api_test_map[endpoint2][db2]:
1✔
1590
                                        # [endpoint]/[db]/[endpoint]/[db]/[acc]/[endpoint]/[db]/[acc]
1591
                                        current = f"/api/{endpoint3}/{db3}/{endpoint1}/{db1}/{acc1}/{endpoint2}/{db2}/{acc2}"
1✔
1592
                                        response = self._get_in_debug_mode(current)
1✔
1593
                                        if response.status_code == status.HTTP_200_OK:
1✔
1594
                                            self.assertEqual(
1✔
1595
                                                response.status_code,
1596
                                                status.HTTP_200_OK,
1597
                                                f"URL : [{current}]",
1598
                                            )
1599
                                            self._check_is_list_of_metadata_objects(
1✔
1600
                                                response.data["results"]
1601
                                            )
1602
                                            for result in [
1✔
1603
                                                x[plurals[endpoint1]]
1604
                                                for x in response.data["results"]
1605
                                            ]:
1606
                                                self._check_list_of_matches(
1✔
1607
                                                    result,
1608
                                                    check_coordinates=endpoint1
1609
                                                    != "taxonomy"
1610
                                                    and endpoint1 != "proteome",
1611
                                                    msg=f"URL : [{current}]",
1612
                                                )
1613
                                            for result in [
1✔
1614
                                                x[plurals[endpoint2]]
1615
                                                for x in response.data["results"]
1616
                                            ]:
1617
                                                self._check_list_of_matches(
1✔
1618
                                                    result,
1619
                                                    check_coordinates=endpoint2
1620
                                                    != "taxonomy"
1621
                                                    and endpoint2 != "proteome",
1622
                                                    msg=f"URL : [{current}]",
1623
                                                )
1624
                                            self._check_structure_chains_as_filter(
1✔
1625
                                                endpoint1,
1626
                                                db1,
1627
                                                acc1,
1628
                                                f"{endpoint3}/{db3}",
1629
                                                f"/{endpoint2}/{db2}/{acc2}",
1630
                                                plurals[endpoint1],
1631
                                            )
1632
                                            self._check_structure_chains_as_filter(
1✔
1633
                                                endpoint2,
1634
                                                db2,
1635
                                                acc2,
1636
                                                f"{endpoint3}/{db3}/{endpoint1}/{db1}/{acc1}",
1637
                                                "",
1638
                                                plurals[endpoint2],
1639
                                            )
1640
                                        elif (
1✔
1641
                                            response.status_code
1642
                                            != status.HTTP_204_NO_CONTENT
1643
                                        ):
1644
                                            self.assertEqual(
×
1645
                                                response.status_code,
1646
                                                status.HTTP_204_NO_CONTENT,
1647
                                            )
1648

1649
    def test_acc_acc_acc(self):
1✔
1650
        for endpoint1 in api_test_map:
1✔
1651
            for endpoint2 in api_test_map:
1✔
1652
                if endpoint1 == endpoint2:
1✔
1653
                    continue
1✔
1654
                for endpoint3 in api_test_map:
1✔
1655
                    if endpoint3 == endpoint1 or endpoint3 == endpoint2:
1✔
1656
                        continue
1✔
1657
                    for db1 in api_test_map[endpoint1]:
1✔
1658
                        for db2 in api_test_map[endpoint2]:
1✔
1659
                            for db3 in api_test_map[endpoint3]:
1✔
1660
                                for acc1 in api_test_map[endpoint1][db1]:
1✔
1661
                                    for acc2 in api_test_map[endpoint2][db2]:
1✔
1662
                                        # [endpoint]/[db]/[acc]/[endpoint]/[db]/[acc]/[endpoint]/[db]/[acc]
1663
                                        for acc3 in api_test_map[endpoint3][db3]:
1✔
1664
                                            current = f"/api/{endpoint1}/{db1}/{acc1}/{endpoint2}/{db2}/{acc2}/{endpoint3}/{db3}/{acc3}"
1✔
1665
                                            response = self._get_in_debug_mode(current)
1✔
1666
                                            if (
1✔
1667
                                                response.status_code
1668
                                                == status.HTTP_200_OK
1669
                                            ):
1670
                                                self.assertEqual(
1✔
1671
                                                    response.status_code,
1672
                                                    status.HTTP_200_OK,
1673
                                                    f"URL : [{current}]",
1674
                                                )
1675
                                                self._check_object_by_accesssion(
1✔
1676
                                                    response.data
1677
                                                )
1678
                                                self._check_list_of_matches(
1✔
1679
                                                    response.data[plurals[endpoint2]],
1680
                                                    check_coordinates=endpoint2
1681
                                                    != "taxonomy"
1682
                                                    and endpoint2 != "proteome",
1683
                                                    msg=f"URL : [{current}]",
1684
                                                )
1685
                                                self._check_list_of_matches(
1✔
1686
                                                    response.data[plurals[endpoint3]],
1687
                                                    check_coordinates=endpoint3
1688
                                                    != "taxonomy"
1689
                                                    and endpoint3 != "proteome",
1690
                                                    msg=f"URL : [{current}]",
1691
                                                )
1692
                                                self._check_structure_and_chains(
1✔
1693
                                                    response,
1694
                                                    endpoint1,
1695
                                                    db1,
1696
                                                    acc1,
1697
                                                    f"/{endpoint2}/{db2}/{acc2}/{endpoint3}/{db3}/{acc3}",
1698
                                                )
1699
                                                self._check_structure_chains_as_filter(
1✔
1700
                                                    endpoint2,
1701
                                                    db2,
1702
                                                    acc2,
1703
                                                    f"{endpoint1}/{db1}/{acc1}",
1704
                                                    f"/{endpoint3}/{db3}/{acc3}",
1705
                                                    plurals[endpoint2],
1706
                                                )
1707
                                                self._check_structure_chains_as_filter(
1✔
1708
                                                    endpoint3,
1709
                                                    db3,
1710
                                                    acc3,
1711
                                                    f"{endpoint1}/{db1}/{acc1}/{endpoint2}/{db2}/{acc2}",
1712
                                                    "",
1713
                                                    plurals[endpoint3],
1714
                                                )
1715
                                            elif (
1✔
1716
                                                response.status_code
1717
                                                != status.HTTP_204_NO_CONTENT
1718
                                            ):
1719
                                                self.assertEqual(
×
1720
                                                    response.status_code,
1721
                                                    status.HTTP_204_NO_CONTENT,
1722
                                                )
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc