import requests_mock import unittest from unittest.mock import patch from fargate_tools.cli.docker_image_info import DockerImageInfo class TestDockerImageInfo(unittest.TestCase): @patch('boto3.client') def test_get_entrypoint_and_cmd(self, mock_boto_client): """Test CMD and Entrypoint retrival""" # Mock the ECR client response mock_boto_client.return_value.get_authorization_token.return_value = { 'authorizationData': [{ 'authorizationToken': 'dGVzdHVzZXI6dGVzdHBhc3N3b3Jk', # base64 for 'testuser:testpassword' 'proxyEndpoint': 'https://123456789012.dkr.ecr.region.amazonaws.com' }] } # Mock the Docker Registry API responses with requests_mock.Mocker() as m: m.get('https://123456789012.dkr.ecr.region.amazonaws.com/v2/repository/manifests/tag', json={'config': {'digest': 'config-digest'}}) m.get('https://123456789012.dkr.ecr.region.amazonaws.com/v2/repository/blobs/config-digest', json={'config': {'Entrypoint': ['/bin/sh'], 'Cmd': ['echo', 'Hello World']}}) # Test the public interface docker_info = DockerImageInfo('repository', 'tag', '123456789012') entrypoint, cmd = docker_info.get_entrypoint_and_cmd() self.assertEqual(entrypoint, ['/bin/sh']) self.assertEqual(cmd, ['echo', 'Hello World'])