from organization_auth.exceptions import TokenExpiredException, TokenInvalidException
from organization_auth.models import Account, UserAccount
from organization_auth.services import get_ad_accounts_list
from organization_auth.tasks.auth_tasks import (
    _build_token_validation_credentials,
    _extract_accessible_accounts,
    _normalize_account_id,
)


ACCOUNT_ID = "ada364fd-b973-4e86-b41b-4924b1e1760e"


user_account = (
    UserAccount.objects.select_related("account", "user")
    .get(account_id=ACCOUNT_ID)
)

platform = user_account.account.platform
normalized_account_id = _normalize_account_id(
    platform,
    user_account.account.ad_account_id,
)

try:
    credentials = _build_token_validation_credentials(
        user_account,
        [user_account],
        platform,
    )
    account_list = get_ad_accounts_list(
        credentials,
        platform,
        user_account.user,
        list_only=platform != Account.Platform.LINKEDIN,
    )
    accessible_account_ids, _ = _extract_accessible_accounts(platform, account_list)
    normalized_accessible_account_ids = {
        _normalize_account_id(platform, account_id)
        for account_id in accessible_account_ids
        if account_id
    }

    print(normalized_account_id in normalized_accessible_account_ids)
except (TokenExpiredException, TokenInvalidException):
    print(False)
