############################################################################
# Copyright (C) SchedMD LLC.
############################################################################
import atf
import os
import pwd
import pytest
import re

approved_account = "account1"
unapproved_account = "account2"
test_user = pwd.getpwuid(os.getuid())[0]


# Setup
@pytest.fixture(scope="module", autouse=True)
def setup():
    atf.require_accounting(modify=True)
    atf.require_config_parameter("AccountingStorageEnforce", "associations")
    atf.require_slurm_running()


@pytest.fixture(scope="module")
def setup_account():
    atf.run_command(
        f"sacctmgr -vi add account {approved_account}",
        user=atf.properties["slurm-user"],
        fatal=True,
    )
    atf.run_command(
        f"sacctmgr -vi add user {test_user} account={approved_account}",
        user=atf.properties["slurm-user"],
        fatal=True,
    )


def test_approved_association(setup_account):
    """Verify that a job can be submitted under an approved account"""
    assert atf.run_command_exit(f"srun --account={approved_account} true") == 0


def test_unapproved_association():
    """Verify that a job cannot be submitted under an unapproved account"""
    assert atf.run_command_exit(f"srun --account={unapproved_account} true") != 0
