def test_validate_docker_submission_valid():
    """Tests that True is returned when validate docker
    submission is valid"""
    config = Mock()
    docker_repo = 'docker.synapse.org/syn1234/docker_repo'
    docker_digest = 'sha123566'
    username = str(uuid.uuid1())
    password = str(uuid.uuid1())
    docker_sub = synapseclient.Submission(evaluationId=1,
                                          entityId=1,
                                          versionNumber=2,
                                          dockerRepositoryName=docker_repo,
                                          dockerDigest=docker_digest)
    with patch.object(SYN, "getConfigFile", return_value=config),\
        patch.object(config, "items",
                     return_value={'username': username,
                                   'password': password}),\
        patch.object(SYN, "getSubmission",
                     return_value=docker_sub) as patch_get_sub,\
        patch.object(dockertools, "validate_docker",
                     return_value=True) as patch_validate:
        valid = submission.validate_docker_submission(SYN, "123455")
        patch_validate.assert_called_once_with(
            docker_repo="syn1234/docker_repo",
            docker_digest=docker_digest,
            index_endpoint=dockertools.ENDPOINT_MAPPING['synapse'],
            username=username,
            password=password)
        patch_get_sub.assert_called_once_with("123455")
        assert valid
Esempio n. 2
0
def test__get_contributors():
    '''
    Test getting contributors by evaluationID, status, and date range
    '''
    sub = synapseclient.Submission(evaluationId=123,
                                   entityId="syn1234",
                                   versionNumber=1,
                                   contributors=[{
                                       "principalId": 321
                                   }],
                                   createdOn="2019-05-26T23:59:59.062Z")
    bundle = [(sub, "temp")]
    with patch.object(syn, "getSubmissionBundles",
                      return_value=bundle) as patch_syn_get_bundles:
        contributors = challengeutils.utils._get_contributors(
            syn, 123, "SCORED", "2019-05-06 1:00", "2019-06-01 1:00")
        patch_syn_get_bundles.assert_called_once_with(123, status="SCORED")
        assert contributors == set([321])
def test_download_current_lead_sub():
    """Tests download of lead submission"""
    sub = synapseclient.Submission(evaluationId='2',
                                   entityId='2',
                                   versionNumber='3')
    with patch.object(SYN, "getSubmission",
                      return_value=sub) as patch_getsub,\
        patch.object(submission, "get_submitterid_from_submission_id",
                     return_value="2") as patch_getsubmitter,\
        patch.object(submission, "get_submitters_lead_submission",
                     return_value="path") as patch_get_lead:
        dl_file = submission.download_current_lead_sub(SYN,
                                                       SUBMISSIONID,
                                                       "VALIDATED",
                                                       "key",
                                                       verbose=False)
        patch_getsubmitter.assert_called_once()
        patch_get_lead.assert_called_once()
        assert dl_file == "path"
def test_get_submitters_lead_submission():
    """Tests getting of lead submission"""
    sub = synapseclient.Submission(evaluationId='2',
                                   entityId='2',
                                   versionNumber='3')
    temp = tempfile.NamedTemporaryFile()
    sub.filePath = temp.name

    with patch.object(utils, "evaluation_queue_query",
                      return_value=[{'objectId': 1}]) as patch_query,\
        patch.object(SYN, "getSubmission",
                     return_value=sub) as patch_getsub:
        dl_file = submission.get_submitters_lead_submission(SYN,
                                                            SUBMISSIONID,
                                                            QUEUEID,
                                                            "key",
                                                            verbose=False)
        patch_query.assert_called_once()
        patch_getsub.assert_called_once_with(1, downloadLocation='.')
        assert dl_file == "previous_submission.csv"
        os.unlink("previous_submission.csv")
def test_validate_docker_submission_notdocker():
    """Tests ValueError is thrown when submission is not docker submission"""
    config = Mock()
    docker_repo = 'docker.synapse.org/syn1234/docker_repo'
    docker_digest = None
    username = str(uuid.uuid1())
    password = str(uuid.uuid1())
    docker_sub = synapseclient.Submission(evaluationId=1,
                                          entityId=1,
                                          versionNumber=2,
                                          dockerRepositoryName=docker_repo,
                                          dockerDigest=docker_digest)
    with patch.object(SYN, "getConfigFile", return_value=config),\
        patch.object(config, "items",
                     return_value={'username': username,
                                   'password': password}),\
        patch.object(SYN, "getSubmission",
                     return_value=docker_sub),\
        pytest.raises(ValueError,
                      match='Submission is not a Docker submission'):
        submission.validate_docker_submission(SYN, "123455")
import pytest
import synapseclient

from scoring_harness import messages
from scoring_harness.queue_scorer import EvaluationQueueScorer

SYN = mock.create_autospec(synapseclient.Synapse)
ANNOTATIONS = {'foo': 'bar'}
MESSAGE = "passed"

CHALLENGE_SYNID = "syn1234"

SUBMISSION = synapseclient.Submission(name="foo",
                                      entityId="syn123",
                                      evaluationId=2,
                                      versionNumber=1,
                                      id="syn222",
                                      filePath="foo",
                                      userId="222")
SUBMISSION_STATUS = synapseclient.SubmissionStatus(status="RECEIVED",
                                                   id="111",
                                                   etag="222")
EVALUATION = synapseclient.Evaluation(name="foo",
                                      id="222",
                                      contentSource=CHALLENGE_SYNID)
SYN_USERPROFILE = synapseclient.UserProfile(ownerId="111", userName="******")
BUNDLE = [(SUBMISSION, SUBMISSION_STATUS)]
SUB_INFO = {
    'valid': True,
    'annotations': ANNOTATIONS,
    'error': None,