File: conftest.py

package info (click to toggle)
asf-search 11.0.3-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 10,468 kB
  • sloc: python: 8,488; makefile: 6
file content (63 lines) | stat: -rw-r--r-- 2,740 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
import argparse
import pytest
import os
from asf_search.ASFSession import ASFSession
from getpass import getpass

def string_to_session(user_input: str) -> ASFSession:
    session = ASFSession()

    if user_input is not None and len(user_input):
        session.auth_with_token(user_input)

    return session

def set_should_auth_session(user_input: str) -> ASFSession:
    should_auth = string_to_bool(user_input)
    session = ASFSession()
    if should_auth:
        if (token:=os.environ.get('EDL_TOKEN')) is not None:
            try:
                session.auth_with_token(token=token)
            except Exception as exc:
                raise argparse.ArgumentTypeError(f"Unabled to authenticate with the given environment's `EDL_TOKEN` (token may need to be refreshed). Original exception: {str(exc)}")
        else:
            raise argparse.ArgumentTypeError("ERROR: Environment variable `EDL_TOKEN` token not set, cannot create authenticated session for tests. Are you running this in the correct local/github action environment?")

    return session

def set_should_auth_session_with_creds(user_input: str) -> ASFSession:
    should_auth = string_to_bool(user_input)
    session = ASFSession()
    if should_auth:
        session.auth_with_creds(input('EDL Username'), getpass('EDL Password'))

    return session

def set_should_auth_session_with_token(user_input: str) -> ASFSession:
    should_auth = string_to_bool(user_input)
    session = ASFSession()
    if should_auth:
        session.auth_with_token(getpass('EDL Token'))

    return session

def string_to_bool(user_input: str) -> bool:
    user_input = str(user_input).upper()
    if 'TRUE'.startswith(user_input):
       return True
    elif 'FALSE'.startswith(user_input):
       return False
    else:
       raise argparse.ArgumentTypeError(f"ERROR: Could not convert '{user_input}' to bool (true/false/t/f).")

def pytest_addoption(parser: pytest.Parser):
    parser.addoption("--should_auth_session", action="store", dest="authenticated_session", type=set_should_auth_session, default='FALSE',
        help = "'should_auth_session': Set if the test case requires authentication (pull from `EDL_TOKEN` environment variable)"
    )

    parser.addoption("--auth_with_creds", action="store", dest="authenticated_session", type=set_should_auth_session_with_creds, default='FALSE',
                     help = "'auth_with_creds': Use EDL username and password to authenticate session for relevant tests")

    parser.addoption("--auth_with_token", action="store", dest="authenticated_session", type=set_should_auth_session_with_token, default='FALSE',
                     help = "'auth_with_creds': Use EDL token to authenticate session for relevant tests")