Esempio n. 1
0
 def test_generate_credentials_vpc_reads_region_from_url(self, stdout_mock):
     self.globals.region = None
     self.session.get_config_variable.return_value = None
     self.get_command = CodeCommitGetCommand(self.session)
     self.get_command._run_main(self.args, self.globals)
     output = stdout_mock.getvalue().strip()
     self.assertRegex(output, 'username={0}\npassword=.+'.format('access'))
 def test_generate_session_credentials(self, stdout_mock):
     self.credentials = Credentials('access', 'secret', 'token')
     self.session.get_credentials.return_value = self.credentials
     self.get_command = CodeCommitGetCommand(self.session)
     self.get_command._run_main(self.args, self.globals)
     output = stdout_mock.getvalue().strip()
     self.assertRegexpMatches(
         output, 'username={0}%{1}\npassword=.+'.format('access', 'token'))
 def test_generate_credentials_creates_a_valid_request(
         self, signature, string_to_sign):
     self.credentials = Credentials('access', 'secret')
     self.session.get_credentials.return_value = self.credentials
     self.get_command = CodeCommitGetCommand(self.session)
     self.get_command._run_main(self.args, self.globals)
     aws_request = signature.call_args[0][1]
     self.assertEquals('GIT', aws_request.method)
     self.assertEquals(
         'https://git-codecommit.us-east-1.amazonaws.com//v1/repos/myrepo',
         aws_request.url)
     self.assertEquals(('GIT\n//v1/repos/myrepo\n\n'
                        'host:git-codecommit.us-east-1.amazonaws.com\n\n'
                        'host\n'), string_to_sign.call_args[0][1])
Esempio n. 4
0
 def test_generate_credentials_vpc_reads_region_from_url(self, stdout_mock):
     self.globals.region = None
     self.session.get_config_variable.return_value = None
     self.get_command = CodeCommitGetCommand(self.session)
     self.get_command._run_main(self.args, self.globals)
     output = stdout_mock.getvalue().strip()
     self.assertRegexpMatches(
         output, 'username={0}\npassword=.+'.format('access'))
Esempio n. 5
0
 def test_generate_session_credentials(self, stdout_mock):
     self.credentials = Credentials('access', 'secret', 'token')
     self.session.get_credentials.return_value = self.credentials
     self.get_command = CodeCommitGetCommand(self.session)
     self.get_command._run_main(self.args, self.globals)
     output = stdout_mock.getvalue().strip()
     self.assertRegexpMatches(
         output,
         'username={0}%{1}\npassword=.+'.format('access', 'token'))
Esempio n. 6
0
 def test_generate_credentials_creates_a_valid_request(self, signature,
                                                       string_to_sign):
     self.credentials = Credentials('access', 'secret')
     self.session.get_credentials.return_value = self.credentials
     self.get_command = CodeCommitGetCommand(self.session)
     self.get_command._run_main(self.args, self.globals)
     aws_request = signature.call_args[0][1]
     self.assertEquals('GIT', aws_request.method)
     self.assertEquals(
         'https://git-codecommit.us-east-1.amazonaws.com//v1/repos/myrepo',
         aws_request.url)
     self.assertEquals(
         ('GIT\n//v1/repos/myrepo\n\n'
          'host:git-codecommit.us-east-1.amazonaws.com\n\n'
          'host\n'),
         string_to_sign.call_args[0][1])
 def test_generate_credentials(self, stdout_mock):
     self.get_command = CodeCommitGetCommand(self.session)
     self.get_command._run_main(self.args, self.globals)
     output = stdout_mock.getvalue().strip()
     self.assertRegexpMatches(output,
                              'username={0}\npassword=.+'.format('access'))
