def test_write_config_new_file(self, isfile_mock):
        isfile_mock.return_value = False

        config = Config(['aws_okta_keyman.py'])
        config.writepath = './.config/aws_okta_keyman.yml'
        config.username = '******'
        config.appid = 'app/id'
        config.org = 'example'

        m = mock.mock_open()
        with mock.patch('aws_okta_keyman.config.open', m):
            config.write_config()

        m.assert_has_calls([
            mock.call().write('org'),
            mock.call().write(':'),
            mock.call().write(' '),
            mock.call().write('example'),
            mock.call().write('\n'),
            mock.call().write('reup'),
            mock.call().write(':'),
            mock.call().write(' '),
            mock.call().write('null'),
            mock.call().write('\n'),
            mock.call().write('username'),
            mock.call().write(':'),
            mock.call().write(' '),
            mock.call().write('*****@*****.**'),
            mock.call().write('\n'),
            mock.call().flush(),
            mock.call().flush(),
            mock.call().__exit__(None, None, None)
        ])
    def test_write_config(self, isfile_mock):
        isfile_mock.return_value = True

        config = Config(['aws_okta_keyman.py'])
        config.writepath = './.config/aws_okta_keyman.yml'
        config.username = '******'
        yaml = ("username: [email protected]\n"
                "org: example\n"
                "appid: app/id\n"
                "accounts:\n"
                "  - name: Dev\n"
                "    appid: A123/123\n")

        m = mock.mock_open(read_data=yaml)
        with mock.patch('aws_okta_keyman.config.open', m):
            config.write_config()

        m.assert_has_calls([
            mock.call('./.config/aws_okta_keyman.yml', 'r'),
        ])
        m.assert_has_calls([
            mock.call(u'./.config/aws_okta_keyman.yml', 'w'),
        ])
        m.assert_has_calls([
            mock.call().write('accounts'),
            mock.call().write(':'),
            mock.call().write('\n'),
            mock.call().write('-'),
            mock.call().write(' '),
            mock.call().write('appid'),
            mock.call().write(':'),
            mock.call().write(' '),
            mock.call().write('A123/123'),
            mock.call().write('\n'),
            mock.call().write('  '),
            mock.call().write('name'),
            mock.call().write(':'),
            mock.call().write(' '),
            mock.call().write('Dev'),
            mock.call().write('\n'),
            mock.call().write('org'),
            mock.call().write(':'),
            mock.call().write(' '),
            mock.call().write('example'),
            mock.call().write('\n'),
            mock.call().write('reup'),
            mock.call().write(':'),
            mock.call().write(' '),
            mock.call().write('null'),
            mock.call().write('\n'),
            mock.call().write('username'),
            mock.call().write(':'),
            mock.call().write(' '),
            mock.call().write('*****@*****.**'),
            mock.call().write('\n'),
            mock.call().flush(),
            mock.call().flush(),
            mock.call().__exit__(None, None, None)
        ])
Example #3
0
 def test_validate_automatic_username_from_full_config(self, getpass_mock):
     getpass_mock.getuser.return_value = "user"
     config = Config(["aws_okta_keyman.py"])
     config.accounts = [{"appid": "A123"}]
     config.org = "example"
     config.username = "******"
     config.validate()
     self.assertEqual(config.username, "*****@*****.**")
 def test_validate_automatic_username_from_full_config(self, getpass_mock):
     getpass_mock.getuser.return_value = 'user'
     config = Config(['aws_okta_keyman.py'])
     config.accounts = [{'appid': 'A123'}]
     config.org = 'example'
     config.username = '******'
     config.validate()
     self.assertEqual(config.username, '*****@*****.**')
    def test_write_config_path_expansion(self, isfile_mock):
        isfile_mock.return_value = False

        config = Config(['aws_okta_keyman.py'])
        config.writepath = '~/.config/aws_okta_keyman.yml'
        config.username = '******'
        config.appid = 'app/id'
        config.org = 'example'

        expected_path = os.path.expanduser(config.writepath)

        m = mock.mock_open()
        with mock.patch('aws_okta_keyman.config.open', m):
            config.write_config()

        m.assert_has_calls([mock.call(expected_path, 'w')])
