Skip to content

Commit eda4487

Browse files
committed
Refactor account sorting logic to a fixture
Refactor shared setup for account sorting tests into a reusable fixture to improve readability and reduce repeated boilerplate.
1 parent fa37fa7 commit eda4487

1 file changed

Lines changed: 64 additions & 137 deletions

File tree

tests/unit/customizations/configure/test_sso.py

Lines changed: 64 additions & 137 deletions
Original file line numberDiff line numberDiff line change
@@ -374,6 +374,43 @@ def role_name_select(role_name):
374374
return SelectMenu(answer=role_name, expected_choices=[role_name, "roleB"])
375375

376376

377+
@pytest.fixture
378+
def stub_account_sorting_flow(
379+
ptk_stubber,
380+
stub_sso_list_accounts,
381+
stub_sso_list_roles,
382+
start_url_prompt,
383+
sso_region_prompt,
384+
region_prompt,
385+
output_prompt,
386+
profile_prompt,
387+
account_id,
388+
role_name,
389+
):
390+
def _stub(accounts, expected_sorted_accounts, selected_account):
391+
account_select = SelectMenu(
392+
answer=selected_account,
393+
expected_choices=expected_sorted_accounts,
394+
)
395+
ptk_stubber.user_inputs = UserInputs(
396+
session_prompt=RecommendedSessionPrompt(answer=""),
397+
start_url_prompt=start_url_prompt,
398+
sso_region_prompt=sso_region_prompt,
399+
account_id_select=account_select,
400+
role_name_select=None,
401+
region_prompt=region_prompt,
402+
output_prompt=output_prompt,
403+
profile_prompt=profile_prompt,
404+
)
405+
stub_sso_list_accounts(accounts)
406+
stub_sso_list_roles(
407+
[role_name],
408+
expected_account_id=account_id,
409+
)
410+
411+
return _stub
412+
413+
377414
@pytest.fixture
378415
def region_prompt():
379416
return RegionPrompt(answer="us-west-2", expected_default=None)
@@ -1530,195 +1567,85 @@ def test_single_account_single_role_device_code_fallback(
15301567
def test_account_list_sorted_by_name(
15311568
self,
15321569
sso_cmd,
1533-
ptk_stubber,
1534-
stub_sso_list_accounts,
1535-
stub_sso_list_roles,
1570+
stub_account_sorting_flow,
15361571
args,
15371572
parsed_globals,
1538-
start_url_prompt,
1539-
sso_region_prompt,
1540-
region_prompt,
1541-
output_prompt,
1542-
profile_prompt,
15431573
account_id,
1544-
role_name,
15451574
):
1546-
selected_account = {
1575+
selected = {
15471576
'accountId': account_id,
15481577
'accountName': 'Charlie',
15491578
'emailAddress': 'charlie@example.com',
15501579
}
1551-
first_account = {
1580+
first = {
15521581
'accountId': '1111111111',
15531582
'accountName': 'Alpha',
15541583
'emailAddress': 'alpha@example.com',
15551584
}
1556-
second_account = {
1585+
second = {
15571586
'accountId': '2222222222',
15581587
'accountName': 'Bravo',
15591588
'emailAddress': 'bravo@example.com',
15601589
}
1561-
third_account = {
1590+
third = {
15621591
'accountId': '3333333333',
15631592
'accountName': 'Delta',
15641593
'emailAddress': 'delta@example.com',
15651594
}
1566-
accounts = [
1567-
selected_account,
1568-
second_account,
1569-
third_account,
1570-
first_account,
1571-
]
1572-
expected_accounts = [
1573-
first_account,
1574-
second_account,
1575-
selected_account,
1576-
third_account,
1577-
]
1578-
account_select = SelectMenu(
1579-
answer=selected_account,
1580-
expected_choices=expected_accounts,
1581-
)
1582-
ptk_stubber.user_inputs = UserInputs(
1583-
session_prompt=RecommendedSessionPrompt(answer=""),
1584-
start_url_prompt=start_url_prompt,
1585-
sso_region_prompt=sso_region_prompt,
1586-
account_id_select=account_select,
1587-
role_name_select=None,
1588-
region_prompt=region_prompt,
1589-
output_prompt=output_prompt,
1590-
profile_prompt=profile_prompt,
1591-
)
1592-
stub_sso_list_accounts(accounts)
1593-
stub_sso_list_roles(
1594-
[role_name],
1595-
expected_account_id=account_id,
1595+
stub_account_sorting_flow(
1596+
accounts=[selected, second, third, first],
1597+
expected_sorted_accounts=[first, second, selected, third],
1598+
selected_account=selected,
15961599
)
15971600
assert sso_cmd(args, parsed_globals) == 0
15981601

15991602
def test_account_list_sorted_by_email(
16001603
self,
16011604
sso_cmd,
1602-
ptk_stubber,
1603-
stub_sso_list_accounts,
1604-
stub_sso_list_roles,
1605+
stub_account_sorting_flow,
16051606
args,
16061607
parsed_globals,
1607-
start_url_prompt,
1608-
sso_region_prompt,
1609-
region_prompt,
1610-
output_prompt,
1611-
profile_prompt,
16121608
account_id,
1613-
role_name,
16141609
):
1615-
selected_account = {
1610+
selected = {
16161611
'accountId': account_id,
16171612
'emailAddress': 'charlie@example.com',
16181613
}
1619-
first_account = {
1614+
first = {
16201615
'accountId': '1111111111',
16211616
'emailAddress': 'alpha@example.com',
16221617
}
1623-
second_account = {
1618+
second = {
16241619
'accountId': '2222222222',
16251620
'emailAddress': 'bravo@example.com',
16261621
}
1627-
third_account = {
1622+
third = {
16281623
'accountId': '3333333333',
16291624
'emailAddress': 'delta@example.com',
16301625
}
1631-
accounts = [
1632-
selected_account,
1633-
third_account,
1634-
first_account,
1635-
second_account,
1636-
]
1637-
expected_accounts = [
1638-
first_account,
1639-
second_account,
1640-
selected_account,
1641-
third_account,
1642-
]
1643-
account_select = SelectMenu(
1644-
answer=selected_account,
1645-
expected_choices=expected_accounts,
1646-
)
1647-
ptk_stubber.user_inputs = UserInputs(
1648-
session_prompt=RecommendedSessionPrompt(answer=""),
1649-
start_url_prompt=start_url_prompt,
1650-
sso_region_prompt=sso_region_prompt,
1651-
account_id_select=account_select,
1652-
role_name_select=None,
1653-
region_prompt=region_prompt,
1654-
output_prompt=output_prompt,
1655-
profile_prompt=profile_prompt,
1656-
)
1657-
stub_sso_list_accounts(accounts)
1658-
stub_sso_list_roles(
1659-
[role_name],
1660-
expected_account_id=account_id,
1626+
stub_account_sorting_flow(
1627+
accounts=[selected, third, first, second],
1628+
expected_sorted_accounts=[first, second, selected, third],
1629+
selected_account=selected,
16611630
)
16621631
assert sso_cmd(args, parsed_globals) == 0
16631632

16641633
def test_account_list_sorted_by_account_id(
16651634
self,
16661635
sso_cmd,
1667-
ptk_stubber,
1668-
stub_sso_list_accounts,
1669-
stub_sso_list_roles,
1636+
stub_account_sorting_flow,
16701637
args,
16711638
parsed_globals,
1672-
start_url_prompt,
1673-
sso_region_prompt,
1674-
region_prompt,
1675-
output_prompt,
1676-
profile_prompt,
16771639
account_id,
1678-
role_name,
16791640
):
1680-
selected_account = {
1681-
'accountId': account_id,
1682-
}
1683-
first_account = {
1684-
'accountId': '1111111111',
1685-
}
1686-
second_account = {
1687-
'accountId': '2222222222',
1688-
}
1689-
third_account = {
1690-
'accountId': '3333333333',
1691-
}
1692-
accounts = [
1693-
third_account,
1694-
selected_account,
1695-
first_account,
1696-
second_account,
1697-
]
1698-
expected_accounts = [
1699-
selected_account,
1700-
first_account,
1701-
second_account,
1702-
third_account,
1703-
]
1704-
account_select = SelectMenu(
1705-
answer=selected_account,
1706-
expected_choices=expected_accounts,
1707-
)
1708-
ptk_stubber.user_inputs = UserInputs(
1709-
session_prompt=RecommendedSessionPrompt(answer=""),
1710-
start_url_prompt=start_url_prompt,
1711-
sso_region_prompt=sso_region_prompt,
1712-
account_id_select=account_select,
1713-
role_name_select=None,
1714-
region_prompt=region_prompt,
1715-
output_prompt=output_prompt,
1716-
profile_prompt=profile_prompt,
1717-
)
1718-
stub_sso_list_accounts(accounts)
1719-
stub_sso_list_roles(
1720-
[role_name],
1721-
expected_account_id=account_id,
1641+
selected = {'accountId': account_id}
1642+
first = {'accountId': '1111111111'}
1643+
second = {'accountId': '2222222222'}
1644+
third = {'accountId': '3333333333'}
1645+
stub_account_sorting_flow(
1646+
accounts=[third, selected, first, second],
1647+
expected_sorted_accounts=[selected, first, second, third],
1648+
selected_account=selected,
17221649
)
17231650
assert sso_cmd(args, parsed_globals) == 0
17241651

0 commit comments

Comments
 (0)