class TestCodeCommitCredentialHelper(unittest.TestCase):

    PROTOCOL_HOST_PATH = ('protocol=https\n'
                          'host=git-codecommit.us-east-1.amazonaws.com\n'
                          'path=/v1/repos/myrepo')

    PROTOCOL_HOST_PATH_TRAILING_NEWLINE = (
        'protocol=https\n'
        'host=git-codecommit.us-east-1.amazonaws.com\n'
        'path=/v1/repos/myrepo\n')

    PROTOCOL_HOST_PATH_BLANK_LINE = (
        'protocol=https\n'
        'host=git-codecommit.us-east-1.amazonaws.com\n'
        'path=/v1/repos/myrepo\n\n')

    FIPS_PROTOCOL_HOST_PATH = (
        'protocol=https\n'
        'host=git-codecommit-fips.us-east-1.amazonaws.com\n'
        'path=/v1/repos/myrepo')

    VPC_1_PROTOCOL_HOST_PATH = (
        'protocol=https\n'
        'host=vpce-0b47ea360adebf88a-jkl88hez.git-codecommit.us-east-1.vpce.amazonaws.com\n'
        'path=/v1/repos/myrepo')

    VPC_2_PROTOCOL_HOST_PATH = (
        'protocol=https\n'
        'host=vpce-0b47ea360adebf88a-jkl88hez-us-east-1a.git-codecommit.us-east-1.vpce.amazonaws.com\n'
        'path=/v1/repos/myrepo')

    FIPS_VPC_1_PROTOCOL_HOST_PATH = (
        'protocol=https\n'
        'host=vpce-0b47ea360adebf88a-jkl88hez.git-codecommit-fips.us-east-1.vpce.amazonaws.com\n'
        'path=/v1/repos/myrepo')

    FIPS_VPC_2_PROTOCOL_HOST_PATH = (
        'protocol=https\n'
        'host=vpce-0b47ea360adebf88a-jkl88hez-us-west-2b.git-codecommit-fips.us-east-1.vpce.amazonaws.com\n'
        'path=/v1/repos/myrepo')

    NO_REGION_PROTOCOL_HOST_PATH = ('protocol=https\n'
                                    'host=git-codecommit.amazonaws.com\n'
                                    'path=/v1/repos/myrepo')

    NON_AWS_PROTOCOL_HOST_PATH = ('protocol=https\n'
                                  'host=mydomain.com\n'
                                  'path=/v1/repos/myrepo')

    MOCK_STDOUT_CLASS = StringIOWithFileNo

    def setUp(self):
        self.credentials = Credentials('access', 'secret')
        self.args = Namespace()
        self.args.ignore_host_check = False
        self.globals = Namespace()
        self.globals.region = 'us-east-1'
        self.globals.verify_ssl = False
        self.session = MagicMock()
        self.session.get_config_variable.return_value = 'us-east-1'
        self.session.get_credentials.return_value = self.credentials

    @patch('sys.stdout', new_callable=MOCK_STDOUT_CLASS)
    @patch('sys.stdin', StringIO(PROTOCOL_HOST_PATH))
    def test_generate_credentials(self, stdout_mock):
        self.get_command = CodeCommitGetCommand(self.session)
        self.get_command._run_main(self.args, self.globals)
        output = stdout_mock.getvalue().strip()
        self.assertRegexpMatches(output,
                                 'username={0}\npassword=.+'.format('access'))

    @patch('sys.stdout', new_callable=MOCK_STDOUT_CLASS)
    @patch('sys.stdin', StringIO(PROTOCOL_HOST_PATH_TRAILING_NEWLINE))
    def test_generate_credentials_trailing_newline(self, stdout_mock):
        self.get_command = CodeCommitGetCommand(self.session)
        self.get_command._run_main(self.args, self.globals)
        output = stdout_mock.getvalue().strip()
        self.assertRegexpMatches(output,
                                 'username={0}\npassword=.+'.format('access'))

    @patch('sys.stdout', new_callable=MOCK_STDOUT_CLASS)
    @patch('sys.stdin', StringIO(PROTOCOL_HOST_PATH_BLANK_LINE))
    def test_generate_credentials_blank_line(self, stdout_mock):
        self.get_command = CodeCommitGetCommand(self.session)
        self.get_command._run_main(self.args, self.globals)
        output = stdout_mock.getvalue().strip()
        self.assertRegexpMatches(output,
                                 'username={0}\npassword=.+'.format('access'))

    @patch('sys.stdout', new_callable=MOCK_STDOUT_CLASS)
    @patch('sys.stdin', StringIO(FIPS_PROTOCOL_HOST_PATH))
    def test_generate_credentials_fips_reads_region_from_url(
            self, stdout_mock):
        self.globals.region = None
        self.session.get_config_variable.return_value = None
        self.get_command = CodeCommitGetCommand(self.session)
        self.get_command._run_main(self.args, self.globals)
        output = stdout_mock.getvalue().strip()
        self.assertRegexpMatches(output,
                                 'username={0}\npassword=.+'.format('access'))

    @patch('sys.stdout', new_callable=MOCK_STDOUT_CLASS)
    @patch('sys.stdin', StringIO(VPC_1_PROTOCOL_HOST_PATH))
    def test_generate_credentials_vpc_reads_region_from_url(self, stdout_mock):
        self.globals.region = None
        self.session.get_config_variable.return_value = None
        self.get_command = CodeCommitGetCommand(self.session)
        self.get_command._run_main(self.args, self.globals)
        output = stdout_mock.getvalue().strip()
        self.assertRegexpMatches(output,
                                 'username={0}\npassword=.+'.format('access'))

    @patch('sys.stdout', new_callable=MOCK_STDOUT_CLASS)
    @patch('sys.stdin', StringIO(VPC_2_PROTOCOL_HOST_PATH))
    def test_generate_credentials_vpc_2_reads_region_from_url(
            self, stdout_mock):
        self.globals.region = None
        self.session.get_config_variable.return_value = None
        self.get_command = CodeCommitGetCommand(self.session)
        self.get_command._run_main(self.args, self.globals)
        output = stdout_mock.getvalue().strip()
        self.assertRegexpMatches(output,
                                 'username={0}\npassword=.+'.format('access'))

    @patch('sys.stdout', new_callable=MOCK_STDOUT_CLASS)
    @patch('sys.stdin', StringIO(FIPS_VPC_1_PROTOCOL_HOST_PATH))
    def test_generate_credentials_fips_vpc_1_reads_region_from_url(
            self, stdout_mock):
        self.globals.region = None
        self.session.get_config_variable.return_value = None
        self.get_command = CodeCommitGetCommand(self.session)
        self.get_command._run_main(self.args, self.globals)
        output = stdout_mock.getvalue().strip()
        self.assertRegexpMatches(output,
                                 'username={0}\npassword=.+'.format('access'))

    @patch('sys.stdout', new_callable=MOCK_STDOUT_CLASS)
    @patch('sys.stdin', StringIO(FIPS_VPC_2_PROTOCOL_HOST_PATH))
    def test_generate_credentials_fips_vpc_2_reads_region_from_url(
            self, stdout_mock):
        self.globals.region = None
        self.session.get_config_variable.return_value = None
        self.get_command = CodeCommitGetCommand(self.session)
        self.get_command._run_main(self.args, self.globals)
        output = stdout_mock.getvalue().strip()
        self.assertRegexpMatches(output,
                                 'username={0}\npassword=.+'.format('access'))

    @patch('sys.stdout', new_callable=MOCK_STDOUT_CLASS)
    @patch('sys.stdin', StringIO(NO_REGION_PROTOCOL_HOST_PATH))
    def test_generate_credentials_reads_region_from_session(self, stdout_mock):
        self.get_command = CodeCommitGetCommand(self.session)
        self.get_command._run_main(self.args, self.globals)
        output = stdout_mock.getvalue().strip()
        self.assertRegexpMatches(output,
                                 'username={0}\npassword=.+'.format('access'))

    @patch('sys.stdout', new_callable=MOCK_STDOUT_CLASS)
    @patch('sys.stdin', StringIO(NON_AWS_PROTOCOL_HOST_PATH))
    def test_does_nothing_for_non_amazon_domain(self, stdout_mock):
        self.get_command = CodeCommitGetCommand(self.session)
        self.get_command._run_main(self.args, self.globals)
        output = stdout_mock.getvalue().strip()
        self.assertEquals('', output)

    def test_raises_value_error_when_not_provided_any_subcommands(self):
        self.get_command = CodeCommitCommand(self.session)
        with self.assertRaises(ValueError):
            self.get_command._run_main(self.args, self.globals)

    @patch('sys.stdout', new_callable=MOCK_STDOUT_CLASS)
    @patch('sys.stdin', StringIO(PROTOCOL_HOST_PATH))
    def test_generate_session_credentials(self, stdout_mock):
        self.credentials = Credentials('access', 'secret', 'token')
        self.session.get_credentials.return_value = self.credentials
        self.get_command = CodeCommitGetCommand(self.session)
        self.get_command._run_main(self.args, self.globals)
        output = stdout_mock.getvalue().strip()
        self.assertRegexpMatches(
            output, 'username={0}%{1}\npassword=.+'.format('access', 'token'))

    @patch('sys.stdout', MOCK_STDOUT_CLASS())
    @patch('sys.stdin', StringIO(PROTOCOL_HOST_PATH))
    @patch('botocore.auth.SigV4Auth.string_to_sign')
    @patch('botocore.auth.SigV4Auth.signature')
    def test_generate_credentials_creates_a_valid_request(
            self, signature, string_to_sign):
        self.credentials = Credentials('access', 'secret')
        self.session.get_credentials.return_value = self.credentials
        self.get_command = CodeCommitGetCommand(self.session)
        self.get_command._run_main(self.args, self.globals)
        aws_request = signature.call_args[0][1]
        self.assertEquals('GIT', aws_request.method)
        self.assertEquals(
            'https://git-codecommit.us-east-1.amazonaws.com//v1/repos/myrepo',
            aws_request.url)
        self.assertEquals(('GIT\n//v1/repos/myrepo\n\n'
                           'host:git-codecommit.us-east-1.amazonaws.com\n\n'
                           'host\n'), string_to_sign.call_args[0][1])
 def test_raises_value_error_when_not_provided_any_subcommands(self):
     self.get_command = CodeCommitCommand(self.session)
     with self.assertRaises(ValueError):
         self.get_command._run_main(self.args, self.globals)
 def test_does_nothing_for_non_amazon_domain(self, stdout_mock):
     self.get_command = CodeCommitGetCommand(self.session)
     self.get_command._run_main(self.args, self.globals)
     output = stdout_mock.getvalue().strip()
     self.assertEquals('', output)