Example #6
0
    def test_parse_config_args_preferred(self):
        config = Config(["aws_okta_keyman.py"])
        config.appid = "mysupercoolapp/id"
        config.org = "foobar"
        config.username = "******"
        config.read_yaml = mock.MagicMock()
        config.read_yaml.return_value = {
            "username": "******",
            "org": "example",
            "appid": "app/id",
        }

        config.parse_config("./.config/aws_okta_keyman.yml")

        # Make sure we're getting the args not the config values
        self.assertEqual(config.appid, "mysupercoolapp/id")
        self.assertEqual(config.org, "foobar")
        self.assertEqual(config.username, "test")
Example #7
0
    def test_write_config_path_expansion(self):
        config = Config(["aws_okta_keyman.py"])
        config.clean_config_for_write = mock.MagicMock()
        config.clean_config_for_write.return_value = {}
        config.writepath = "~/.config/aws_okta_keyman.yml"
        config.username = "******"
        config.appid = "app/id"
        config.org = "example"
        config.read_yaml = mock.MagicMock()
        config.read_yaml.return_value = {}

        expected_path = os.path.expanduser(config.writepath)

        m = mock.mock_open()
        with mock.patch("aws_okta_keyman.config.open", m):
            config.write_config()

        m.assert_has_calls([mock.call(expected_path, "w")])
    def test_parse_config_args_preferred(self):
        config = Config(['aws_okta_keyman.py'])
        config.appid = 'mysupercoolapp/id'
        config.org = 'foobar'
        config.username = '******'
        config.read_yaml = mock.MagicMock()
        config.read_yaml.return_value = {
            'username': '******',
            'org': 'example',
            'appid': 'app/id',
        }

        config.parse_config('./.config/aws_okta_keyman.yml')

        # Make sure we're getting the args not the config values
        self.assertEqual(config.appid, 'mysupercoolapp/id')
        self.assertEqual(config.org, 'foobar')
        self.assertEqual(config.username, 'test')
    def test_write_config_path_expansion(self):
        config = Config(['aws_okta_keyman.py'])
        config.clean_config_for_write = mock.MagicMock()
        config.clean_config_for_write.return_value = {}
        config.writepath = '~/.config/aws_okta_keyman.yml'
        config.username = '******'
        config.appid = 'app/id'
        config.org = 'example'
        config.read_yaml = mock.MagicMock()
        config.read_yaml.return_value = {}

        expected_path = os.path.expanduser(config.writepath)

        m = mock.mock_open()
        with mock.patch('aws_okta_keyman.config.open', m):
            config.write_config()

        m.assert_has_calls([mock.call(expected_path, 'w')])
Example #10
0
    def test_parse_config_args_preferred(self, isfile_mock):
        isfile_mock.return_value = True

        config = Config(['aws_okta_keyman.py'])
        config.appid = 'mysupercoolapp/id'
        config.org = 'foobar'
        config.username = '******'
        yaml = ("username: [email protected]\n"
                "org: example\n"
                "appid: app/id\n")

        m = mock.mock_open(read_data=yaml)
        with mock.patch('aws_okta_keyman.config.open', m):
            config.parse_config('./.config/aws_okta_keyman.yml')

        # Make sure we're getting the args not the config values
        self.assertEquals(config.appid, 'mysupercoolapp/id')
        self.assertEquals(config.org, 'foobar')
        self.assertEquals(config.username, 'test')
