def setUp(self):
        self.username = '******'
        self.gh_uid = 4738549
        self.default_payload = org_default_payload(self.username, self.gh_uid)
        self.add_payload = org_default_payload(self.username, self.gh_uid)
        self.rm_payload = org_default_payload(self.username, self.gh_uid)
        self.invite_payload = org_default_payload(self.username, self.gh_uid)
        self.empty_payload = org_default_payload(self.username, self.gh_uid)

        self.add_payload['action'] = 'member_added'
        self.rm_payload['action'] = 'member_removed'
        self.invite_payload['action'] = 'member_invited'
        self.empty_payload['action'] = ''

        self.u0 = User('U01234954')
        self.u0.github_id = str(self.gh_uid)
        self.u0.github_username = self.username
        self.team_all = Team('1', 'all', 'Team all')
        self.db = MemoryDB(users=[self.u0], teams=[self.team_all])

        self.gh = mock.Mock()
        self.conf = mock.Mock()
        self.conf.github_team_all = 'all'
        self.webhook_handler = OrganizationEventHandler(self.db, self.gh,
                                                        self.conf)
Beispiel #2
0
def test_org_supported_action_list():
    """Confirm the supported action list of the handler."""
    mock_facade = mock.MagicMock(DBFacade)
    webhook_handler = OrganizationEventHandler(mock_facade)
    assert webhook_handler.supported_action_list == [
        "member_removed", "member_added"
    ]
Beispiel #3
0
 def __init__(self, db_facade: DBFacade, config: Config) -> None:
     """Give handlers access to the database."""
     self.__secret = config.github_webhook_secret
     self.__event_handlers = [
         OrganizationEventHandler(db_facade),
         TeamEventHandler(db_facade),
         MembershipEventHandler(db_facade)
     ]
Beispiel #4
0
def test_handle_org_event_add_member(mock_logging, org_add_payload):
    """Test that instances when members are added to the org are logged."""
    mock_facade = mock.MagicMock(DBFacade)
    webhook_handler = OrganizationEventHandler(mock_facade)
    rsp, code = webhook_handler.handle(org_add_payload)
    mock_logging.info.assert_called_with(("user hacktocat added "
                                          "to Octocoders"))
    assert rsp == "user hacktocat added to Octocoders"
    assert code == 200
Beispiel #5
0
def test_handle_org_event_empty_action(mock_logging, org_empty_payload):
    """Test that instances where there is no/invalid action are logged."""
    mock_facade = mock.MagicMock(DBFacade)
    webhook_handler = OrganizationEventHandler(mock_facade)
    rsp, code = webhook_handler.handle(org_empty_payload)
    mock_logging.error.assert_called_once_with(("organization webhook "
                                                "triggered, invalid "
                                                "action specified: "
                                                f"{org_empty_payload}"))
    assert rsp == "invalid organization webhook triggered"
    assert code == 405
Beispiel #6
0
def test_handle_org_event_rm_member_missing(mock_logging, org_rm_payload):
    """Test that members not in rocket db are handled correctly."""
    mock_facade = mock.MagicMock(DBFacade)
    mock_facade.query.return_value = []
    webhook_handler = OrganizationEventHandler(mock_facade)
    rsp, code = webhook_handler.handle(org_rm_payload)
    mock_facade.query\
        .assert_called_once_with(User, [('github_user_id', "39652351")])
    mock_logging.error.assert_called_once_with("could not find user 39652351")
    assert rsp == "could not find user hacktocat"
    assert code == 404
Beispiel #7
0
def test_handle_org_event_rm_single_member(mock_logging, org_rm_payload):
    """Test that members removed from the org are deleted from rocket's db."""
    mock_facade = mock.MagicMock(DBFacade)
    return_user = User("SLACKID")
    mock_facade.query.return_value = [return_user]
    webhook_handler = OrganizationEventHandler(mock_facade)
    rsp, code = webhook_handler.handle(org_rm_payload)
    mock_facade.query\
        .assert_called_once_with(User, [('github_user_id', "39652351")])
    mock_facade.delete.assert_called_once_with(User, "SLACKID")
    mock_logging.info.assert_called_with("deleted slack user SLACKID")
    assert rsp == "deleted slack ID SLACKID"
    assert code == 200
Beispiel #8
0
def test_handle_org_event_rm_mult_members(mock_logging, org_rm_payload):
    """Test that multiple members with the same github name can be deleted."""
    mock_facade = mock.MagicMock(DBFacade)
    user1 = User("SLACKUSER1")
    user2 = User("SLACKUSER2")
    user3 = User("SLACKUSER3")
    mock_facade.query.return_value = [user1, user2, user3]
    webhook_handler = OrganizationEventHandler(mock_facade)
    rsp, code = webhook_handler.handle(org_rm_payload)
    mock_facade.query\
        .assert_called_once_with(User, [('github_user_id', "39652351")])
    mock_logging.error.assert_called_once_with("Error: found github ID "
                                               "connected to multiple"
                                               " slack IDs")
    assert rsp == "Error: found github ID connected to multiple slack IDs"
    assert code == 412