/** * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.apache.camel.component.docker.headers; import java.util.Map; import com.github.dockerjava.api.command.CommitCmd; import com.github.dockerjava.api.model.ExposedPort; import com.github.dockerjava.api.model.ExposedPorts; import com.github.dockerjava.api.model.Volume; import com.github.dockerjava.api.model.Volumes; import org.apache.camel.component.docker.DockerConstants; import org.apache.camel.component.docker.DockerOperation; import org.junit.Test; import org.mockito.Matchers; import org.mockito.Mock; import org.mockito.Mockito; /** * Validates Commit Container Request headers are parsed properly */ public class CommitContainerCmdHeaderTest extends BaseDockerHeaderTest<CommitCmd> { @Mock private CommitCmd mockObject; @Test public void commitContainerHeaderTest() { String containerId = "9c09acd48a25"; String env = "FOO=bar"; boolean attachStdErr = true; boolean attachStdOut = true; boolean attachStdIn = false; boolean disableNetwork = false; boolean openStdIn = false; String portSpecs = "80"; boolean stdInOnce = false; String tag = "1.0"; String repository = "docker/empty"; String cmd = "whoami"; String author = "cameluser"; String message = "Camel Docker Container Commit"; boolean pause = false; ExposedPorts exposedPorts = new ExposedPorts(ExposedPort.tcp(22)); Integer memory = 2048; Integer swapMemory = 512; String workingDir = "/opt"; String user = "docker"; Volumes volumes = new Volumes(new Volume("/example")); boolean tty = true; String hostname = "dockerhostname"; Map<String, Object> headers = getDefaultParameters(); headers.put(DockerConstants.DOCKER_CONTAINER_ID, containerId); headers.put(DockerConstants.DOCKER_ENV, env); headers.put(DockerConstants.DOCKER_ATTACH_STD_IN, attachStdIn); headers.put(DockerConstants.DOCKER_ATTACH_STD_ERR, attachStdErr); headers.put(DockerConstants.DOCKER_ATTACH_STD_OUT, attachStdOut); headers.put(DockerConstants.DOCKER_DISABLE_NETWORK, disableNetwork); headers.put(DockerConstants.DOCKER_TAG, tag); headers.put(DockerConstants.DOCKER_REPOSITORY, repository); headers.put(DockerConstants.DOCKER_CMD, cmd); headers.put(DockerConstants.DOCKER_AUTHOR, author); headers.put(DockerConstants.DOCKER_MESSAGE, message); headers.put(DockerConstants.DOCKER_PAUSE, pause); headers.put(DockerConstants.DOCKER_EXPOSED_PORTS, exposedPorts); headers.put(DockerConstants.DOCKER_MEMORY, memory); headers.put(DockerConstants.DOCKER_MEMORY_SWAP, swapMemory); headers.put(DockerConstants.DOCKER_WORKING_DIR, workingDir); headers.put(DockerConstants.DOCKER_USER, user); headers.put(DockerConstants.DOCKER_VOLUMES, volumes); headers.put(DockerConstants.DOCKER_TTY, tty); headers.put(DockerConstants.DOCKER_HOSTNAME, hostname); headers.put(DockerConstants.DOCKER_OPEN_STD_IN, openStdIn); headers.put(DockerConstants.DOCKER_STD_IN_ONCE, stdInOnce); headers.put(DockerConstants.DOCKER_PORT_SPECS, portSpecs); template.sendBodyAndHeaders("direct:in", "", headers); Mockito.verify(dockerClient, Mockito.times(1)).commitCmd(containerId); Mockito.verify(mockObject, Mockito.times(1)).withEnv(env); Mockito.verify(mockObject, Mockito.times(1)).withAttachStderr(attachStdErr); Mockito.verify(mockObject, Mockito.times(1)).withAttachStdin(attachStdIn); Mockito.verify(mockObject, Mockito.times(1)).withAttachStdout(attachStdOut); Mockito.verify(mockObject, Mockito.times(1)).withDisableNetwork(disableNetwork); Mockito.verify(mockObject, Mockito.times(1)).withTag(tag); Mockito.verify(mockObject, Mockito.times(1)).withRepository(repository); Mockito.verify(mockObject, Mockito.times(1)).withCmd(cmd); Mockito.verify(mockObject, Mockito.times(1)).withAuthor(author); Mockito.verify(mockObject, Mockito.times(1)).withMessage(message); Mockito.verify(mockObject, Mockito.times(1)).withPause(pause); Mockito.verify(mockObject, Mockito.times(1)).withExposedPorts(exposedPorts); Mockito.verify(mockObject, Mockito.times(1)).withMemory(memory); Mockito.verify(mockObject, Mockito.times(1)).withMemorySwap(swapMemory); Mockito.verify(mockObject, Mockito.times(1)).withWorkingDir(workingDir); Mockito.verify(mockObject, Mockito.times(1)).withUser(user); Mockito.verify(mockObject, Mockito.times(1)).withVolumes(volumes); Mockito.verify(mockObject, Mockito.times(1)).withTty(tty); Mockito.verify(mockObject, Mockito.times(1)).withHostname(hostname); Mockito.verify(mockObject, Mockito.times(1)).withOpenStdin(openStdIn); Mockito.verify(mockObject, Mockito.times(1)).withStdinOnce(stdInOnce); Mockito.verify(mockObject, Mockito.times(1)).withPortSpecs(portSpecs); } @Override protected void setupMocks() { Mockito.when(dockerClient.commitCmd(Matchers.anyString())).thenReturn(mockObject); } @Override protected DockerOperation getOperation() { return DockerOperation.COMMIT_CONTAINER; } }