|
|
|
package org.domaindrivenarchitecture.provs.framework.extensions.workplace.base
|
|
|
|
|
|
|
|
import org.domaindrivenarchitecture.provs.framework.core.Prov
|
|
|
|
import org.domaindrivenarchitecture.provs.framework.core.ProvResult
|
|
|
|
import org.domaindrivenarchitecture.provs.framework.core.Secret
|
|
|
|
import org.domaindrivenarchitecture.provs.framework.core.docker.exitAndRmContainer
|
|
|
|
import org.domaindrivenarchitecture.provs.framework.core.local
|
|
|
|
import org.domaindrivenarchitecture.provs.framework.core.processors.ContainerStartMode
|
|
|
|
import org.domaindrivenarchitecture.provs.test.defaultTestContainer
|
|
|
|
import org.domaindrivenarchitecture.provs.test.tags.ContainerTest
|
|
|
|
import org.domaindrivenarchitecture.provs.test.tags.NonCi
|
|
|
|
import org.domaindrivenarchitecture.provs.framework.ubuntu.install.base.aptInstall
|
|
|
|
import org.domaindrivenarchitecture.provs.framework.ubuntu.keys.KeyPair
|
|
|
|
import org.domaindrivenarchitecture.provs.framework.ubuntu.keys.base.configureGpgKeys
|
|
|
|
import org.junit.jupiter.api.Assertions.assertFalse
|
|
|
|
import org.junit.jupiter.api.Assertions.assertTrue
|
|
|
|
import org.junit.jupiter.api.Test
|
|
|
|
import org.domaindrivenarchitecture.provs.framework.extensions.test_keys.privateGPGSnakeoilKey
|
|
|
|
import org.domaindrivenarchitecture.provs.framework.extensions.test_keys.publicGPGSnakeoilKey
|
|
|
|
import org.domaindrivenarchitecture.provs.desktop.infrastructure.configureGopassBridgeJsonApi
|
|
|
|
import org.domaindrivenarchitecture.provs.desktop.infrastructure.downloadGopassBridge
|
|
|
|
import org.domaindrivenarchitecture.provs.desktop.infrastructure.installGopass
|
|
|
|
import org.domaindrivenarchitecture.provs.desktop.infrastructure.installGopassBridgeJsonApi
|
|
|
|
|
|
|
|
|
|
|
|
internal class GopassBridgeKtTest {
|
|
|
|
|
|
|
|
@ContainerTest
|
|
|
|
@Test
|
|
|
|
fun test_downloadGopassBridge() {
|
|
|
|
// given
|
|
|
|
local().exitAndRmContainer("provs_test")
|
|
|
|
val a = defaultTestContainer()
|
|
|
|
a.aptInstallCurl()
|
|
|
|
|
|
|
|
// when
|
|
|
|
val res = a.downloadGopassBridge()
|
|
|
|
|
|
|
|
// then
|
|
|
|
assertTrue(res.success)
|
|
|
|
}
|
|
|
|
|
|
|
|
@ContainerTest
|
|
|
|
@Test
|
|
|
|
@NonCi
|
|
|
|
fun test_install_and_configure_GopassBridgeJsonApi() {
|
|
|
|
// given
|
|
|
|
local().exitAndRmContainer("provs_test")
|
|
|
|
val a = defaultTestContainer()
|
|
|
|
val preparationResult = a.def {
|
|
|
|
aptInstallCurl()
|
|
|
|
configureGpgKeys(
|
|
|
|
KeyPair(Secret(publicGPGSnakeoilKey()), Secret(privateGPGSnakeoilKey())),
|
|
|
|
trust = true,
|
|
|
|
skipIfExistin = false
|
|
|
|
)
|
|
|
|
installGopass()
|
|
|
|
if (!chk("gopass ls")) {
|
|
|
|
// configure/init gopass in default location with gpg-key-fingerprint of snakeoil keys
|
|
|
|
cmd("printf \"\\ntest\\ntest@test.org\\n\" | gopass init 0x0674104CA81A4905")
|
|
|
|
} else {
|
|
|
|
ProvResult(true, out = "gopass already configured")
|
|
|
|
}
|
|
|
|
}
|
|
|
|
assertTrue(preparationResult.success)
|
|
|
|
|
|
|
|
// when
|
|
|
|
val res = a.def {
|
|
|
|
installGopassBridgeJsonApi()
|
|
|
|
configureGopassBridgeJsonApi()
|
|
|
|
}
|
|
|
|
|
|
|
|
// then
|
|
|
|
assertTrue(res.success)
|
|
|
|
}
|
|
|
|
|
|
|
|
@ContainerTest
|
|
|
|
@Test
|
|
|
|
@NonCi
|
|
|
|
fun test_install_GopassBridgeJsonApi_with_incompatible_gopass_jsonapi_version_installed() {
|
|
|
|
// given
|
|
|
|
val a = defaultTestContainer(ContainerStartMode.CREATE_NEW_KILL_EXISTING)
|
|
|
|
val preparationResult = a.def {
|
|
|
|
aptInstallCurl()
|
|
|
|
|
|
|
|
configureGpgKeys(
|
|
|
|
KeyPair(Secret(publicGPGSnakeoilKey()), Secret(privateGPGSnakeoilKey())),
|
|
|
|
trust = true,
|
|
|
|
skipIfExistin = false
|
|
|
|
)
|
|
|
|
installGopass("1.11.0", enforceVersion = true, "1ec9e0dfcfd9bcc241943e1a7d92f31bf3e66bb16f61ae5d079981325c31baa6")
|
|
|
|
if (!chk("gopass ls")) {
|
|
|
|
// configure gopass in default location with gpg-key-fingerprint of snakeoil keys
|
|
|
|
cmd("printf \"\\ntest\\ntest@test.org\\n\" | gopass init 0x0674104CA81A4905")
|
|
|
|
} else {
|
|
|
|
ProvResult(true, out = "gopass already configured")
|
|
|
|
}
|
|
|
|
}
|
|
|
|
assertTrue(preparationResult.success)
|
|
|
|
|
|
|
|
// when
|
|
|
|
val res = a.def {
|
|
|
|
installGopassBridgeJsonApi()
|
|
|
|
configureGopassBridgeJsonApi()
|
|
|
|
}
|
|
|
|
|
|
|
|
// then
|
|
|
|
assertFalse(res.success)
|
|
|
|
}
|
|
|
|
|
|
|
|
@ContainerTest
|
|
|
|
@Test
|
|
|
|
@NonCi
|
|
|
|
fun test_install_GopassBridgeJsonApi_with_incompatible_gopass_version_installed() {
|
|
|
|
// given
|
|
|
|
val a = defaultTestContainer(ContainerStartMode.CREATE_NEW_KILL_EXISTING)
|
|
|
|
val preparationResult = a.def {
|
|
|
|
aptInstallCurl()
|
|
|
|
configureGpgKeys(
|
|
|
|
KeyPair(Secret(publicGPGSnakeoilKey()), Secret(privateGPGSnakeoilKey())),
|
|
|
|
trust = true,
|
|
|
|
skipIfExistin = false
|
|
|
|
)
|
|
|
|
installGopass("1.9.0", enforceVersion = true, "fe13ef810d7fe200495107161e99eac081368aa0ce5e53971b1bd47a64eba4db")
|
|
|
|
if (!chk("gopass ls")) {
|
|
|
|
// configure gopass in default location with gpg-key-fingerprint of snakeoil keys
|
|
|
|
cmd("printf \"\\ntest\\ntest@test.org\\n\" | gopass init 0x0674104CA81A4905")
|
|
|
|
} else {
|
|
|
|
ProvResult(true, out = "gopass already configured")
|
|
|
|
}
|
|
|
|
}
|
|
|
|
assertTrue(preparationResult.success)
|
|
|
|
|
|
|
|
// when
|
|
|
|
val res = a.def {
|
|
|
|
installGopassBridgeJsonApi()
|
|
|
|
configureGopassBridgeJsonApi()
|
|
|
|
}
|
|
|
|
|
|
|
|
// then
|
|
|
|
assertFalse(res.success)
|
|
|
|
}
|
|
|
|
|
|
|
|
private fun Prov.aptInstallCurl() = def {
|
|
|
|
cmd("apt-get update", sudo = true)
|
|
|
|
aptInstall("curl")
|
|
|
|
}
|
|
|
|
}
|