Skip to content
This repository was archived by the owner on Jun 13, 2025. It is now read-only.

Commit 2ead8c6

Browse files
authored
Deprecate the "local upload" ReportResults endpoints (#1291)
1 parent 6546390 commit 2ead8c6

File tree

6 files changed

+26
-239
lines changed

6 files changed

+26
-239
lines changed

reports/tests/factories.py

Lines changed: 1 addition & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
from graphql_api.types.enums import UploadErrorEnum
88
from reports import models
9-
from reports.models import ReportResults, TestInstance
9+
from reports.models import TestInstance
1010

1111

1212
class CommitReportFactory(DjangoModelFactory):
@@ -77,19 +77,6 @@ class Meta:
7777
)
7878

7979

80-
class ReportResultsFactory(DjangoModelFactory):
81-
class Meta:
82-
model = ReportResults
83-
84-
report = factory.SubFactory(CommitReportFactory)
85-
state = factory.Iterator(
86-
[
87-
ReportResults.ReportResultsStates.PENDING,
88-
ReportResults.ReportResultsStates.COMPLETED,
89-
]
90-
)
91-
92-
9380
class TestFactory(factory.django.DjangoModelFactory):
9481
class Meta:
9582
model = models.Test

services/task/task.py

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -311,17 +311,6 @@ def update_commit(self, commitid, repoid):
311311
kwargs=dict(commitid=commitid, repoid=repoid),
312312
).apply_async()
313313

314-
def create_report_results(self, commitid, repoid, report_code, current_yaml=None):
315-
self._create_signature(
316-
"app.tasks.reports.save_report_results",
317-
kwargs=dict(
318-
commitid=commitid,
319-
repoid=repoid,
320-
report_code=report_code,
321-
current_yaml=current_yaml,
322-
),
323-
).apply_async()
324-
325314
def http_request(self, url, method="POST", headers=None, data=None, timeout=None):
326315
self._create_signature(
327316
"app.tasks.http_request.HTTPRequest",

upload/serializers.py

Lines changed: 1 addition & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77

88
from codecov_auth.models import Owner
99
from core.models import Commit, Repository
10-
from reports.models import CommitReport, ReportResults, ReportSession, RepositoryFlag
10+
from reports.models import CommitReport, ReportSession, RepositoryFlag
1111
from services.task import TaskService
1212

1313

@@ -178,18 +178,3 @@ def create(self, validated_data: Dict[str, Any]) -> tuple[CommitReport, bool]:
178178
report.save()
179179
return report, False
180180
return super().create(validated_data), True
181-
182-
183-
class ReportResultsSerializer(serializers.ModelSerializer):
184-
report = CommitReportSerializer(read_only=True)
185-
186-
class Meta:
187-
model = ReportResults
188-
read_only_fields = (
189-
"external_id",
190-
"report",
191-
"state",
192-
"result",
193-
"completed_at",
194-
)
195-
fields = read_only_fields

upload/tests/test_serializers.py

Lines changed: 0 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -9,14 +9,12 @@
99
from billing.helpers import mock_all_plans_and_tiers
1010
from reports.tests.factories import (
1111
CommitReportFactory,
12-
ReportResultsFactory,
1312
RepositoryFlagFactory,
1413
UploadFactory,
1514
)
1615
from upload.serializers import (
1716
CommitReportSerializer,
1817
CommitSerializer,
19-
ReportResultsSerializer,
2018
UploadSerializer,
2119
)
2220

@@ -237,23 +235,3 @@ def test_commit_report_serializer(transactional_db, mocker):
237235
"code": report.code,
238236
}
239237
assert serializer.data == expected_data
240-
241-
242-
def test_report_results_serializer(transactional_db, mocker):
243-
report_result = ReportResultsFactory.create()
244-
serializer = ReportResultsSerializer(report_result)
245-
expected_data = {
246-
"external_id": str(report_result.external_id),
247-
"report": {
248-
"external_id": str(report_result.report.external_id),
249-
"created_at": report_result.report.created_at.strftime(
250-
"%Y-%m-%dT%H:%M:%S.%fZ"
251-
),
252-
"commit_sha": report_result.report.commit.commitid,
253-
"code": report_result.report.code,
254-
},
255-
"state": report_result.state,
256-
"result": report_result.result,
257-
"completed_at": report_result.completed_at,
258-
}
259-
assert serializer.data == expected_data

