Пример #1
0
def test_confluence_helper_groups():
    """Test ConfluenceHelper groups
    """
    with requests_mock.mock() as mock_adapter:
        helper = ConfluenceHelper(TEST_AUTH_USER, TEST_AUTH_PASS, TEST_SERVER,
                                  test_logger)

        # First call should return a list of groups for 201
        mock_returned_value = {
            "results": [
                {
                    "name": "group1",
                    "type": "group"
                },
                {
                    "name": "group2",
                    "type": "group"
                },
            ],
            "size":
            2
        }
        mock_adapter.get(DEFS.get_groups(TEST_SERVER).service_url,
                         json=mock_returned_value,
                         status_code=200)
        ret = helper.groups()
        assert type(ret) is list and len(ret) == 2
        assert "group1" in ret and "group2" in ret

        # Second call should return an empty list for 401
        mock_adapter.get(DEFS.get_groups(TEST_SERVER).service_url,
                         json=mock_returned_value,
                         status_code=401)
        ret = helper.groups()
        assert type(ret) is list and len(ret) == 0
Пример #2
0
def test_confluence_helper_remove_all_access():
    """Test ConfluenceHelper remove_all_access
    """
    with requests_mock.mock() as mock_adapter:
        helper = ConfluenceHelper(TEST_AUTH_USER, TEST_AUTH_PASS, TEST_SERVER,
                                  test_logger)

        #######################################################################
        # Test 1

        # Mock member_groups return value
        mock_adapter.get(DEFS.get_member_groups(TEST_SERVER,
                                                "user1").service_url,
                         status_code=200,
                         json={
                             "results": [
                                 {
                                     "name": "group1",
                                     "type": "group"
                                 },
                             ],
                             "size": 1
                         })

        # Mock remove_member_from_group return value
        mock_adapter.delete(DEFS.delete_member_from_group(TEST_SERVER, "user1", "group1").service_url\
            + "?username=user1&groupname=group1",
            status_code=204
        )

        # Mock revoke_application_access return value
        mock_adapter.delete(
            DEFS.delete_app_access(TEST_SERVER, "user1").service_url +
            "?username=user1",
            status_code=204)

        # Mock deactivate_user return value
        mock_adapter.post(
            DEFS.post_deactivate_user(TEST_SERVER, "user1").service_url +
            "?username=user1",
            status_code=204)

        # First call should return True
        mock_adapter.post(
            DEFS.post_deactivate_user(TEST_SERVER, "user1").service_url +
            "?username=user1",
            status_code=204)
        assert helper.remove_all_access("user1") is True

        #######################################################################
        # Test 2

        # Mock deactivate_user return value
        mock_adapter.post(
            DEFS.post_deactivate_user(TEST_SERVER, "user1").service_url +
            "?username=user1",
            status_code=401)
        assert helper.remove_all_access("user1") is False
Пример #3
0
 def _init_with_config(self, config):
     """Read configurations from `config`
     """
     self.username = config.get("confluence", "confluence.username")
     self.userpass = config.get("confluence", "confluence.password")
     self.server = config.get("confluence", "confluence.server")
     self.app = ConfluenceHelper(self.username, self.userpass, self.server,
                                 self.logger)
     self.output_file = "ConfluenceUsers.csv"
Пример #4
0
class ConfluenceService(ServiceABC):
    @staticmethod
    def database_attr_name():
        """Database attribute name
        """
        return "confluence"

    def _init_with_config(self, config):
        """Read configurations from `config`
        """
        self.username = config.get("confluence", "confluence.username")
        self.userpass = config.get("confluence", "confluence.password")
        self.server = config.get("confluence", "confluence.server")
        self.app = ConfluenceHelper(self.username, self.userpass, self.server,
                                    self.logger)
        self.output_file = "ConfluenceUsers.csv"

    def on_board(self, input_dict):
        """Start on boarding and return True if succeeded; False otherwise
        """
        # TODO
        self.logger.debug("TODO: ConfluenceService.on_board")
        pass

    def off_board(self, user_data):
        """Start off boarding and return True if succeeded; False otherwise
        """
        username = user_data
        self.logger.debug("Off boarding {} user {} ...".format(
            ConfluenceService.database_attr_name(), username))
        return self.app.remove_all_access(username)

    def summary(self, db_users_dict):
        """Retrieve current user details and compare against the database users' details.
        """
        # Write current users to a file
        all_users = self.app.members_in_all_groups()
        self.write_users_to_file(all_users, self.output_file)

        # Identify inactive users still have confluence access
        off_board_cnt = self.report_inactive_users_still_have_access(
            db_users_dict)

        self.logger.info("Summary:")
        self.logger.info("Total users: {}".format(len(all_users.keys())))
        self.logger.info(
            "Total users should be off boarded: {}".format(off_board_cnt))
