@@ -447,3 +447,157 @@ def test_upload_test_results_file_not_found(db, client, mocker, mock_redis):
447447 arguments = args ,
448448 countdown = 4 ,
449449 )
450+
451+
452+ def test_upload_test_results_tokenless_authentication (db , client , mocker , mock_redis ):
453+ upload = mocker .patch .object (TaskService , "upload" )
454+ _ = mocker .patch (
455+ "shared.storage.MinioStorageService.create_presigned_put" ,
456+ return_value = "test-presigned-put" ,
457+ )
458+
459+ owner = OwnerFactory (service = "github" , username = "codecov" )
460+ repository = RepositoryFactory .create (author = owner , private = False )
461+ commit_sha = "6fd5b89357fc8cdf34d6197549ac7c6d7e5977ef"
462+
463+ client = APIClient ()
464+
465+ res = client .post (
466+ reverse ("upload-test-results" ),
467+ {
468+ "commit" : commit_sha ,
469+ "slug" : f"{ repository .author .username } ::::{ repository .name } " ,
470+ "build" : "test-build" ,
471+ "buildURL" : "test-build-url" ,
472+ "job" : "test-job" ,
473+ "service" : "github" ,
474+ "branch" : "fork:branch" ,
475+ },
476+ format = "json" ,
477+ headers = {"User-Agent" : "codecov-cli/0.4.7" },
478+ )
479+ assert res .status_code == 201
480+
481+ assert res .data == {"raw_upload_location" : "test-presigned-put" }
482+
483+ commit = Commit .objects .get (commitid = commit_sha )
484+ assert commit
485+ assert commit .branch is not None
486+
487+ # triggers upload task
488+ upload .assert_called_with (
489+ commitid = commit_sha ,
490+ repoid = repository .repoid ,
491+ report_code = None ,
492+ report_type = "test_results" ,
493+ arguments = mocker .ANY ,
494+ countdown = 4 ,
495+ )
496+
497+
498+ def test_upload_test_results_tokenless_authentication_private_repo (
499+ db , client , mocker , mock_redis
500+ ):
501+ _ = mocker .patch .object (TaskService , "upload" )
502+ _ = mocker .patch (
503+ "shared.storage.MinioStorageService.create_presigned_put" ,
504+ return_value = "test-presigned-put" ,
505+ )
506+
507+ owner = OwnerFactory (service = "github" , username = "codecov" )
508+ repository = RepositoryFactory .create (author = owner , private = True )
509+ commit_sha = "6fd5b89357fc8cdf34d6197549ac7c6d7e5977ef"
510+
511+ client = APIClient ()
512+
513+ res = client .post (
514+ reverse ("upload-test-results" ),
515+ {
516+ "commit" : commit_sha ,
517+ "slug" : f"{ repository .author .username } ::::{ repository .name } " ,
518+ "build" : "test-build" ,
519+ "buildURL" : "test-build-url" ,
520+ "job" : "test-job" ,
521+ "service" : "github" ,
522+ "branch" : "fork:branch" ,
523+ },
524+ format = "json" ,
525+ headers = {"User-Agent" : "codecov-cli/0.4.7" },
526+ )
527+ assert res .status_code == 401
528+ assert res .json ().get ("detail" ) == "Not valid tokenless upload"
529+
530+
531+ def test_upload_test_results_tokenless_authentication_invalid_branch (
532+ db , client , mocker , mock_redis
533+ ):
534+ _ = mocker .patch .object (TaskService , "upload" )
535+ _ = mocker .patch (
536+ "shared.storage.MinioStorageService.create_presigned_put" ,
537+ return_value = "test-presigned-put" ,
538+ )
539+
540+ owner = OwnerFactory (service = "github" , username = "codecov" )
541+ owner .upload_token_required_for_public_repos = True
542+ owner .save ()
543+
544+ repository = RepositoryFactory .create (author = owner , private = False )
545+ commit_sha = "6fd5b89357fc8cdf34d6197549ac7c6d7e5977ef"
546+
547+ client = APIClient ()
548+
549+ res = client .post (
550+ reverse ("upload-test-results" ),
551+ {
552+ "commit" : commit_sha ,
553+ "slug" : f"{ repository .author .username } ::::{ repository .name } " ,
554+ "build" : "test-build" ,
555+ "buildURL" : "test-build-url" ,
556+ "job" : "test-job" ,
557+ "service" : "github" ,
558+ "branch" : "branch" ,
559+ },
560+ format = "json" ,
561+ headers = {"User-Agent" : "codecov-cli/0.4.7" },
562+ )
563+ assert res .status_code == 401
564+ assert res .json ().get ("detail" ) == "Not valid tokenless upload"
565+
566+
567+ def test_upload_test_results_tokenless_authentication_invalid_branch_existing_commits (
568+ db , client , mocker , mock_redis
569+ ):
570+ _ = mocker .patch .object (TaskService , "upload" )
571+ _ = mocker .patch (
572+ "shared.storage.MinioStorageService.create_presigned_put" ,
573+ return_value = "test-presigned-put" ,
574+ )
575+
576+ owner = OwnerFactory (service = "github" , username = "codecov" )
577+ owner .upload_token_required_for_public_repos = True
578+ owner .save ()
579+
580+ repository = RepositoryFactory .create (author = owner , private = False )
581+ commit_sha = "6fd5b89357fc8cdf34d6197549ac7c6d7e5977ef"
582+ CommitFactory .create (repository = repository , commitid = commit_sha , branch = "branch" )
583+ client = APIClient ()
584+
585+ res = client .post (
586+ reverse ("upload-test-results" ),
587+ {
588+ "commit" : commit_sha ,
589+ "slug" : f"{ repository .author .username } ::::{ repository .name } " ,
590+ "build" : "test-build" ,
591+ "buildURL" : "test-build-url" ,
592+ "job" : "test-job" ,
593+ "service" : "github" ,
594+ "branch" : "branch" ,
595+ },
596+ format = "json" ,
597+ headers = {"User-Agent" : "codecov-cli/0.4.7" },
598+ )
599+ assert res .status_code == 401
600+ assert res .json ().get ("detail" ) == "Not valid tokenless upload"
601+ commit = Commit .objects .get (commitid = commit_sha )
602+ assert commit
603+ assert commit .branch == "branch"
0 commit comments