upload/tests/views/test_reports.py

Lines changed: 5 additions & 111 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,9 @@
1010
RepositoryFactory,
1111
)
1212

13-
from reports.models import CommitReport, ReportResults
14-
from reports.tests.factories import ReportResultsFactory
13+
from reports.models import CommitReport
1514
from services.task.task import TaskService
15+
from upload.views.reports import EMPTY_RESPONSE
1616
from upload.views.uploads import CanDoCoverageUploadsPermission
1717

1818

@@ -336,7 +336,6 @@ def test_reports_post_code_as_default(client, db, mocker):
336336

337337

338338
def test_reports_results_post_successful(client, db, mocker):
339-
mocked_task = mocker.patch("services.task.TaskService.create_report_results")
340339
mocker.patch.object(
341340
CanDoCoverageUploadsPermission, "has_permission", return_value=True
342341
)
@@ -362,19 +361,13 @@ def test_reports_results_post_successful(client, db, mocker):
362361
== f"/upload/github/codecov::::the_repo/commits/{commit.commitid}/reports/code/results"
363362
)
364363
assert response.status_code == 201
365-
assert ReportResults.objects.filter(
366-
report_id=commit_report.id,
367-
).exists()
368-
mocked_task.assert_called_once()
369364

370365

371366
@patch("upload.helpers.jwt.decode")
372367
@patch("upload.helpers.PyJWKClient")
373368
def test_reports_results_post_successful_github_oidc_auth(
374369
mock_jwks_client, mock_jwt_decode, client, db, mocker
375370
):
376-
mocked_task = mocker.patch("services.task.TaskService.create_report_results")
377-
mock_prometheus_metrics = mocker.patch("upload.metrics.API_UPLOAD_COUNTER.labels")
378371
mocker.patch.object(
379372
CanDoCoverageUploadsPermission, "has_permission", return_value=True
380373
)
@@ -410,22 +403,6 @@ def test_reports_results_post_successful_github_oidc_auth(
410403
== f"/upload/github/codecov::::the_repo/commits/{commit.commitid}/reports/code/results"
411404
)
412405
assert response.status_code == 201
413-
assert ReportResults.objects.filter(
414-
report_id=commit_report.id,
415-
).exists()
416-
mocked_task.assert_called_once()
417-
mock_prometheus_metrics.assert_called_with(
418-
**{
419-
"agent": "cli",
420-
"version": "0.4.7",
421-
"action": "coverage",
422-
"endpoint": "create_report_results",
423-
"repo_visibility": "private",
424-
"is_using_shelter": "no",
425-
"position": "end",
426-
"upload_version": None,
427-
},
428-
)
429406

430407

