diff options
Diffstat (limited to 'node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/task/AddYumRepoTaskTest.java')
-rw-r--r-- | node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/task/AddYumRepoTaskTest.java | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/task/AddYumRepoTaskTest.java b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/task/AddYumRepoTaskTest.java new file mode 100644 index 00000000000..3e444f08508 --- /dev/null +++ b/node-admin/src/test/java/com/yahoo/vespa/hosted/node/admin/task/AddYumRepoTaskTest.java @@ -0,0 +1,70 @@ +// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. +package com.yahoo.vespa.hosted.node.admin.task; + +import org.junit.Test; +import org.mockito.ArgumentCaptor; + +import java.nio.file.Path; +import java.nio.file.Paths; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; +import static org.mockito.Matchers.any; +import static org.mockito.Mockito.times; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; + +public class AddYumRepoTaskTest extends TaskTestBase { + private Path expectedPath; + private String expectedContent; + private AddYumRepoTask task; + + public void setUp() { + String repository = "repo-id"; + String name = "name"; + String baseUrl = "base-url"; + boolean enabled = true; + expectedContent = "# This file was generated by node admin\n" + + "# Do NOT modify this file by hand\n" + + "\n" + + "[repo-id]\n" + + "name=name\n" + + "baseurl=base-url\n" + + "enabled=1\n" + + "gpgcheck=0\n"; + + task = new AddYumRepoTask(repository, name, baseUrl, enabled); + expectedPath = Paths.get("/etc/yum.repos.d/" + repository + ".repo"); + } + + @Test + public void alreadyExistsIsNoOp() { + when(fileSystemMock.isRegularFile(expectedPath)).thenReturn(true); + assertFalse(task.execute(contextMock)); + } + + @Test + public void fileContent() { + assertEquals(expectedContent, task.getRepoFileContent()); + } + + @Test + public void createsFile() { + when(fileSystemMock.isRegularFile(expectedPath)).thenReturn(false); + when(contextMock.executeSubtask(any())).thenReturn(true); + assertTrue(task.execute(contextMock)); + + // Writing a file with the expected content + ArgumentCaptor<WriteFileTask> writeFileTaskArgumentCaptor = + ArgumentCaptor.forClass(WriteFileTask.class); + verify(contextMock, times(1)) + .executeSubtask(writeFileTaskArgumentCaptor.capture()); + WriteFileTask writeFileTask = writeFileTaskArgumentCaptor.getValue(); + assertEquals(expectedPath, writeFileTask.getPath()); + assertEquals(expectedContent, writeFileTask.getContentProducer().call()); + assertEquals("rw-r--r--", writeFileTask.getPermissions().get()); + assertEquals("root", writeFileTask.getOwner().get()); + assertEquals("root", writeFileTask.getGroup().get()); + } +}
\ No newline at end of file |