Skip to content

Commit

Permalink
Added tests for PublicKeyDecoder
Browse files Browse the repository at this point in the history
  • Loading branch information
Ignas committed Dec 7, 2023
1 parent 0d00975 commit 14e1359
Show file tree
Hide file tree
Showing 3 changed files with 57 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,13 @@ public PublicKeyData decodePublicKey(String keyLine) throws InvalidKeyStringExce
String[] parts = keyLine.split(" ");
for (String part : parts) {
if (part.startsWith("AAAA")) {
byte[] decodeBuffer = Base64.getDecoder().decode(part.getBytes(StandardCharsets.UTF_8));
byte[] decodeBuffer;
try {
decodeBuffer = Base64.getDecoder().decode(part.getBytes(StandardCharsets.UTF_8));
} catch (IllegalArgumentException e) {
throw new InvalidKeyStringException("Key string is not a valid base64 string", e);
}

ByteBuffer bb = ByteBuffer.wrap(decodeBuffer);
/* using 4 bytes from bb to generate integer which gives us length of key-
format type, in this case len=7 as "ssh-rsa" has 7 chars
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
package lt.pow.nukagit.db.repositories


import org.yaml.snakeyaml.Yaml
import spock.lang.Shared
import spock.lang.Specification

class PublicKeyDecoderTest extends Specification {
@Shared
List<String> validKeys

@Shared
List<String> invalidKeys

PublicKeyDecoder decoder = new PublicKeyDecoder()

def setupSpec() {
def keyFile = new File(getClass().getResource('/fixtures/ssh_keys.yaml').toURI())
Map<String, List<String>> yaml = new Yaml().load(keyFile.newReader())
validKeys = yaml.get("valid")
invalidKeys = yaml.get("invalid")
}

def "test valid keys"() {
expect:
decoder.decodePublicKey(key) != null
where:
key << validKeys
}

def "test invalid keys"() {
when:
decoder.decodePublicKey(key)
then:
thrown(InvalidKeyStringException)
where:
key << invalidKeys
}
}
11 changes: 11 additions & 0 deletions src/test/resources/fixtures/ssh_keys.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
valid:
- ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCru5hiXJ19y0AF1euGURC3ikNgYzXKaSUzK5EpcyJ9uu/ivQP9KoZBuMMBkLxf4V5n4SdyjFWzIGQLt6kJp6HxxGxrZnl8pL6noBbH5GerPqBhK02RMop145gkHJlV6ZoVhJ2flgUL8Pw2Dof+BwsE17YiKDdJaBs9kNry6d+Gp5OsRJH4NRweQaxN8V8IW+gMKTVyEKVbn3L5CkjgLNydpnLBIPv9IjZTH1yLamVm0Jm+k4fZWyloLQ+hXBD3V8KdyBbNfqjXVDSRELzcBzREQ8AjZh10knLFxoSxkbBEfNX1GQWjCzbqQMYyJQRCHWQSQ9YIQOIxZV/NqaHBzXsP
- ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCRhRpMhQSPJI4hK5wHm5eeTi4Kh+hCbVn7r0qDl4J8jgEB5/7Ni/RRgAa22hG0N07vAi+K4qgsH2bolldCDW2/iIGGlXdNHUKULgvs+I2zLm8ewJ0dCzf2l5mlKyue4ZmuMiPfB06zE8px44ABZE7beRi34z37n7wH2N+sewQ2gtZJgNsw8IQ/kPN1xsSV/51i2gNaOTyZlTwzYAcv8dJdw2JvUe1T7Wc0ffroHPurLLGafgFMQyQ1QTvy5ZxbHMvBlBkXhwPAB3MN89x3dlrqlni98U4m2aefdpI82z4mRTaJeQVmeuUiIq6brh6Tcg7EjqZeXG9oOyM2quorbdXN
- ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCp1CZR7wooITs0mMkWttKeV7ko3gpzWBxVnDouG1oCy4gUmDxYDTx3wEltI8DWW1pw2B7i2kmb1sYSepMLc5/N2cflbsoxJlQtg8oS/9RVsFMnjPXNPF1SkY+DBpBjSFzgj6JUtM3WIE16DTF2FBTEPZB47mRy58mMexmPdtjpuSlY+14q9EhZJiAhbbhdzPJSIcvCMua8lQ4AGEx1gWO9ror58xJql8VbfdqY9xwwWQOdpQBTugpNnEaYMSFuBOAcE/WLGdDfQKIGc1v0dM2i++HzxGPPGjd9EhUl6luUhke2dAe78pcRXk9i1e6WvRV59gV/mkSx6FqYKavFABqDFl7NT3qKiU9XEdEClxYDVRIFftJM11AOH5vne1Te+mZvr6+EJGdTZcLI8xOxfAxepYBl5hATZ7eS8zcvfq3SjU3B//cL72lwbcSiQk976oQilRpOFY+IKuB2ODxd6BhW1ut2o3Vd6Irfbi2TIhFqV0/m92pcsKhhmgBWyMvwSDE7HmRX9Lop1l5CWOCR97CN1As5aGpFVbZVlpSShL4H3WkSW/tkXpu3PCe3kPvbU1PJNKttQP4nrSgleXZFmnh2X1+iCl1Zan5wTAP1OePDHeHAJ6na8ptCxMG88+H8JX/oEC2ziqET79EmMXUpMZuSATP/Fv0yxXU/0OiWXYionQ==
- ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDAXODOPnHzhek5iDVyWOCNOnLm5BgADgp1F2XMfE66ezDzg4yIXfk8aCs/kdxY8A9JBFm9a1XBliFRL7O4wN/Cbl59T5OYN9SJHUgHdVqdgACLgohmOCP5VMmb1hQzc/eRKILJp4ZwY4VlzX7+WBn4qsD2UBtZVHZNbQ3WW69hIzq/yRAi08yk53aUU/lXSZnvJWcXaCLpQOJpM2AMcrjnTE9p3q3tOazPf6Xd+ps7ICKWUkU4FgTjcRnL7gauGZI6TzdYUZgqbRGBmgPUe0RDswqmzrQLHseUjHs4ikKefyLsFS/rtcH7809EgESQgL2/QYQD20+X40wFODJlEj0v76eyanCgjBsaBE0LCjRXWRig5Jut8JhLOkZGET6DiPa0QDDYnG8OvasjgnN1UqwEMPVHsQZ4DukLGJr2EdciyuR8UI0Ya3BbsyW7URcs938hXqSqEZm2J9bzAC9XcInQ07LfVBjTM8Zvrdq6+mmWlE6J5pJqEh2aWPM7w7i4kdGVyN0g9vzI4BLLTiRk4pwSdLZ1ryHoKdLGQOZHglUbWZcX0zBet6CPIHXtGXLSDCJLztRRxpXN3Gzivez6dWMajtxciGc9uRj0h0O+zGLH4NhbNCR8NgDlKWJqMwz1IHlhi9od1YssIM2T3ACpqb8mcxSeMuIgzAt5QJ773HJfsQ==
- ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQClcSOqeibzOSra3bNbbgtH2aViYOhOuUZSdGtEPdjstJe3Edi1EVpUUC45UVLP27SMyMN7qicrdl94U6b6N7HSqCSYp7cP3bEXy+O3+XAyrAvHZH+g8v1IqOpsHvP2D5ytXS8t8Kazy7Y2l7Cmx6BDK1il7pL8JViBkHOxbnzJyw==
invalid:
- ssh-dss AAAAB3NzaC1kc3MAAABBAPymgs6OEsq6Ju/M9xEOUm2weLBe3svNHrSiCPOuFheuAfNbkaR+bfY0E8XhLtCJm80TKs1Q2ZFRvcQ+5zdZLhcAAAAVAJYu3cw2nLqOuyYO5rahJtk0bjjFAAAAQGeEcbJ6nPRO6RpJxRR9samq8kTwWkNNZIaTHS0UJxueNQMLcf1z2heQabMuKTVjDhwgYjVNDaIKbEFuUL55TKQAAABBAMG7Jr2vjth8G90DFV0Zf2EpewTsGeib4ISuhcIEgM7y40z+FYOaepSxw+Fhr5hUA+nYPVFOPNSyBsedpcyGtwE=
- ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBBTkovxctQwuZs1ugYwLvl42z0xiQyA0M8pZx9vbLIZyI+bHowu0NZJS8tNWfkokvIPthvWMSDxkgeLsdoObYiM=
- ssh-rsa NOTAKEY
- ssh-rsa AAAAB3NzaC1....il7pL8JViBkHOxbnzJyw==

0 comments on commit 14e1359

Please sign in to comment.