def test___sign_image_podman_image_sign_fail(self, podman_mock): with TempDirectory() as temp_dir: pgp_private_key_fingerprint = 'abc123' image_signatures_directory = os.path.join(temp_dir.path, 'signatures') container_image_tag = 'does/not/matter:v0.42.0' podman_mock.image.side_effect = sh.ErrorReturnCode('podman', b'mock stdout', b'mock error signing image') with self.assertRaisesRegex( StepRunnerException, re.compile( rf"Error signing image \({container_image_tag}\):" r".*RAN: podman" r".*STDOUT:" r".*mock stdout" r".*STDERR:" r".*mock error signing image", re.DOTALL ) ): PodmanSign._PodmanSign__sign_image( pgp_private_key_fingerprint=pgp_private_key_fingerprint, image_signatures_directory=image_signatures_directory, container_image_tag=container_image_tag ) podman_mock.image.assert_called_once_with( 'sign', f'--sign-by={pgp_private_key_fingerprint}', f'--directory={image_signatures_directory}', f'docker://{container_image_tag}', _out=Any(IOBase), _err_to_out=True, _tee='out' )
def test___sign_image_podman_image_sign_to_many_sigs(self, podman_mock): with TempDirectory() as temp_dir: pgp_private_key_fingerprint = 'abc123' image_signatures_directory = os.path.join(temp_dir.path, 'signatures') container_image_tag = 'does/not/matter:v0.42.0' podman_mock.image.side_effect = TestStepImplementerSignContainerImagePodman.\ create_podman_image_sign_side_effect(num_signatures=2) with self.assertRaisesRegex( StepRunnerException, re.compile( r"Unexpected number of signature files, expected 1: \['.*', '.*'\]", re.DOTALL ) ): PodmanSign._PodmanSign__sign_image( pgp_private_key_fingerprint=pgp_private_key_fingerprint, image_signatures_directory=image_signatures_directory, container_image_tag=container_image_tag ) podman_mock.image.assert_called_once_with( 'sign', f'--sign-by={pgp_private_key_fingerprint}', f'--directory={image_signatures_directory}', f'docker://{container_image_tag}', _out=Any(IOBase), _err_to_out=True, _tee='out' )
def test___sign_image_success(self, podman_mock): with TempDirectory() as temp_dir: pgp_private_key_fingerprint = 'abc123' image_signatures_directory = os.path.join(temp_dir.path, 'signatures') container_image_tag = 'does/not/matter:v0.42.0' podman_mock.image.side_effect = TestStepImplementerSignContainerImagePodman.\ create_podman_image_sign_side_effect() PodmanSign._PodmanSign__sign_image( pgp_private_key_fingerprint=pgp_private_key_fingerprint, image_signatures_directory=image_signatures_directory, container_image_tag=container_image_tag) podman_mock.image.assert_called_once_with( 'sign', f'--sign-by={pgp_private_key_fingerprint}', f'--directory={image_signatures_directory}', f'docker://{container_image_tag}', _out=Any(IOBase), _err_to_out=True, _tee='out')