431408
@pytest.mark.parametrize("private", [False, True])
@@ -449,7 +426,6 @@ def test_reports_results_post_upload_token_required_auth_check(
449426
branch_sent,
450427
upload_token_required_for_public_repos,
451428
):
452-
mocked_task = mocker.patch("services.task.TaskService.create_report_results")
453429
repository = RepositoryFactory(
454430
name="the_repo",
455431
author__username="codecov",
@@ -462,6 +438,7 @@ def test_reports_results_post_upload_token_required_auth_check(
462438
commit.branch = branch
463439
repository.save()
464440
commit.save()
441+
commit_report.save()
465442

466443
client = APIClient()
467444
url = reverse(
@@ -492,55 +469,11 @@ def test_reports_results_post_upload_token_required_auth_check(
492469
or authorized_by_tokenless_auth_class
493470
):
494471
assert response.status_code == 201
495-
assert ReportResults.objects.filter(
496-
report_id=commit_report.id,
497-
).exists()
498-
mocked_task.assert_called_once()
499472
else:
500473
assert response.status_code == 401
501-
assert not ReportResults.objects.filter(
502-
report_id=commit_report.id,
503-
).exists()
504474
assert response.json().get("detail") == "Not valid tokenless upload"
505475

506476

507-
def test_reports_results_already_exists_post_successful(client, db, mocker):
508-
mocked_task = mocker.patch("services.task.TaskService.create_report_results")
509-
mocker.patch.object(
510-
CanDoCoverageUploadsPermission, "has_permission", return_value=True
511-
)
512-
repository = RepositoryFactory(
513-
name="the_repo", author__username="codecov", author__service="github"
514-
)
515-
commit = CommitFactory(repository=repository)
516-
commit_report = CommitReport.objects.create(commit=commit, code="code")
517-
report_results = ReportResults.objects.create(
518-
report=commit_report, state=ReportResults.ReportResultsStates.COMPLETED
519-
)
520-
repository.save()
521-
commit_report.save()
522-
report_results.save()
523-
524-
owner = repository.author
525-
client = APIClient()
526-
client.force_authenticate(user=owner)
527-
url = reverse(
528-
"new_upload.reports_results",
529-
args=["github", "codecov::::the_repo", commit.commitid, "code"],
530-
)
531-
response = client.post(url, content_type="application/json", data={})
532-
533-
assert (
534-
url
535-
== f"/upload/github/codecov::::the_repo/commits/{commit.commitid}/reports/code/results"
536-
)
537-
assert response.status_code == 201
538-
assert ReportResults.objects.filter(
539-
report_id=commit_report.id, state=ReportResults.ReportResultsStates.PENDING
540-
).exists()
541-
mocked_task.assert_called_once()
542-
543-
544477
def test_report_results_get_successful(client, db, mocker):
545478
mocker.patch.object(
546479
CanDoCoverageUploadsPermission, "has_permission", return_value=True
@@ -550,9 +483,8 @@ def test_report_results_get_successful(client, db, mocker):
550483
)
551484
commit = CommitFactory(repository=repository)
552485
commit_report = CommitReport.objects.create(commit=commit, code="code")
553-
commit_report_results = ReportResultsFactory(report=commit_report)
554486
repository.save()
555-
commit_report_results.save()
487+
commit_report.save()
556488

557489
owner = repository.author
558490
client = APIClient()
@@ -568,42 +500,4 @@ def test_report_results_get_successful(client, db, mocker):
568500
== f"/upload/github/codecov::::the_repo/commits/{commit.commitid}/reports/code/results"
569501
)
570502
assert response.status_code == 200
571-
assert response.json() == {
572-
"external_id": str(commit_report_results.external_id),
573-
"report": {
574-
"external_id": str(commit_report.external_id),
575-
"created_at": commit_report.created_at.strftime("%Y-%m-%dT%H:%M:%S.%fZ"),
576-
"commit_sha": commit_report.commit.commitid,
577-
"code": commit_report.code,
578-
},
579-
"state": commit_report_results.state,
580-
"result": {},
581-
"completed_at": None,
582-
}
583-
584-
585-
def test_report_results_get_unsuccessful(client, db, mocker):
586-
mocker.patch.object(
587-
CanDoCoverageUploadsPermission, "has_permission", return_value=True
588-
)
589-
repository = RepositoryFactory(
590-
name="the_repo", author__username="codecov", author__service="github"
591-
)
592-
commit = CommitFactory(repository=repository)
593-
CommitReport.objects.create(commit=commit, code="code")
594-
repository.save()
595-
596-
client = APIClient()
597-
client.force_authenticate(user=OwnerFactory())
598-
url = reverse(
599-
"new_upload.reports_results",
600-
args=["github", "codecov::::the_repo", commit.commitid, "code"],
601-
)
602-
response = client.get(url, content_type="application/json", data={})
603-
604-
assert (
605-
url
606-
== f"/upload/github/codecov::::the_repo/commits/{commit.commitid}/reports/code/results"
607-
)
608-
assert response.status_code == 400
609-
assert response.json() == ["Report Results not found"]
503+
assert response.json() == EMPTY_RESPONSE

0 commit comments

Comments
 (0)