Пример #1
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
Пример #2
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))