Ejemplo n.º 1
0
 def test_success_authed(self, auth_fred_bloggs):
     with mock.patch(
             "lumina.database.operations.get_member"
     ) as mock_get_member, mock.patch(
             "lumina.github.submissions.create_generic_submission_issue"
     ) as mock_create_generic_submission_issue, mock.patch(
             "lumina.database.operations.put_submission"
     ) as mock_put_submission:
         submission_request = GenericSubmissionRequest(
             target_type="test",
             target_id="test-page",
             target_name="Test Page",
             target_url="https://example.com/test-page",
             subject="Hi there",
             message="Hello World",
         )
         mock_get_member.return_value = MEMBER_MODEL_FRED_BLOGGS
         mock_create_generic_submission_issue.return_value = GITHUB_ISSUE
         mock_put_submission.return_value = submission_request.to_model(
             submission_id=123,
             submitter_id=auth_fred_bloggs.id,
             member=mock_get_member(),
             github_issue=GITHUB_ISSUE,
         )
         response = client.post(
             "/submissions/message",
             json=submission_request.dict(),
         )
     assert response.status_code == HTTPStatus.OK
     assert response.json() == {
         "id": 123,
         "subject": "Hi there",
         "message": "Hello World",
         "submitter": {
             "id": "fred_bloggs",
             "verified": True,
             "name": "Fred Bloggs"
         },
         "targetId": "test-page",
         "targetName": "Test Page",
         "targetType": "test",
         "targetUrl": "https://example.com/test-page",
         "githubIssue": {
             "closedAt": None,
             "comments": 0,
             "createdAt": "2020-01-01T00:00:00+00:00",
             "number": 123,
             "state": "open",
             "title": "Test issue",
             "updatedAt": "2020-01-01T00:00:00+00:00",
             "url": "https://github.com/newtheatre/lumina-test/issues/123",
         },
     }
Ejemplo n.º 2
0
def test_make_issue_model():
    issue = submissions.create_generic_submission_issue(
        submission_request=GenericSubmissionRequest(
            target_type="show",
            target_id="11_12/faust_is_dead",
            target_name="Faust is Dead",
            target_url=
            "https://history.newtheatre.org.uk/years/11_12/faust_is_dead/",
            subject="Test submission",
            message="This is a test submission.",
            submitter=None,
        ),
        member=MemberModel(
            pk="fred_bloggs",
            name="Fred Bloggs",
            email="*****@*****.**",
            year_of_graduation=2020,
        ),
    )
    issue_model = submissions.make_issue_model(issue)
    assert issue_model == GitHubIssueModel(
        number=8,
        state=GitHubIssueState.OPEN,
        title="Test submission",
        created_at="2022-01-26T20:45:07",
        updated_at="2022-01-26T20:45:07",
        closed_at=None,
        comments=0,
    )
Ejemplo n.º 3
0
def create_generic_submission(
        submission: GenericSubmissionRequest,
        member: Optional[MemberModel] = Depends(auth.optional_member),
):
    require_submitter_or_member(submission, member)
    submitter_id = member.pk if member else submission.submitter.id
    issue = lumina.github.submissions.create_generic_submission_issue(
        submission_request=submission, member=member)
    submission_instance = lumina.database.operations.put_submission(
        submission.to_model(
            submission_id=issue.number,
            submitter_id=submitter_id,
            member=member,
            github_issue=issue,
        ))
    return SubmissionResponse.from_model(submission_instance)
Ejemplo n.º 4
0
def test_create_generic_submission_issue_anonymous():
    issue = submissions.create_generic_submission_issue(
        submission_request=GenericSubmissionRequest(
            target_type="show",
            target_id="11_12/faust_is_dead",
            target_name="Faust is Dead",
            target_url=
            "https://history.newtheatre.org.uk/years/11_12/faust_is_dead/",
            subject="Test submission",
            message="This is a test submission.",
            submitter=SubmitterRequest(
                id="c0286cf1-15cc-4e43-93de-aaca592e447b",
                name="Fred Bloggs",
                email="*****@*****.**",
                year_of_graduation=2020,
            ),
        ),
        member=None,
    )
    assert issue.title == "Test submission"
    assert issue.number == 1
    assert issue.state == "open"
    assert issue.html_url == "https://github.com/newtheatre/lumina-test/issues/1"
Ejemplo n.º 5
0
 def test_success_not_authed(self):
     with mock.patch(
             "lumina.github.submissions.create_generic_submission_issue"
     ) as mock_create_generic_submission_issue, mock.patch(
             "lumina.database.operations.put_submission"
     ) as mock_put_submission:
         submission_request = GenericSubmissionRequest(
             target_type="test",
             target_id="test-page",
             target_name="Test Page",
             target_url="https://example.com/test-page",
             subject="Hi there",
             message="Hello World",
             submitter=dict(
                 id="c0286cf1-15cc-4e43-93de-aaca592e447b",
                 name="Fred Bloggs",
                 year_of_graduation=2020,
                 email="*****@*****.**",
             ),
         )
         mock_create_generic_submission_issue.return_value = GITHUB_ISSUE
         mock_put_submission.return_value = submission_request.to_model(
             submission_id=123,
             submitter_id=submission_request.submitter.id,
             member=None,
             github_issue=GITHUB_ISSUE,
         )
         response = client.post(
             "/submissions/message",
             # This mess needed as pydantic doesn't serialise UUID by default
             # See https://github.com/samuelcolvin/pydantic/issues/1157
             json={
                 **submission_request.dict(),
                 "submitter": {
                     **submission_request.submitter.dict(),
                     "id":
                     str(submission_request.submitter.id),
                 },
             },
         )
     assert response.status_code == HTTPStatus.OK
     assert response.json() == {
         "id": 123,
         "subject": "Hi there",
         "message": "Hello World",
         "submitter": {
             "id": "c0286cf1-15cc-4e43-93de-aaca592e447b",
             "verified": False,
             "name": "Fred Bloggs",
         },
         "targetId": "test-page",
         "targetName": "Test Page",
         "targetType": "test",
         "targetUrl": "https://example.com/test-page",
         "githubIssue": {
             "closedAt": None,
             "comments": 0,
             "createdAt": "2020-01-01T00:00:00+00:00",
             "number": 123,
             "state": "open",
             "title": "Test issue",
             "updatedAt": "2020-01-01T00:00:00+00:00",
             "url": "https://github.com/newtheatre/lumina-test/issues/123",
         },
     }