|
6 | 6 |
|
7 | 7 | use PHPUnit\Framework\Attributes\CoversClass; |
8 | 8 | use WebProject\DockerApi\Library\Generated\Model\EndpointSettings; |
| 9 | +use WebProject\DockerApi\Library\Generated\Model\PortBinding; |
9 | 10 | use WebProject\DockerApiClient\Util\ContainerResponseToContainerDtoUtil; |
10 | 11 |
|
11 | 12 | #[CoversClass(ContainerResponseToContainerDtoUtil::class)] |
@@ -59,9 +60,10 @@ public function testInvokeMaxValues(): void |
59 | 60 |
|
60 | 61 | $networkSettings = new \WebProject\DockerApi\Library\Generated\Model\NetworkSettings(); |
61 | 62 | $networkSettings->setNetworks(networks: ['ca7d9ec2cf61951cf24ed7c91006927fa1259aabaf07e334f5e0b0fe36ce5794' => $endpoint, '4a7d9ec2cf61951cf24ed7c91006927fa1259aabaf07e334f5e0b0fe36ce5794' => $endpoint2]); |
62 | | - $networkSettings->setPorts([]); |
| 63 | + $networkSettings->setPorts(['5006/tcp' => []]); |
63 | 64 |
|
64 | 65 | $containerInspectResponse->setNetworkSettings(networkSettings: $networkSettings); |
| 66 | + $containerInspectResponse->setState(state: (new \WebProject\DockerApi\Library\Generated\Model\ContainerState())->setRunning(running: true)); |
65 | 67 |
|
66 | 68 | $containerConfig = new \WebProject\DockerApi\Library\Generated\Model\ContainerConfig(); |
67 | 69 | $containerConfig->setEnv( |
@@ -104,12 +106,45 @@ public function testInvokeMaxValues(): void |
104 | 106 | ], |
105 | 107 | ]; |
106 | 108 | $this->assertSame($expectedNetworks, $containerDto->networks); |
107 | | - $this->assertFalse($containerDto->running); |
| 109 | + $this->assertTrue($containerDto->running); |
108 | 110 | $this->assertSame('container-name', $containerDto->getName()); |
109 | 111 | $this->assertSame(['container-name'], $containerDto->getHostnames(tld: '')); |
110 | 112 | $this->assertSame( |
111 | 113 | ['actual.reverse-proxy-subdomain.xyz', 'domain-name.reverse-proxy-subdomain.xyz'], |
112 | 114 | $containerDto->extractUrlsFromEnvVars(extractFromEnvVars: ['DOMAIN_NAME', 'VIRTUAL_HOST']) |
113 | 115 | ); |
| 116 | + $this->assertTrue($containerDto->isExposed()); |
| 117 | + } |
| 118 | + |
| 119 | + public function testExposedPortsWithoutHostBindingAreValid(): void |
| 120 | + { |
| 121 | + // Arrange |
| 122 | + $containerInspectResponse = new \WebProject\DockerApi\Library\Generated\Model\ContainerInspectResponse(); |
| 123 | + $containerInspectResponse->setId(id: 'container-idValue'); |
| 124 | + $containerInspectResponse->setImage(image: 'container-imageValue'); |
| 125 | + $containerInspectResponse->setName(name: '/container-name'); |
| 126 | + |
| 127 | + $networkSettings = new \WebProject\DockerApi\Library\Generated\Model\NetworkSettings(); |
| 128 | + $networkSettings->setNetworks(networks: []); |
| 129 | + $networkSettings->setPorts(ports: ['80/tcp' => [], '8080/tcp' => [new PortBinding()]]); |
| 130 | + $containerInspectResponse->setNetworkSettings(networkSettings: $networkSettings); |
| 131 | + |
| 132 | + $containerConfig = new \WebProject\DockerApi\Library\Generated\Model\ContainerConfig(); |
| 133 | + $containerConfig->setEnv(env: []); |
| 134 | + $containerInspectResponse->setConfig(config: $containerConfig); |
| 135 | + $containerInspectResponse->setState(state: (new \WebProject\DockerApi\Library\Generated\Model\ContainerState())->setRunning(running: true)); |
| 136 | + |
| 137 | + // Act |
| 138 | + $containerDto = (new ContainerResponseToContainerDtoUtil())(containerInspect: $containerInspectResponse); |
| 139 | + |
| 140 | + // Assert |
| 141 | + $this->assertSame('container-idValue', $containerDto->id); |
| 142 | + $this->assertSame('container-imageValue', $containerDto->image); |
| 143 | + $this->assertSame([], $containerDto->ipAddresses); |
| 144 | + $this->assertSame([], $containerDto->networks); |
| 145 | + $this->assertTrue($containerDto->running); |
| 146 | + $this->assertSame('container-name', $containerDto->getName()); |
| 147 | + $this->assertSame(['container-name'], $containerDto->getHostnames(tld: '')); |
| 148 | + $this->assertTrue($containerDto->isExposed()); |
114 | 149 | } |
115 | 150 | } |
0 commit comments