Example #11
0
    def test_write_config_new_file(self):
        config = Config(["aws_okta_keyman.py"])
        config.clean_config_for_write = mock.MagicMock()
        config_clean = {
            "org": "example",
            "reup": None,
            "username": "******",
        }
        config.clean_config_for_write.return_value = config_clean
        config.writepath = "./.config/aws_okta_keyman.yml"
        config.username = "******"
        config.appid = "app/id"
        config.org = "example"
        config.read_yaml = mock.MagicMock()
        config.read_yaml.return_value = {}

        m = mock.mock_open()
        with mock.patch("aws_okta_keyman.config.open", m):
            config.write_config()

        m.assert_has_calls(
            [
                mock.call().write("org"),
                mock.call().write(":"),
                mock.call().write(" "),
                mock.call().write("example"),
                mock.call().write("\n"),
                mock.call().write("reup"),
                mock.call().write(":"),
                mock.call().write(" "),
                mock.call().write("null"),
                mock.call().write("\n"),
                mock.call().write("username"),
                mock.call().write(":"),
                mock.call().write(" "),
                mock.call().write("*****@*****.**"),
                mock.call().write("\n"),
                mock.call().flush(),
                mock.call().flush(),
                mock.call().__exit__(None, None, None),
            ],
        )
Example #12
0
    def test_write_config_new_file(self):
        config = Config(['aws_okta_keyman.py'])
        config.clean_config_for_write = mock.MagicMock()
        config_clean = {
            'org': 'example',
            'reup': None,
            'username': '******',
        }
        config.clean_config_for_write.return_value = config_clean
        config.writepath = './.config/aws_okta_keyman.yml'
        config.username = '******'
        config.appid = 'app/id'
        config.org = 'example'
        config.read_yaml = mock.MagicMock()
        config.read_yaml.return_value = {}

        m = mock.mock_open()
        with mock.patch('aws_okta_keyman.config.open', m):
            config.write_config()

        m.assert_has_calls([
            mock.call().write('org'),
            mock.call().write(':'),
            mock.call().write(' '),
            mock.call().write('example'),
            mock.call().write('\n'),
            mock.call().write('reup'),
            mock.call().write(':'),
            mock.call().write(' '),
            mock.call().write('null'),
            mock.call().write('\n'),
            mock.call().write('username'),
            mock.call().write(':'),
            mock.call().write(' '),
            mock.call().write('*****@*****.**'),
            mock.call().write('\n'),
            mock.call().flush(),
            mock.call().flush(),
            mock.call().__exit__(None, None, None)
        ])
Example #13
0
 def test_validate_missing_org(self):
     config = Config(['aws_okta_keyman.py'])
     config.accounts = [{'appid': 'A123'}]
     config.username = '******'
     with self.assertRaises(ValueError):
         config.validate()
Example #14
0
 def test_validate_good_with_appid(self):
     config = Config(['aws_okta_keyman.py'])
     config.appid = 'A123'
     config.org = 'example'
     config.username = '******'
     self.assertEqual(config.validate(), None)
Example #15
0
    def test_write_config(self):
        config = Config(['aws_okta_keyman.py'])
        config.clean_config_for_write = mock.MagicMock()
        config_clean = {
            'accounts': [{
                'name': 'Dev',
                'appid': 'A123/123'
            }],
            'org': 'example',
            'reup': None,
            'username': '******',
        }
        config.clean_config_for_write.return_value = config_clean
        config.writepath = './.config/aws_okta_keyman.yml'
        config.username = '******'
        config.read_yaml = mock.MagicMock()
        config.read_yaml.return_value = {
            'username': '******',
            'org': 'example',
            'appid': 'app/id',
        }

        m = mock.mock_open()
        with mock.patch('aws_okta_keyman.config.open', m):
            config.write_config()

        m.assert_has_calls([
            mock.call(u'./.config/aws_okta_keyman.yml', 'w'),
        ])
        m.assert_has_calls([
            mock.call().write('accounts'),
            mock.call().write(':'),
            mock.call().write('\n'),
            mock.call().write('-'),
            mock.call().write(' '),
            mock.call().write('appid'),
            mock.call().write(':'),
            mock.call().write(' '),
            mock.call().write('A123/123'),
            mock.call().write('\n'),
            mock.call().write('  '),
            mock.call().write('name'),
            mock.call().write(':'),
            mock.call().write(' '),
            mock.call().write('Dev'),
            mock.call().write('\n'),
            mock.call().write('org'),
            mock.call().write(':'),
            mock.call().write(' '),
            mock.call().write('example'),
            mock.call().write('\n'),
            mock.call().write('reup'),
            mock.call().write(':'),
            mock.call().write(' '),
            mock.call().write('null'),
            mock.call().write('\n'),
            mock.call().write('username'),
            mock.call().write(':'),
            mock.call().write(' '),
            mock.call().write('*****@*****.**'),
            mock.call().write('\n'),
            mock.call().flush(),
            mock.call().flush(),
            mock.call().__exit__(None, None, None)
        ])