Esempio n. 11
0
 def test_generate_credentials(self, stdout_mock):
     self.get_command = CodeCommitGetCommand(self.session)
     self.get_command._run_main(self.args, self.globals)
     output = stdout_mock.getvalue().strip()
     self.assertRegexpMatches(
         output, 'username={0}\npassword=.+'.format('access'))
Esempio n. 12
0
class TestCodeCommitCredentialHelper(unittest.TestCase):

    PROTOCOL_HOST_PATH = ('protocol=https\n'
                          'host=git-codecommit.us-east-1.amazonaws.com\n'
                          'path=/v1/repos/myrepo')

    FIPS_PROTOCOL_HOST_PATH = ('protocol=https\n'
                               'host=git-codecommit-fips.us-east-1.amazonaws.com\n'
                               'path=/v1/repos/myrepo')

    VPC_1_PROTOCOL_HOST_PATH = ('protocol=https\n'
                                'host=vpce-0b47ea360adebf88a-jkl88hez.git-codecommit.us-east-1.vpce.amazonaws.com\n'
                                'path=/v1/repos/myrepo')

    VPC_2_PROTOCOL_HOST_PATH = ('protocol=https\n'
                                'host=vpce-0b47ea360adebf88a-jkl88hez-us-east-1a.git-codecommit.us-east-1.vpce.amazonaws.com\n'
                                'path=/v1/repos/myrepo')

    FIPS_VPC_1_PROTOCOL_HOST_PATH = ('protocol=https\n'
                                     'host=vpce-0b47ea360adebf88a-jkl88hez.git-codecommit-fips.us-east-1.vpce.amazonaws.com\n'
                                     'path=/v1/repos/myrepo')

    FIPS_VPC_2_PROTOCOL_HOST_PATH = ('protocol=https\n'
                                     'host=vpce-0b47ea360adebf88a-jkl88hez-us-west-2b.git-codecommit-fips.us-east-1.vpce.amazonaws.com\n'
                                     'path=/v1/repos/myrepo')

    NO_REGION_PROTOCOL_HOST_PATH = ('protocol=https\n'
                                    'host=git-codecommit.amazonaws.com\n'
                                    'path=/v1/repos/myrepo')

    NON_AWS_PROTOCOL_HOST_PATH = ('protocol=https\n'
                                  'host=mydomain.com\n'
                                  'path=/v1/repos/myrepo')

    MOCK_STDOUT_CLASS = StringIOWithFileNo

    def setUp(self):
        self.credentials = Credentials('access', 'secret')
        self.args = Namespace()
        self.args.ignore_host_check = False
        self.globals = Namespace()
        self.globals.region = 'us-east-1'
        self.globals.verify_ssl = False
        self.session = MagicMock()
        self.session.get_config_variable.return_value = 'us-east-1'
        self.session.get_credentials.return_value = self.credentials

    @patch('sys.stdout', new_callable=MOCK_STDOUT_CLASS)
    @patch('sys.stdin', StringIO(PROTOCOL_HOST_PATH))
    def test_generate_credentials(self, stdout_mock):
        self.get_command = CodeCommitGetCommand(self.session)
        self.get_command._run_main(self.args, self.globals)
        output = stdout_mock.getvalue().strip()
        self.assertRegexpMatches(
            output, 'username={0}\npassword=.+'.format('access'))

    @patch('sys.stdout', new_callable=MOCK_STDOUT_CLASS)
    @patch('sys.stdin', StringIO(FIPS_PROTOCOL_HOST_PATH))
    def test_generate_credentials_fips_reads_region_from_url(self, stdout_mock):
        self.globals.region = None
        self.session.get_config_variable.return_value = None
        self.get_command = CodeCommitGetCommand(self.session)
        self.get_command._run_main(self.args, self.globals)
        output = stdout_mock.getvalue().strip()
        self.assertRegexpMatches(
            output, 'username={0}\npassword=.+'.format('access'))

    @patch('sys.stdout', new_callable=MOCK_STDOUT_CLASS)
    @patch('sys.stdin', StringIO(VPC_1_PROTOCOL_HOST_PATH))
    def test_generate_credentials_vpc_reads_region_from_url(self, stdout_mock):
        self.globals.region = None
        self.session.get_config_variable.return_value = None
        self.get_command = CodeCommitGetCommand(self.session)
        self.get_command._run_main(self.args, self.globals)
        output = stdout_mock.getvalue().strip()
        self.assertRegexpMatches(
            output, 'username={0}\npassword=.+'.format('access'))

    @patch('sys.stdout', new_callable=MOCK_STDOUT_CLASS)
    @patch('sys.stdin', StringIO(VPC_2_PROTOCOL_HOST_PATH))
    def test_generate_credentials_vpc_2_reads_region_from_url(self, stdout_mock):
        self.globals.region = None
        self.session.get_config_variable.return_value = None
        self.get_command = CodeCommitGetCommand(self.session)
        self.get_command._run_main(self.args, self.globals)
        output = stdout_mock.getvalue().strip()
        self.assertRegexpMatches(
            output, 'username={0}\npassword=.+'.format('access'))

    @patch('sys.stdout', new_callable=MOCK_STDOUT_CLASS)
    @patch('sys.stdin', StringIO(FIPS_VPC_1_PROTOCOL_HOST_PATH))
    def test_generate_credentials_fips_vpc_1_reads_region_from_url(self, stdout_mock):
        self.globals.region = None
        self.session.get_config_variable.return_value = None
        self.get_command = CodeCommitGetCommand(self.session)
        self.get_command._run_main(self.args, self.globals)
        output = stdout_mock.getvalue().strip()
        self.assertRegexpMatches(
            output, 'username={0}\npassword=.+'.format('access'))

    @patch('sys.stdout', new_callable=MOCK_STDOUT_CLASS)
    @patch('sys.stdin', StringIO(FIPS_VPC_2_PROTOCOL_HOST_PATH))
    def test_generate_credentials_fips_vpc_2_reads_region_from_url(self, stdout_mock):
        self.globals.region = None
        self.session.get_config_variable.return_value = None
        self.get_command = CodeCommitGetCommand(self.session)
        self.get_command._run_main(self.args, self.globals)
        output = stdout_mock.getvalue().strip()
        self.assertRegexpMatches(
            output, 'username={0}\npassword=.+'.format('access'))

    @patch('sys.stdout', new_callable=MOCK_STDOUT_CLASS)
    @patch('sys.stdin', StringIO(NO_REGION_PROTOCOL_HOST_PATH))
    def test_generate_credentials_reads_region_from_session(self, stdout_mock):
        self.get_command = CodeCommitGetCommand(self.session)
        self.get_command._run_main(self.args, self.globals)
        output = stdout_mock.getvalue().strip()
        self.assertRegexpMatches(
            output, 'username={0}\npassword=.+'.format('access'))

    @patch('sys.stdout', new_callable=MOCK_STDOUT_CLASS)
    @patch('sys.stdin', StringIO(NON_AWS_PROTOCOL_HOST_PATH))
    def test_does_nothing_for_non_amazon_domain(self, stdout_mock):
        self.get_command = CodeCommitGetCommand(self.session)
        self.get_command._run_main(self.args, self.globals)
        output = stdout_mock.getvalue().strip()
        self.assertEquals('', output)

    def test_raises_value_error_when_not_provided_any_subcommands(self):
        self.get_command = CodeCommitCommand(self.session)
        with self.assertRaises(ValueError):
            self.get_command._run_main(self.args, self.globals)

    @patch('sys.stdout', new_callable=MOCK_STDOUT_CLASS)
    @patch('sys.stdin', StringIO(PROTOCOL_HOST_PATH))
    def test_generate_session_credentials(self, stdout_mock):
        self.credentials = Credentials('access', 'secret', 'token')
        self.session.get_credentials.return_value = self.credentials
        self.get_command = CodeCommitGetCommand(self.session)
        self.get_command._run_main(self.args, self.globals)
        output = stdout_mock.getvalue().strip()
        self.assertRegexpMatches(
            output,
            'username={0}%{1}\npassword=.+'.format('access', 'token'))

    @patch('sys.stdout', MOCK_STDOUT_CLASS())
    @patch('sys.stdin', StringIO(PROTOCOL_HOST_PATH))
    @patch('botocore.auth.SigV4Auth.string_to_sign')
    @patch('botocore.auth.SigV4Auth.signature')
    def test_generate_credentials_creates_a_valid_request(self, signature,
                                                          string_to_sign):
        self.credentials = Credentials('access', 'secret')
        self.session.get_credentials.return_value = self.credentials
        self.get_command = CodeCommitGetCommand(self.session)
        self.get_command._run_main(self.args, self.globals)
        aws_request = signature.call_args[0][1]
        self.assertEquals('GIT', aws_request.method)
        self.assertEquals(
            'https://git-codecommit.us-east-1.amazonaws.com//v1/repos/myrepo',
            aws_request.url)
        self.assertEquals(
            ('GIT\n//v1/repos/myrepo\n\n'
             'host:git-codecommit.us-east-1.amazonaws.com\n\n'
             'host\n'),
            string_to_sign.call_args[0][1])
Esempio n. 13
0
 def test_raises_value_error_when_not_provided_any_subcommands(self):
     self.get_command = CodeCommitCommand(self.session)
     with self.assertRaises(ValueError):
         self.get_command._run_main(self.args, self.globals)
Esempio n. 14
0
 def test_does_nothing_for_non_amazon_domain(self, stdout_mock):
     self.get_command = CodeCommitGetCommand(self.session)
     self.get_command._run_main(self.args, self.globals)
     output = stdout_mock.getvalue().strip()
     self.assertEquals('', output)