@@ -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
378415def 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