diff --git a/platformio/commands/account.py b/platformio/commands/account.py
index 48b26717..6e17fa40 100644
--- a/platformio/commands/account.py
+++ b/platformio/commands/account.py
@@ -83,7 +83,7 @@ def validate_password(value):
def account_register(username, email, password, firstname, lastname):
client = AccountClient()
client.registration(username, email, password, firstname, lastname)
- return click.secho(
+ click.secho(
"An account has been successfully created. "
"Please check your mail to activate your account and verify your email address.",
fg="green",
@@ -96,14 +96,14 @@ def account_register(username, email, password, firstname, lastname):
def account_login(username, password):
client = AccountClient()
client.login(username, password)
- return click.secho("Successfully logged in!", fg="green")
+ click.secho("Successfully logged in!", fg="green")
@cli.command("logout", short_help="Log out of PlatformIO Account")
def account_logout():
client = AccountClient()
client.logout()
- return click.secho("Successfully logged out!", fg="green")
+ click.secho("Successfully logged out!", fg="green")
@cli.command("password", short_help="Change password")
@@ -112,7 +112,7 @@ def account_logout():
def account_password(old_password, new_password):
client = AccountClient()
client.change_password(old_password, new_password)
- return click.secho("Password successfully changed!", fg="green")
+ click.secho("Password successfully changed!", fg="green")
@cli.command("token", short_help="Get or regenerate Authentication Token")
@@ -123,8 +123,9 @@ def account_token(password, regenerate, json_output):
client = AccountClient()
auth_token = client.auth_token(password, regenerate)
if json_output:
- return click.echo(json.dumps({"status": "success", "result": auth_token}))
- return click.secho("Personal Authentication Token: %s" % auth_token, fg="green")
+ click.echo(json.dumps({"status": "success", "result": auth_token}))
+ return
+ click.secho("Personal Authentication Token: %s" % auth_token, fg="green")
@cli.command("forgot", short_help="Forgot password")
@@ -132,7 +133,7 @@ def account_token(password, regenerate, json_output):
def account_forgot(username):
client = AccountClient()
client.forgot_password(username)
- return click.secho(
+ click.secho(
"If this account is registered, we will send the "
"further instructions to your email.",
fg="green",
@@ -171,11 +172,13 @@ def account_update(current_password, **kwargs):
except AccountNotAuthorized:
pass
if email_changed:
- return click.secho(
+ click.secho(
"Please check your mail to verify your new email address and re-login. ",
fg="yellow",
)
- return click.secho("Please re-login.", fg="yellow")
+ return None
+ click.secho("Please re-login.", fg="yellow")
+ return None
@cli.command("destroy", short_help="Destroy account")
@@ -192,7 +195,7 @@ def account_destroy():
client.logout()
except AccountNotAuthorized:
pass
- return click.secho(
+ click.secho(
"User account has been destroyed.",
fg="green",
)
@@ -205,7 +208,8 @@ def account_show(offline, json_output):
client = AccountClient()
info = client.get_account_info(offline)
if json_output:
- return click.echo(json.dumps(info))
+ click.echo(json.dumps(info))
+ return
click.echo()
if info.get("profile"):
print_profile(info["profile"])
@@ -213,7 +217,7 @@ def account_show(offline, json_output):
print_packages(info["packages"])
if info.get("subscriptions"):
print_subscriptions(info["subscriptions"])
- return click.echo()
+ click.echo()
def print_profile(profile):
diff --git a/tests/commands/test_account_org_team.py b/tests/commands/test_account_org_team.py
index f04af536..53344502 100644
--- a/tests/commands/test_account_org_team.py
+++ b/tests/commands/test_account_org_team.py
@@ -26,42 +26,46 @@ from platformio.commands.org import cli as cmd_org
from platformio.commands.team import cli as cmd_team
pytestmark = pytest.mark.skipif(
- not (os.environ.get("TEST_EMAIL_LOGIN") and os.environ.get("TEST_EMAIL_PASSWORD")),
- reason="requires TEST_EMAIL_LOGIN, TEST_EMAIL_PASSWORD environ variables",
+ not all(
+ os.environ.get(name)
+ for name in (
+ "TEST_EMAIL_LOGIN",
+ "TEST_EMAIL_PASSWORD",
+ "TEST_EMAIL_IMAP_SERVER",
+ )
+ ),
+ reason=(
+ "requires TEST_EMAIL_LOGIN, TEST_EMAIL_PASSWORD, "
+ "and TEST_EMAIL_IMAP_SERVER environment variables"
+ ),
)
-username = None
-email = None
-splited_email = None
-firstname = None
-lastname = None
-password = None
+USER_NAME = "test-piocore-%s" % str(random.randint(0, 100000))
+USER_EMAIL = os.environ.get("TEST_EMAIL_LOGIN", "").replace("@", f"+{USER_NAME}@")
+USER_PASSWORD = f"Qwerty-{random.randint(0, 100000)}"
+USER_FIRST_NAME = "FirstName"
+USER_LAST_NAME = "LastName"
-orgname = None
-display_name = None
-second_username = None
+ORG_NAME = "testorg-piocore-%s" % str(random.randint(0, 100000))
+ORG_DISPLAY_NAME = "Test Org for PIO Core"
+EXISTING_OWNER = "piolabs"
-teamname = None
-team_description = None
+TEAM_NAME = "test-" + str(random.randint(0, 100000))
+TEAM_DESCRIPTION = "team for CI test"
-def test_prepare():
- global username, email, splited_email, firstname, lastname
- global password, orgname, display_name, second_username, teamname, team_description
-
- username = "test-piocore-%s" % str(random.randint(0, 100000))
- splited_email = os.environ.get("TEST_EMAIL_LOGIN").split("@")
- email = "%s+%s@%s" % (splited_email[0], username, splited_email[1])
- firstname = "Test"
- lastname = "User"
- password = "Qwerty123!"
-
- orgname = "testorg-piocore-%s" % str(random.randint(0, 100000))
- display_name = "Test Org for PIO Core"
- second_username = "ivankravets"
-
- teamname = "test-" + str(random.randint(0, 100000))
- team_description = "team for CI test"
+def verify_account(email_contents):
+ link = (
+ email_contents.split("Click on the link below to start this process.")[1]
+ .split("This link will expire within 12 hours.")[0]
+ .strip()
+ )
+ with requests.Session() as session:
+ result = session.get(link).text
+ link = result.split(' 0
+ assert result.exit_code != 0
assert result.exception
- assert "You are not authorized! Please log in to PIO Account" in str(
- result.exception
- )
+ assert "You are not authorized!" in str(result.exception)
+ # use env tokem
os.environ["PLATFORMIO_AUTH_TOKEN"] = token
result = clirunner.invoke(
cmd_account,
- ["token", "--password", password, "--json-output"],
+ ["show", "--json-output"],
)
validate_cliresult(result)
json_result = json.loads(result.output.strip())
- assert json_result
- assert json_result.get("status") == "success"
- assert json_result.get("result") == token
+ assert json_result.get("user_id")
+ assert json_result.get("profile").get("username") == USER_NAME
+ assert json_result.get("profile").get("email") == USER_EMAIL
os.environ.pop("PLATFORMIO_AUTH_TOKEN")
result = clirunner.invoke(
cmd_account,
- ["login", "-u", username, "-p", password],
+ ["login", "-u", USER_NAME, "-p", USER_PASSWORD],
)
validate_cliresult(result)
@@ -234,7 +206,7 @@ def test_account_change_password(clirunner, validate_cliresult, isolated_pio_cor
[
"password",
"--old-password",
- password,
+ USER_PASSWORD,
"--new-password",
new_password,
],
@@ -242,11 +214,12 @@ def test_account_change_password(clirunner, validate_cliresult, isolated_pio_cor
validate_cliresult(result)
assert "Password successfully changed!" in result.output
- clirunner.invoke(cmd_account, ["logout"])
+ result = clirunner.invoke(cmd_account, ["logout"])
+ validate_cliresult(result)
result = clirunner.invoke(
cmd_account,
- ["login", "-u", username, "-p", new_password],
+ ["login", "-u", USER_NAME, "-p", new_password],
)
validate_cliresult(result)
@@ -257,7 +230,7 @@ def test_account_change_password(clirunner, validate_cliresult, isolated_pio_cor
"--old-password",
new_password,
"--new-password",
- password,
+ USER_PASSWORD,
],
)
validate_cliresult(result)
@@ -266,30 +239,29 @@ def test_account_change_password(clirunner, validate_cliresult, isolated_pio_cor
def test_account_update(
clirunner, validate_cliresult, receive_email, isolated_pio_core
):
- global username
- global email
- global firstname
- global lastname
+ global USER_NAME, USER_EMAIL, USER_FIRST_NAME, USER_LAST_NAME
- firstname = "First " + str(random.randint(0, 100000))
- lastname = "Last" + str(random.randint(0, 100000))
+ USER_NAME = "test-piocore-%s" % str(random.randint(0, 100000))
+ USER_EMAIL = os.environ.get("TEST_EMAIL_LOGIN", "").replace(
+ "@", f"+new-{USER_NAME}@"
+ )
+ USER_FIRST_NAME = "First " + str(random.randint(0, 100000))
+ USER_LAST_NAME = "Last" + str(random.randint(0, 100000))
- username = "username" + str(random.randint(0, 100000))
- email = "%s+new-%s@%s" % (splited_email[0], username, splited_email[1])
result = clirunner.invoke(
cmd_account,
[
"update",
"--current-password",
- password,
+ USER_PASSWORD,
"--firstname",
- firstname,
+ USER_FIRST_NAME,
"--lastname",
- lastname,
+ USER_LAST_NAME,
"--username",
- username,
+ USER_NAME,
"--email",
- email,
+ USER_EMAIL,
],
)
validate_cliresult(result)
@@ -298,18 +270,7 @@ def test_account_update(
"Please check your mail to verify your new email address and re-login. "
in result.output
)
-
- result = receive_email(email)
- link = (
- result.split("Click on the link below to start this process.")[1]
- .split("This link will expire within 12 hours.")[0]
- .strip()
- )
- session = requests.Session()
- result = session.get(link).text
- link = result.split(' 0
assert result.exception
- assert "You are not authorized! Please log in to PIO Account" in str(
- result.exception
- )
+ assert "You are not authorized!" in str(result.exception)
result = clirunner.invoke(
cmd_account,
- ["login", "-u", username, "-p", password],
+ ["login", "-u", USER_NAME, "-p", USER_PASSWORD],
)
validate_cliresult(result)
-# def test_account_destroy_with_linked_resources(
+# def _test_account_destroy_with_linked_resources(
# clirunner, validate_cliresult, receive_email, isolated_pio_core, tmpdir_factory
# ):
# package_url = "https://github.com/bblanchon/ArduinoJson/archive/v6.11.0.tar.gz"
@@ -363,44 +322,47 @@ def test_account_update(
def test_org_create(clirunner, validate_cliresult, isolated_pio_core):
result = clirunner.invoke(
cmd_org,
- ["create", "--email", email, "--displayname", display_name, orgname],
+ ["create", "--email", USER_EMAIL, "--displayname", ORG_DISPLAY_NAME, ORG_NAME],
)
validate_cliresult(result)
def test_org_list(clirunner, validate_cliresult, isolated_pio_core):
- # pio org list
result = clirunner.invoke(cmd_org, ["list", "--json-output"])
validate_cliresult(result)
json_result = json.loads(result.output.strip())
assert json_result == [
{
- "orgname": orgname,
- "displayname": display_name,
- "email": email,
+ "orgname": ORG_NAME,
+ "displayname": ORG_DISPLAY_NAME,
+ "email": USER_EMAIL,
"owners": [
- {"username": username, "firstname": firstname, "lastname": lastname}
+ {
+ "username": USER_NAME,
+ "firstname": USER_FIRST_NAME,
+ "lastname": USER_LAST_NAME,
+ }
],
}
]
def test_org_add_owner(clirunner, validate_cliresult, isolated_pio_core):
- result = clirunner.invoke(cmd_org, ["add", orgname, second_username])
+ result = clirunner.invoke(cmd_org, ["add", ORG_NAME, EXISTING_OWNER])
validate_cliresult(result)
result = clirunner.invoke(cmd_org, ["list", "--json-output"])
validate_cliresult(result)
- assert second_username in result.output
+ assert EXISTING_OWNER in result.output
def test_org_remove_owner(clirunner, validate_cliresult, isolated_pio_core):
- result = clirunner.invoke(cmd_org, ["remove", orgname, second_username])
+ result = clirunner.invoke(cmd_org, ["remove", ORG_NAME, EXISTING_OWNER])
validate_cliresult(result)
result = clirunner.invoke(cmd_org, ["list", "--json-output"])
validate_cliresult(result)
- assert second_username not in result.output
+ assert EXISTING_OWNER not in result.output
def test_org_update(clirunner, validate_cliresult, isolated_pio_core):
@@ -411,8 +373,8 @@ def test_org_update(clirunner, validate_cliresult, isolated_pio_core):
cmd_org,
[
"update",
- orgname,
- "--new-orgname",
+ ORG_NAME,
+ "--orgname",
new_orgname,
"--displayname",
new_display_name,
@@ -427,9 +389,13 @@ def test_org_update(clirunner, validate_cliresult, isolated_pio_core):
{
"orgname": new_orgname,
"displayname": new_display_name,
- "email": email,
+ "email": USER_EMAIL,
"owners": [
- {"username": username, "firstname": firstname, "lastname": lastname}
+ {
+ "username": USER_NAME,
+ "firstname": USER_FIRST_NAME,
+ "lastname": USER_LAST_NAME,
+ }
],
}
]
@@ -439,10 +405,10 @@ def test_org_update(clirunner, validate_cliresult, isolated_pio_core):
[
"update",
new_orgname,
- "--new-orgname",
- orgname,
+ "--orgname",
+ ORG_NAME,
"--displayname",
- display_name,
+ ORG_DISPLAY_NAME,
],
)
validate_cliresult(result)
@@ -453,9 +419,9 @@ def test_team_create(clirunner, validate_cliresult, isolated_pio_core):
cmd_team,
[
"create",
- "%s:%s" % (orgname, teamname),
+ "%s:%s" % (ORG_NAME, TEAM_NAME),
"--description",
- team_description,
+ TEAM_DESCRIPTION,
],
)
validate_cliresult(result)
@@ -464,55 +430,55 @@ def test_team_create(clirunner, validate_cliresult, isolated_pio_core):
def test_team_list(clirunner, validate_cliresult, isolated_pio_core):
result = clirunner.invoke(
cmd_team,
- ["list", "%s" % orgname, "--json-output"],
+ ["list", "%s" % ORG_NAME, "--json-output"],
)
validate_cliresult(result)
json_result = json.loads(result.output.strip())
for item in json_result:
del item["id"]
assert json_result == [
- {"name": teamname, "description": team_description, "members": []}
+ {"name": TEAM_NAME, "description": TEAM_DESCRIPTION, "members": []}
]
-def test_team_add_member(clirunner, validate_cliresult, isolated_pio_core):
+def _test_team_add_member(clirunner, validate_cliresult, isolated_pio_core):
result = clirunner.invoke(
cmd_team,
- ["add", "%s:%s" % (orgname, teamname), second_username],
+ ["add", "%s:%s" % (ORG_NAME, TEAM_NAME), EXISTING_OWNER],
)
validate_cliresult(result)
result = clirunner.invoke(
cmd_team,
- ["list", "%s" % orgname, "--json-output"],
+ ["list", "%s" % ORG_NAME, "--json-output"],
)
validate_cliresult(result)
- assert second_username in result.output
+ assert EXISTING_OWNER in result.output
-def test_team_remove(clirunner, validate_cliresult, isolated_pio_core):
+def _test_team_remove(clirunner, validate_cliresult, isolated_pio_core):
result = clirunner.invoke(
cmd_team,
- ["remove", "%s:%s" % (orgname, teamname), second_username],
+ ["remove", "%s:%s" % (ORG_NAME, TEAM_NAME), EXISTING_OWNER],
)
validate_cliresult(result)
result = clirunner.invoke(
cmd_team,
- ["list", "%s" % orgname, "--json-output"],
+ ["list", "%s" % ORG_NAME, "--json-output"],
)
validate_cliresult(result)
- assert second_username not in result.output
+ assert EXISTING_OWNER not in result.output
-def test_team_update(clirunner, validate_cliresult, receive_email, isolated_pio_core):
+def _test_team_update(clirunner, validate_cliresult, receive_email, isolated_pio_core):
new_teamname = "new-" + str(random.randint(0, 100000))
newteam_description = "Updated Description"
result = clirunner.invoke(
cmd_team,
[
"update",
- "%s:%s" % (orgname, teamname),
+ "%s:%s" % (ORG_NAME, TEAM_NAME),
"--name",
new_teamname,
"--description",
@@ -523,7 +489,7 @@ def test_team_update(clirunner, validate_cliresult, receive_email, isolated_pio_
result = clirunner.invoke(
cmd_team,
- ["list", "%s" % orgname, "--json-output"],
+ ["list", "%s" % ORG_NAME, "--json-output"],
)
validate_cliresult(result)
json_result = json.loads(result.output.strip())
@@ -537,20 +503,22 @@ def test_team_update(clirunner, validate_cliresult, receive_email, isolated_pio_
cmd_team,
[
"update",
- "%s:%s" % (orgname, new_teamname),
+ "%s:%s" % (ORG_NAME, new_teamname),
"--name",
- teamname,
+ TEAM_NAME,
"--description",
- team_description,
+ TEAM_DESCRIPTION,
],
)
validate_cliresult(result)
def test_cleanup(clirunner, validate_cliresult, receive_email, isolated_pio_core):
- result = clirunner.invoke(cmd_team, ["destroy", "%s:%s" % (orgname, teamname)], "y")
+ result = clirunner.invoke(
+ cmd_team, ["destroy", "%s:%s" % (ORG_NAME, TEAM_NAME)], "y"
+ )
validate_cliresult(result)
- result = clirunner.invoke(cmd_org, ["destroy", orgname], "y")
+ result = clirunner.invoke(cmd_org, ["destroy", ORG_NAME], "y")
validate_cliresult(result)
result = clirunner.invoke(cmd_account, ["destroy"], "y")
validate_cliresult(result)
diff --git a/tests/conftest.py b/tests/conftest.py
index 6f4a6088..76b53dd8 100644
--- a/tests/conftest.py
+++ b/tests/conftest.py
@@ -93,9 +93,9 @@ def without_internet(monkeypatch):
@pytest.fixture
def receive_email(): # pylint:disable=redefined-outer-name, too-many-locals
def _receive_email(from_who):
- test_email = os.environ.get("TEST_EMAIL_LOGIN")
- test_password = os.environ.get("TEST_EMAIL_PASSWORD")
- imap_server = os.environ.get("TEST_EMAIL_IMAP_SERVER") or "imap.gmail.com"
+ test_email = os.environ["TEST_EMAIL_LOGIN"]
+ test_password = os.environ["TEST_EMAIL_PASSWORD"]
+ imap_server = os.environ["TEST_EMAIL_IMAP_SERVER"]
def get_body(msg):
if msg.is_multipart():