Пример #5
0
def test_confluence_helper_group_members():
    """Test ConfluenceHelper group_members
    """
    with requests_mock.mock() as mock_adapter:
        helper = ConfluenceHelper(TEST_AUTH_USER, TEST_AUTH_PASS, TEST_SERVER,
                                  test_logger)

        # First call should return a list of users for 201
        mock_returned_value = {
            "results": [
                {
                    "username": "******",
                    "displayName": "User 1",
                    "userKey": "userkey1",
                    "type": "known"
                },
                {
                    "username": "******",
                    "displayName": "User 2",
                    "userKey": "userkey1",
                    "type": "known"
                },
            ],
            "size":
            2
        }
        mock_adapter.get(DEFS.get_group_members(TEST_SERVER,
                                                "group1").service_url,
                         json=mock_returned_value,
                         status_code=200)
        ret = helper.group_members("group1")
        assert type(ret) is list and len(ret) == 2
        assert ret[0]["username"] == "user1"
        assert ret[0]["displayName"] == "User 1"
        assert ret[0]["userKey"] == "userkey1"

        # Second call should return an empty list for 401
        mock_adapter.get(DEFS.get_group_members(TEST_SERVER,
                                                "group2").service_url,
                         json=mock_returned_value,
                         status_code=401)
        ret = helper.group_members("group2")
        assert type(ret) is list and len(ret) == 0
Пример #6
0
def test_confluence_helper_deactivate_user():
    """Test ConfluenceHelper deactivate_user
    """
    with requests_mock.mock() as mock_adapter:
        helper = ConfluenceHelper(TEST_AUTH_USER, TEST_AUTH_PASS, TEST_SERVER,
                                  test_logger)

        # First call should return 204
        mock_adapter.post(
            DEFS.post_deactivate_user(TEST_SERVER, "user1").service_url +
            "?username=user1",
            status_code=204)
        assert helper.deactivate_user("user1") is True

        # Second call should return 401
        mock_adapter.post(
            DEFS.post_deactivate_user(TEST_SERVER, "user2").service_url +
            "?username=user2",
            status_code=401)
        assert helper.deactivate_user("user2") is False
Пример #7
0
def test_confluence_helper_revoke_application_access():
    """Test ConfluenceHelper revoke_application_access
    """
    with requests_mock.mock() as mock_adapter:
        helper = ConfluenceHelper(TEST_AUTH_USER, TEST_AUTH_PASS, TEST_SERVER,
                                  test_logger)

        # First call should return 204
        mock_adapter.delete(
            DEFS.delete_app_access(TEST_SERVER, "user1").service_url +
            "?username=user1",
            status_code=204)
        assert helper.revoke_application_access("user1") is True

        # Second call should return 401
        mock_adapter.delete(
            DEFS.delete_app_access(TEST_SERVER, "user2").service_url +
            "?username=user2",
            status_code=401)
        assert helper.revoke_application_access("user2") is False
Пример #8
0
def test_confluence_helper_remove_member_from_group():
    """Test ConfluenceHelper remove_member_from_group
    """
    with requests_mock.mock() as mock_adapter:
        helper = ConfluenceHelper(TEST_AUTH_USER, TEST_AUTH_PASS, TEST_SERVER,
                                  test_logger)

        # First call should return 204
        mock_adapter.delete(DEFS.delete_member_from_group(TEST_SERVER, "user1", "group1").service_url\
            + "?username=user1&groupname=group1",
            status_code=204
        )
        assert helper.remove_member_from_group("user1", "group1") is True

        # Second call should return for 401
        mock_adapter.delete(DEFS.delete_member_from_group(TEST_SERVER, "user2", "group2").service_url \
            + "?username=user2&groupname=group2",
            status_code=401
        )
        assert helper.remove_member_from_group("user2", "group2") is False
Пример #9
0
def test_confluence_helper_members_in_all_groups():
    """Test ConfluenceHelper members_in_all_groups
    """
    with requests_mock.mock() as mock_adapter:
        # Mock groups return value
        mock_adapter.get(DEFS.get_groups(TEST_SERVER).service_url,
                         status_code=200,
                         json={
                             "results": [
                                 {
                                     "name": "group1",
                                     "type": "group"
                                 },
                                 {
                                     "name": "group2",
                                     "type": "group"
                                 },
                             ],
                             "size":
                             2
                         })

        # Mock group_members return value
        mock_adapter.get(DEFS.get_group_members(TEST_SERVER,
                                                "group1").service_url,
                         status_code=200,
                         json={
                             "results": [
                                 {
                                     "username": "******",
                                     "displayName": "User 1",
                                     "userKey": "userkey1",
                                     "type": "known"
                                 },
                                 {
                                     "username": "******",
                                     "displayName": "User 2",
                                     "userKey": "userkey1",
                                     "type": "known"
                                 },
                             ],
                             "size":
                             2
                         })
        mock_adapter.get(DEFS.get_group_members(TEST_SERVER,
                                                "group2").service_url,
                         status_code=200,
                         json={
                             "results": [
                                 {
                                     "username": "******",
                                     "displayName": "User 1",
                                     "userKey": "userkey1",
                                     "type": "known"
                                 },
                                 {
                                     "username": "******",
                                     "displayName": "User 3",
                                     "userKey": "userkey3",
                                     "type": "known"
                                 },
                             ],
                             "size":
                             2
                         })

        helper = ConfluenceHelper(TEST_AUTH_USER, TEST_AUTH_PASS, TEST_SERVER,
                                  test_logger)
        ret = helper.members_in_all_groups()

        assert len(ret.keys()) == 3
        assert ret["user1"] and ret["user2"] and ret["user3"]
        assert len(ret["user1"]["groups"]) == 2 and "group1" in ret["user1"][
            "groups"] and "group2" in ret["user1"]["groups"]
        assert len(
            ret["user2"]["groups"]) == 1 and "group1" in ret["user2"]["groups"]
        assert len(
            ret["user3"]["groups"]) == 1 and "group2" in ret["user3"]["groups"]