Skip to content

Commit

Permalink
Replace abstract class IntegrationBaseSpec with composition through I…
Browse files Browse the repository at this point in the history
…ntegrationTestUtil
  • Loading branch information
vladimirlagunov committed Nov 10, 2021
1 parent 8a66dc5 commit 0ded0ca
Show file tree
Hide file tree
Showing 9 changed files with 53 additions and 52 deletions.
13 changes: 7 additions & 6 deletions src/itest/groovy/com/hierynomus/sshj/IntegrationSpec.groovy
Original file line number Diff line number Diff line change
Expand Up @@ -20,9 +20,10 @@ import net.schmizz.sshj.DefaultConfig
import net.schmizz.sshj.SSHClient
import net.schmizz.sshj.transport.TransportException
import net.schmizz.sshj.userauth.UserAuthException
import spock.lang.Specification
import spock.lang.Unroll

class IntegrationSpec extends IntegrationBaseSpec {
class IntegrationSpec extends Specification {

@Unroll
def "should accept correct key for #signatureName"() {
Expand All @@ -33,7 +34,7 @@ class IntegrationSpec extends IntegrationBaseSpec {
sshClient.addHostKeyVerifier(fingerprint) // test-containers/ssh_host_ecdsa_key's fingerprint

when:
sshClient.connect(SERVER_IP, DOCKER_PORT)
sshClient.connect(IntegrationTestUtil.SERVER_IP, IntegrationTestUtil.DOCKER_PORT)

then:
sshClient.isConnected()
Expand All @@ -50,7 +51,7 @@ class IntegrationSpec extends IntegrationBaseSpec {
sshClient.addHostKeyVerifier("d4:6a:a9:52:05:ab:b5:48:dd:73:60:18:0c:3a:f0:a3")

when:
sshClient.connect(SERVER_IP, DOCKER_PORT)
sshClient.connect(IntegrationTestUtil.SERVER_IP, IntegrationTestUtil.DOCKER_PORT)

then:
thrown(TransportException.class)
Expand All @@ -59,11 +60,11 @@ class IntegrationSpec extends IntegrationBaseSpec {
@Unroll
def "should authenticate with key #key"() {
given:
SSHClient client = getConnectedClient()
SSHClient client = IntegrationTestUtil.getConnectedClient()

when:
def keyProvider = passphrase != null ? client.loadKeys("src/itest/resources/keyfiles/$key", passphrase) : client.loadKeys("src/itest/resources/keyfiles/$key")
client.authPublickey(USERNAME, keyProvider)
client.authPublickey(IntegrationTestUtil.USERNAME, keyProvider)

then:
client.isAuthenticated()
Expand All @@ -83,7 +84,7 @@ class IntegrationSpec extends IntegrationBaseSpec {

def "should not authenticate with wrong key"() {
given:
SSHClient client = getConnectedClient()
SSHClient client = IntegrationTestUtil.getConnectedClient()

when:
client.authPublickey("sshj", "src/itest/resources/keyfiles/id_unknown_key")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,24 +19,22 @@ import net.schmizz.sshj.Config
import net.schmizz.sshj.DefaultConfig
import net.schmizz.sshj.SSHClient
import net.schmizz.sshj.transport.verification.PromiscuousVerifier
import spock.lang.Specification

class IntegrationBaseSpec extends Specification {
protected static final int DOCKER_PORT = 2222
protected static final String USERNAME = "sshj"
protected static final String KEYFILE = "src/itest/resources/keyfiles/id_rsa"
protected final static String SERVER_IP = System.getProperty("serverIP", "127.0.0.1")
class IntegrationTestUtil {
static final int DOCKER_PORT = 2222
static final String USERNAME = "sshj"
static final String KEYFILE = "src/itest/resources/keyfiles/id_rsa"
final static String SERVER_IP = System.getProperty("serverIP", "127.0.0.1")

protected static SSHClient getConnectedClient(Config config) {
static SSHClient getConnectedClient(Config config) {
SSHClient sshClient = new SSHClient(config)
sshClient.addHostKeyVerifier(new PromiscuousVerifier())
sshClient.connect(SERVER_IP, DOCKER_PORT)

return sshClient
}

protected static SSHClient getConnectedClient() throws IOException {
static SSHClient getConnectedClient() throws IOException {
return getConnectedClient(new DefaultConfig())
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -15,21 +15,22 @@
*/
package com.hierynomus.sshj.sftp

import com.hierynomus.sshj.IntegrationBaseSpec
import com.hierynomus.sshj.IntegrationTestUtil
import net.schmizz.sshj.SSHClient
import net.schmizz.sshj.sftp.OpenMode
import net.schmizz.sshj.sftp.RemoteFile
import net.schmizz.sshj.sftp.SFTPClient
import spock.lang.Specification

import java.nio.charset.StandardCharsets

import static org.codehaus.groovy.runtime.IOGroovyMethods.withCloseable

class FileWriteSpec extends IntegrationBaseSpec {
class FileWriteSpec extends Specification {

def "should append to file (GH issue #390)"() {
given:
SSHClient client = getConnectedClient()
SSHClient client = IntegrationTestUtil.getConnectedClient()
client.authPublickey("sshj", "src/test/resources/id_rsa")
SFTPClient sftp = client.newSFTPClient()
def file = "/home/sshj/test.txt"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,10 +15,11 @@
*/
package com.hierynomus.sshj.signature

import com.hierynomus.sshj.IntegrationBaseSpec
import com.hierynomus.sshj.IntegrationTestUtil
import net.schmizz.sshj.DefaultConfig
import net.schmizz.sshj.SSHClient
import net.schmizz.sshj.transport.verification.OpenSSHKnownHosts
import spock.lang.Specification
import spock.lang.Unroll

import java.nio.file.Files
Expand All @@ -29,15 +30,15 @@ import java.util.stream.Collectors
*
* Also, take a look at the unit test {@link net.schmizz.sshj.transport.verification.KeyWithCertificateUnitSpec}.
*/
class KeyWithCertificateSpec extends IntegrationBaseSpec {
class KeyWithCertificateSpec extends Specification {

@Unroll
def "authorising with a signed public key #keyName"() {
given:
def client = getConnectedClient()
def client = IntegrationTestUtil.getConnectedClient()

when:
client.authPublickey(USERNAME, "src/itest/resources/keyfiles/certificates/$keyName")
client.authPublickey(IntegrationTestUtil.USERNAME, "src/itest/resources/keyfiles/certificates/$keyName")

then:
client.authenticated
Expand Down Expand Up @@ -83,8 +84,8 @@ class KeyWithCertificateSpec extends IntegrationBaseSpec {
and:
File caPubKey = new File("src/itest/resources/keyfiles/certificates/CA_rsa.pem.pub")
String knownHostsFileContents = "" +
"@cert-authority $SERVER_IP ${caPubKey.text}" +
"\n@cert-authority [$SERVER_IP]:$DOCKER_PORT ${caPubKey.text}"
"@cert-authority ${IntegrationTestUtil.SERVER_IP} ${caPubKey.text}" +
"\n@cert-authority [${IntegrationTestUtil.SERVER_IP}]:${IntegrationTestUtil.DOCKER_PORT} ${caPubKey.text}"
knownHosts.write(knownHostsFileContents)

and:
Expand All @@ -94,7 +95,7 @@ class KeyWithCertificateSpec extends IntegrationBaseSpec {
.collect(Collectors.toList())
SSHClient sshClient = new SSHClient(config)
sshClient.addHostKeyVerifier(new OpenSSHKnownHosts(knownHosts))
sshClient.connect(SERVER_IP, DOCKER_PORT)
sshClient.connect(IntegrationTestUtil.SERVER_IP, IntegrationTestUtil.DOCKER_PORT)

when:
sshClient.authPassword("sshj", "ultrapassword")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,18 +15,18 @@
*/
package com.hierynomus.sshj.signature

import com.hierynomus.sshj.IntegrationBaseSpec
import net.schmizz.sshj.DefaultConfig
import com.hierynomus.sshj.IntegrationTestUtil
import spock.lang.Specification
import spock.lang.Unroll

class RsaSignatureClientKeySpec extends IntegrationBaseSpec {
class RsaSignatureClientKeySpec extends Specification {
@Unroll
def "should correctly connect using publickey auth with RSA key with signature"() {
given:
def client = getConnectedClient(new DefaultConfig())
def client = IntegrationTestUtil.getConnectedClient()

when:
client.authPublickey(USERNAME, "src/itest/resources/keyfiles/id_rsa2")
client.authPublickey(IntegrationTestUtil.USERNAME, "src/itest/resources/keyfiles/id_rsa2")

then:
client.authenticated
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,22 +15,23 @@
*/
package com.hierynomus.sshj.signature

import com.hierynomus.sshj.IntegrationBaseSpec
import com.hierynomus.sshj.IntegrationTestUtil
import com.hierynomus.sshj.key.KeyAlgorithms
import net.schmizz.sshj.DefaultConfig
import spock.lang.Specification
import spock.lang.Unroll

class SignatureSpec extends IntegrationBaseSpec {
class SignatureSpec extends Specification {

@Unroll
def "should correctly connect with #sig Signature"() {
given:
def cfg = new DefaultConfig()
cfg.setKeyAlgorithms(Collections.singletonList(sigFactory))
def client = getConnectedClient(cfg)
def client = IntegrationTestUtil.getConnectedClient(cfg)

when:
client.authPublickey(USERNAME, KEYFILE)
client.authPublickey(IntegrationTestUtil.USERNAME, IntegrationTestUtil.KEYFILE)

then:
client.authenticated
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,21 +15,22 @@
*/
package com.hierynomus.sshj.transport.cipher

import com.hierynomus.sshj.IntegrationBaseSpec
import com.hierynomus.sshj.IntegrationTestUtil
import net.schmizz.sshj.DefaultConfig
import spock.lang.Specification
import spock.lang.Unroll

class CipherSpec extends IntegrationBaseSpec {
class CipherSpec extends Specification {

@Unroll
def "should correctly connect with #cipher Cipher"() {
given:
def cfg = new DefaultConfig()
cfg.setCipherFactories(cipherFactory)
def client = getConnectedClient(cfg)
def client = IntegrationTestUtil.getConnectedClient(cfg)

when:
client.authPublickey(USERNAME, KEYFILE)
client.authPublickey(IntegrationTestUtil.USERNAME, IntegrationTestUtil.KEYFILE)

then:
client.authenticated
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,29 +15,26 @@
*/
package com.hierynomus.sshj.transport.kex

import com.hierynomus.sshj.IntegrationBaseSpec
import com.hierynomus.sshj.transport.mac.Macs
import com.hierynomus.sshj.IntegrationTestUtil
import net.schmizz.sshj.DefaultConfig
import net.schmizz.sshj.transport.kex.Curve25519DH
import net.schmizz.sshj.transport.kex.Curve25519SHA256
import net.schmizz.sshj.transport.kex.DH
import net.schmizz.sshj.transport.kex.DHGexSHA1
import net.schmizz.sshj.transport.kex.DHGexSHA256
import net.schmizz.sshj.transport.kex.ECDH
import net.schmizz.sshj.transport.kex.ECDHNistP
import spock.lang.Specification
import spock.lang.Unroll

class KexSpec extends IntegrationBaseSpec {
class KexSpec extends Specification {

@Unroll
def "should correctly connect with #kex Key Exchange"() {
given:
def cfg = new DefaultConfig()
cfg.setKeyExchangeFactories(kexFactory)
def client = getConnectedClient(cfg)
def client = IntegrationTestUtil.getConnectedClient(cfg)

when:
client.authPublickey(USERNAME, KEYFILE)
client.authPublickey(IntegrationTestUtil.USERNAME, IntegrationTestUtil.KEYFILE)

then:
client.authenticated
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,21 +15,22 @@
*/
package com.hierynomus.sshj.transport.mac

import com.hierynomus.sshj.IntegrationBaseSpec
import com.hierynomus.sshj.IntegrationTestUtil
import net.schmizz.sshj.DefaultConfig
import spock.lang.Specification
import spock.lang.Unroll

class MacSpec extends IntegrationBaseSpec {
class MacSpec extends Specification {

@Unroll
def "should correctly connect with #mac MAC"() {
given:
def cfg = new DefaultConfig()
cfg.setMACFactories(macFactory)
def client = getConnectedClient(cfg)
def client = IntegrationTestUtil.getConnectedClient(cfg)

when:
client.authPublickey(USERNAME, KEYFILE)
client.authPublickey(IntegrationTestUtil.USERNAME, IntegrationTestUtil.KEYFILE)

then:
client.authenticated
Expand All @@ -47,10 +48,10 @@ class MacSpec extends IntegrationBaseSpec {
given:
def cfg = new DefaultConfig()
cfg.setMACFactories(macFactory)
def client = getConnectedClient(cfg)
def client = IntegrationTestUtil.getConnectedClient(cfg)

when:
client.authPublickey(USERNAME, KEYFILE)
client.authPublickey(IntegrationTestUtil.USERNAME, IntegrationTestUtil.KEYFILE)

then:
client.authenticated
Expand Down

0 comments on commit 0ded0ca

Please sign in to comment.