|
4 | 4 | from rest_framework.test import APIClient |
5 | 5 | from shared.yaml.user_yaml import UserYaml |
6 | 6 |
|
| 7 | +from codecov_auth.tests.factories import OrganizationLevelTokenFactory |
7 | 8 | from core.tests.factories import CommitFactory, RepositoryFactory |
8 | 9 | from upload.views.uploads import CanDoCoverageUploadsPermission |
9 | 10 |
|
@@ -481,3 +482,101 @@ def test_empty_upload_no_auth(db, mocker): |
481 | 482 | == "Failed token authentication, please double-check that your repository token matches in the Codecov UI, " |
482 | 483 | "or review the docs https://docs.codecov.com/docs/adding-the-codecov-token" |
483 | 484 | ) |
| 485 | + |
| 486 | + |
| 487 | +@patch("services.yaml.fetch_commit_yaml") |
| 488 | +@patch("services.task.TaskService.notify") |
| 489 | +@patch("services.repo_providers.RepoProviderService.get_adapter") |
| 490 | +def test_empty_upload_commit_yaml_org_token( |
| 491 | + mock_repo_provider_service, notify_mock, fetch_yaml_mock, db, mocker |
| 492 | +): |
| 493 | + mocker.patch.object( |
| 494 | + CanDoCoverageUploadsPermission, "has_permission", return_value=True |
| 495 | + ) |
| 496 | + mock_repo_provider_service.return_value = MockedProviderAdapter( |
| 497 | + ["README.md", "codecov.yml", "template.txt", "base.py"] |
| 498 | + ) |
| 499 | + fetch_yaml_mock.return_value = None |
| 500 | + |
| 501 | + repository = RepositoryFactory( |
| 502 | + name="the_repo", author__username="codecov", author__service="github" |
| 503 | + ) |
| 504 | + commit = CommitFactory(repository=repository) |
| 505 | + org_token = OrganizationLevelTokenFactory.create(owner=repository.author) |
| 506 | + repository.save() |
| 507 | + commit.save() |
| 508 | + org_token.save() |
| 509 | + |
| 510 | + client = APIClient() |
| 511 | + url = reverse( |
| 512 | + "new_upload.empty_upload", |
| 513 | + args=[ |
| 514 | + "github", |
| 515 | + "codecov::::the_repo", |
| 516 | + commit.commitid, |
| 517 | + ], |
| 518 | + ) |
| 519 | + response = client.post( |
| 520 | + url, |
| 521 | + headers={"Authorization": f"token {org_token.token}"}, |
| 522 | + ) |
| 523 | + response_json = response.json() |
| 524 | + assert response.status_code == 200 |
| 525 | + assert ( |
| 526 | + response_json.get("result") |
| 527 | + == "Some files cannot be ignored. Triggering failing notifications." |
| 528 | + ) |
| 529 | + assert response_json.get("non_ignored_files") == ["base.py"] |
| 530 | + notify_mock.assert_called_once_with( |
| 531 | + repoid=repository.repoid, commitid=commit.commitid, empty_upload="fail" |
| 532 | + ) |
| 533 | + |
| 534 | + fetch_yaml_mock.assert_called_once_with(commit, repository.author) |
| 535 | + |
| 536 | + |
| 537 | +@patch("services.yaml.fetch_commit_yaml") |
| 538 | +@patch("services.task.TaskService.notify") |
| 539 | +@patch("services.repo_providers.RepoProviderService.get_adapter") |
| 540 | +def test_empty_upload_ommit_yaml_repo_token( |
| 541 | + mock_repo_provider_service, notify_mock, fetch_yaml_mock, db, mocker |
| 542 | +): |
| 543 | + mocker.patch.object( |
| 544 | + CanDoCoverageUploadsPermission, "has_permission", return_value=True |
| 545 | + ) |
| 546 | + mock_repo_provider_service.return_value = MockedProviderAdapter( |
| 547 | + ["README.md", "codecov.yml", "template.txt", "base.py"] |
| 548 | + ) |
| 549 | + fetch_yaml_mock.return_value = None |
| 550 | + |
| 551 | + repository = RepositoryFactory( |
| 552 | + name="the_repo", author__username="codecov", author__service="github" |
| 553 | + ) |
| 554 | + commit = CommitFactory(repository=repository) |
| 555 | + repository.save() |
| 556 | + commit.save() |
| 557 | + |
| 558 | + client = APIClient() |
| 559 | + url = reverse( |
| 560 | + "new_upload.empty_upload", |
| 561 | + args=[ |
| 562 | + "github", |
| 563 | + "codecov::::the_repo", |
| 564 | + commit.commitid, |
| 565 | + ], |
| 566 | + ) |
| 567 | + response = client.post( |
| 568 | + url, |
| 569 | + headers={"Authorization": f"token {repository.upload_token}"}, |
| 570 | + ) |
| 571 | + response_json = response.json() |
| 572 | + assert response.status_code == 200 |
| 573 | + assert ( |
| 574 | + response_json.get("result") |
| 575 | + == "Some files cannot be ignored. Triggering failing notifications." |
| 576 | + ) |
| 577 | + assert response_json.get("non_ignored_files") == ["base.py"] |
| 578 | + notify_mock.assert_called_once_with( |
| 579 | + repoid=repository.repoid, commitid=commit.commitid, empty_upload="fail" |
| 580 | + ) |
| 581 | + |
| 582 | + fetch_yaml_mock.assert_called_once_with(commit, repository.author) |
0 commit comments