Merge pull request #1041 from dod-ccpo/use-celery

Use Celery instead of RQ.
This commit is contained in:
dandds
2019-08-29 13:17:27 -04:00
committed by GitHub
18 changed files with 209 additions and 191 deletions

View File

@@ -9,7 +9,6 @@ from collections import OrderedDict
from atst.app import make_app, make_config
from atst.database import db as _db
from atst.queue import queue as atst_queue
import tests.factories as factories
from tests.mocks import PDF_FILENAME, PDF_FILENAME2
from tests.utils import FakeLogger, FakeNotificationSender
@@ -158,12 +157,6 @@ def extended_financial_verification_data(pdf_upload):
}
@pytest.fixture(scope="function", autouse=True)
def queue():
yield atst_queue
atst_queue.get_queue().empty()
@pytest.fixture
def crl_failover_open_app(app):
app.config.update({"CRL_FAIL_OPEN": True})

View File

@@ -1,10 +1,11 @@
import uuid
from unittest.mock import Mock
from flask import url_for
from atst.domain.permission_sets import PermissionSets
from atst.models import CSPRole
from atst.forms.data import ENV_ROLE_NO_ACCESS as NO_ACCESS
from atst.queue import queue
from tests.factories import *
@@ -149,8 +150,9 @@ def test_update_team_revoke_environment_access(client, user_session, db, session
assert user not in environment.users
def test_create_member(client, user_session, session):
queue_length = len(queue.get_queue())
def test_create_member(monkeypatch, client, user_session, session):
job_mock = Mock()
monkeypatch.setattr("atst.jobs.send_mail.delay", job_mock)
user = UserFactory.create()
application = ApplicationFactory.create(
environments=[{"name": "Naboo"}, {"name": "Endor"}]
@@ -198,7 +200,7 @@ def test_create_member(client, user_session, session):
)
assert invitation.role.application == application
assert len(queue.get_queue()) == queue_length + 1
assert job_mock.called
def test_remove_member_success(client, user_session):

View File

@@ -1,10 +1,11 @@
import datetime
from unittest.mock import Mock
from flask import url_for
from atst.domain.portfolios import Portfolios
from atst.models import InvitationStatus, PortfolioRoleStatus
from atst.domain.permission_sets import PermissionSets
from atst.queue import queue
from tests.factories import *
@@ -183,7 +184,11 @@ def test_user_can_only_revoke_invites_in_their_portfolio(client, user_session):
assert not invite.is_revoked
def test_user_can_only_resend_invites_in_their_portfolio(client, user_session, queue):
def test_user_can_only_resend_invites_in_their_portfolio(
monkeypatch, client, user_session
):
job_mock = Mock()
monkeypatch.setattr("atst.jobs.send_mail.delay", job_mock)
portfolio = PortfolioFactory.create()
other_portfolio = PortfolioFactory.create()
user = UserFactory.create()
@@ -206,10 +211,12 @@ def test_user_can_only_resend_invites_in_their_portfolio(client, user_session, q
)
assert response.status_code == 404
assert len(queue.get_queue()) == 0
assert not job_mock.called
def test_resend_invitation_sends_email(client, user_session, queue):
def test_resend_invitation_sends_email(monkeypatch, client, user_session):
job_mock = Mock()
monkeypatch.setattr("atst.jobs.send_mail.delay", job_mock)
user = UserFactory.create()
portfolio = PortfolioFactory.create()
ws_role = PortfolioRoleFactory.create(
@@ -227,12 +234,14 @@ def test_resend_invitation_sends_email(client, user_session, queue):
)
)
assert len(queue.get_queue()) == 1
assert job_mock.called
def test_existing_member_invite_resent_to_email_submitted_in_form(
client, user_session, queue
monkeypatch, client, user_session
):
job_mock = Mock()
monkeypatch.setattr("atst.jobs.send_mail.delay", job_mock)
portfolio = PortfolioFactory.create()
user = UserFactory.create()
ws_role = PortfolioRoleFactory.create(
@@ -253,10 +262,10 @@ def test_existing_member_invite_resent_to_email_submitted_in_form(
)
)
send_mail_job = queue.get_queue().jobs[0]
assert user.email != "example@example.com"
assert send_mail_job.func.__func__.__name__ == "_send_mail"
assert send_mail_job.args[0] == ["example@example.com"]
ordered_args, _unordered_args = job_mock.call_args
recipients, _subject, _message = ordered_args
assert recipients[0] == "example@example.com"
_DEFAULT_PERMS_FORM_DATA = {
@@ -278,11 +287,12 @@ def test_user_with_permission_has_add_member_link(client, user_session):
)
def test_invite_member(client, user_session, session):
def test_invite_member(monkeypatch, client, user_session, session):
job_mock = Mock()
monkeypatch.setattr("atst.jobs.send_mail.delay", job_mock)
user_data = UserFactory.dictionary()
portfolio = PortfolioFactory.create()
user_session(portfolio.owner)
queue_length = len(queue.get_queue())
response = client.post(
url_for("portfolios.invite_member", portfolio_id=portfolio.id),
@@ -307,5 +317,5 @@ def test_invite_member(client, user_session, session):
)
assert invitation.role.portfolio == portfolio
assert len(queue.get_queue()) == queue_length + 1
assert job_mock.called
assert len(invitation.role.permission_sets) == 5

View File

@@ -1,5 +0,0 @@
def test_send_mail(queue):
queue.send_mail(
["lordvader@geocities.net"], "death start", "how is it coming along?"
)
assert len(queue.get_queue()) == 1

View File

@@ -6,22 +6,19 @@ from atst.utils.notification_sender import NotificationSender
@pytest.fixture
def mock_queue(queue):
return Mock(spec=queue)
def notification_sender():
return NotificationSender()
@pytest.fixture
def notification_sender(mock_queue):
return NotificationSender(mock_queue)
def test_can_send_notification(mock_queue, notification_sender):
def test_can_send_notification(monkeypatch, notification_sender):
job_mock = Mock()
monkeypatch.setattr("atst.jobs.send_notification_mail.delay", job_mock)
recipient_email = "test@example.com"
email_body = "This is a test"
NotificationRecipientFactory.create(email=recipient_email)
notification_sender.send(email_body)
mock_queue.send_notification_mail.assert_called_once_with(
job_mock.assert_called_once_with(
("test@example.com",), notification_sender.EMAIL_SUBJECT, email_body
)