Example #16
0
 def test_validate_good_with_accounts(self):
     config = Config(['aws_okta_keyman.py'])
     config.accounts = [{'appid': 'A123'}]
     config.org = 'example'
     config.username = '******'
     self.assertEquals(config.validate(), None)
Example #17
0
 def test_validate_missing_org(self):
     config = Config(["aws_okta_keyman.py"])
     config.username = "******"
     with self.assertRaises(ValueError):
         config.validate()
Example #18
0
 def test_validate_missing_appid_and_accounts(self):
     config = Config(['aws_okta_keyman.py'])
     config.username = '******'
     config.org = 'example'
     with self.assertRaises(ValueError):
         config.validate()
Example #19
0
 def test_validate_good_with_appid(self):
     config = Config(["aws_okta_keyman.py"])
     config.appid = "A123"
     config.org = "example"
     config.username = "******"
     self.assertEqual(config.validate(), None)
Example #20
0
    def test_write_config(self):
        config = Config(["aws_okta_keyman.py"])
        config.clean_config_for_write = mock.MagicMock()
        config_clean = {
            "accounts": [{"name": "Dev", "appid": "A123/123"}],
            "org": "example",
            "reup": None,
            "username": "******",
        }
        config.clean_config_for_write.return_value = config_clean
        config.writepath = "./.config/aws_okta_keyman.yml"
        config.username = "******"
        config.read_yaml = mock.MagicMock()
        config.read_yaml.return_value = {
            "username": "******",
            "org": "example",
            "appid": "app/id",
        }

        m = mock.mock_open()
        with mock.patch("aws_okta_keyman.config.open", m):
            config.write_config()

        m.assert_has_calls(
            [
                mock.call("./.config/aws_okta_keyman.yml", "w"),
            ],
        )
        m.assert_has_calls(
            [
                mock.call().write("accounts"),
                mock.call().write(":"),
                mock.call().write("\n"),
                mock.call().write("-"),
                mock.call().write(" "),
                mock.call().write("appid"),
                mock.call().write(":"),
                mock.call().write(" "),
                mock.call().write("A123/123"),
                mock.call().write("\n"),
                mock.call().write("  "),
                mock.call().write("name"),
                mock.call().write(":"),
                mock.call().write(" "),
                mock.call().write("Dev"),
                mock.call().write("\n"),
                mock.call().write("org"),
                mock.call().write(":"),
                mock.call().write(" "),
                mock.call().write("example"),
                mock.call().write("\n"),
                mock.call().write("reup"),
                mock.call().write(":"),
                mock.call().write(" "),
                mock.call().write("null"),
                mock.call().write("\n"),
                mock.call().write("username"),
                mock.call().write(":"),
                mock.call().write(" "),
                mock.call().write("*****@*****.**"),
                mock.call().write("\n"),
                mock.call().flush(),
                mock.call().flush(),
                mock.call().__exit__(None, None, None),
            ],
        )