@@ -1527,60 +1527,256 @@ def test_single_account_single_role_device_code_fallback(
15271527 ],
15281528 )
15291529
1530- def test_account_list_sorted_by_name (self ):
1530+ def test_account_list_sorted_by_name (
1531+ self ,
1532+ sso_cmd ,
1533+ ptk_stubber ,
1534+ stub_sso_list_accounts ,
1535+ stub_sso_list_roles ,
1536+ args ,
1537+ parsed_globals ,
1538+ start_url_prompt ,
1539+ sso_region_prompt ,
1540+ region_prompt ,
1541+ output_prompt ,
1542+ profile_prompt ,
1543+ account_id ,
1544+ role_name ,
1545+ ):
15311546 selected_account = {
1532- 'accountId' : self .account_id ,
1533- 'emailAddress' : 'account@example.com' ,
1547+ 'accountId' : account_id ,
1548+ 'accountName' : 'Charlie' ,
1549+ 'emailAddress' : 'charlie@example.com' ,
15341550 }
15351551 first_account = {
15361552 'accountId' : '1111111111' ,
1537- 'accountName' : 'alpha ' ,
1538- 'emailAddress' : 'alpha@example.com'
1553+ 'accountName' : 'Alpha ' ,
1554+ 'emailAddress' : 'alpha@example.com' ,
15391555 }
15401556 second_account = {
15411557 'accountId' : '2222222222' ,
15421558 'accountName' : 'Bravo' ,
1543- 'emailAddress' : 'Bravo@example.com'
1559+ 'emailAddress' : 'bravo@example.com' ,
1560+ }
1561+ third_account = {
1562+ 'accountId' : '3333333333' ,
1563+ 'accountName' : 'Delta' ,
1564+ 'emailAddress' : 'delta@example.com' ,
1565+ }
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 ,
1596+ )
1597+ assert sso_cmd (args , parsed_globals ) == 0
1598+
1599+ def test_account_list_sorted_by_email (
1600+ self ,
1601+ sso_cmd ,
1602+ ptk_stubber ,
1603+ stub_sso_list_accounts ,
1604+ stub_sso_list_roles ,
1605+ args ,
1606+ parsed_globals ,
1607+ start_url_prompt ,
1608+ sso_region_prompt ,
1609+ region_prompt ,
1610+ output_prompt ,
1611+ profile_prompt ,
1612+ account_id ,
1613+ role_name ,
1614+ ):
1615+ selected_account = {
1616+ 'accountId' : account_id ,
1617+ 'emailAddress' : 'charlie@example.com' ,
1618+ }
1619+ first_account = {
1620+ 'accountId' : '1111111111' ,
1621+ 'emailAddress' : 'alpha@example.com' ,
1622+ }
1623+ second_account = {
1624+ 'accountId' : '2222222222' ,
1625+ 'emailAddress' : 'bravo@example.com' ,
1626+ }
1627+ third_account = {
1628+ 'accountId' : '3333333333' ,
1629+ 'emailAddress' : 'delta@example.com' ,
1630+ }
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 ,
1661+ )
1662+ assert sso_cmd (args , parsed_globals ) == 0
1663+
1664+ def test_account_list_sorted_by_account_id (
1665+ self ,
1666+ sso_cmd ,
1667+ ptk_stubber ,
1668+ stub_sso_list_accounts ,
1669+ stub_sso_list_roles ,
1670+ args ,
1671+ parsed_globals ,
1672+ start_url_prompt ,
1673+ sso_region_prompt ,
1674+ region_prompt ,
1675+ output_prompt ,
1676+ profile_prompt ,
1677+ account_id ,
1678+ role_name ,
1679+ ):
1680+ selected_account = {
1681+ 'accountId' : account_id ,
1682+ }
1683+ first_account = {
1684+ 'accountId' : '1111111111' ,
1685+ }
1686+ second_account = {
1687+ 'accountId' : '2222222222' ,
15441688 }
15451689 third_account = {
15461690 'accountId' : '3333333333' ,
1547- 'emailAddress' : 'charlie@example.com'
15481691 }
1549- accounts = [selected_account , second_account ,
1550- third_account , first_account ]
1551- expected_accounts = [first_account ,
1552- second_account , selected_account , third_account ]
1553- self ._add_prompt_responses ()
1554- self ._add_list_accounts_response (accounts )
1555- self ._add_list_account_roles_response ([{'roleName' : self .role_name }])
1556- self .selector .side_effect = [selected_account ]
1557- with self .sso_stub :
1558- self .configure_sso (args = [], parsed_globals = self .global_args )
1559- printed_accounts = self .selector .call_args [0 ][0 ]
1560- self .assertEqual (printed_accounts , expected_accounts )
1561-
1562- def test_role_list_sorted_by_name (self ):
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 ,
1722+ )
1723+ assert sso_cmd (args , parsed_globals ) == 0
1724+
1725+ def test_role_list_sorted_by_name (
1726+ self ,
1727+ sso_cmd ,
1728+ ptk_stubber ,
1729+ stub_sso_list_accounts ,
1730+ stub_sso_list_roles ,
1731+ args ,
1732+ parsed_globals ,
1733+ start_url_prompt ,
1734+ sso_region_prompt ,
1735+ region_prompt ,
1736+ output_prompt ,
1737+ profile_prompt ,
1738+ account_id ,
1739+ ):
15631740 selected_account = {
1564- 'accountId' : self . account_id ,
1741+ 'accountId' : account_id ,
15651742 'emailAddress' : 'account@example.com' ,
15661743 }
1567- first_role = {'roleName' : 'AdministratorAccess' ,
1568- 'accountId' : self .account_id }
1569- second_role = {'roleName' : 'DataScientist' ,
1570- 'accountId' : self .account_id }
1571- third_role = {'roleName' : 'SystemAdministrator' ,
1572- 'accountId' : self .account_id }
1573- roles = [second_role , third_role , first_role ]
1574- expected_roles = [first_role ['roleName' ],
1575- second_role ['roleName' ], third_role ['roleName' ]]
1576- self ._add_prompt_responses ()
1577- self ._add_list_accounts_response ([selected_account ])
1578- self ._add_list_account_roles_response (roles )
1579- self .selector .side_effect = [selected_account ]
1580- with self .sso_stub :
1581- self .configure_sso (args = [], parsed_globals = self .global_args )
1582- printed_roles = self .selector .call_args [0 ][0 ]
1583- self .assertEqual (printed_roles , expected_roles )
1744+ role_names_unsorted = [
1745+ 'DataScientist' ,
1746+ 'SystemAdministrator' ,
1747+ 'AdministratorAccess' ,
1748+ ]
1749+ expected_roles = [
1750+ 'AdministratorAccess' ,
1751+ 'DataScientist' ,
1752+ 'SystemAdministrator' ,
1753+ ]
1754+ account_select = None
1755+ role_select = SelectMenu (
1756+ answer = 'AdministratorAccess' ,
1757+ expected_choices = expected_roles ,
1758+ )
1759+ role_profile_prompt = ProfilePrompt (
1760+ answer = "dev" ,
1761+ expected_default = f"AdministratorAccess-{ account_id } " ,
1762+ )
1763+ ptk_stubber .user_inputs = UserInputs (
1764+ session_prompt = RecommendedSessionPrompt (answer = "" ),
1765+ start_url_prompt = start_url_prompt ,
1766+ sso_region_prompt = sso_region_prompt ,
1767+ account_id_select = account_select ,
1768+ role_name_select = role_select ,
1769+ region_prompt = region_prompt ,
1770+ output_prompt = output_prompt ,
1771+ profile_prompt = role_profile_prompt ,
1772+ )
1773+ stub_sso_list_accounts ([selected_account ])
1774+ stub_sso_list_roles (
1775+ role_names_unsorted ,
1776+ expected_account_id = account_id ,
1777+ )
1778+ assert sso_cmd (args , parsed_globals ) == 0
1779+
15841780
15851781class TestPrintConclusion :
15861782 def test_print_conclusion_default_profile_with_credentials (
0 commit comments