From 31720aad6e0fe0501702b151e716c0d8491b8755 Mon Sep 17 00:00:00 2001 From: Aleksei Khudiakov Date: Mon, 12 Feb 2024 11:37:37 +1000 Subject: [PATCH] Add test for gpg key import covering sign capability on subkey Signed-off-by: Aleksei Khudiakov --- test/asset/dummy-gpg-no-sign.asc | 67 ++++++++--------- test/asset/dummy-gpg-sign-subkey.asc | 71 +++++++++++++++++++ ...rtGpgKeyFromStringViaTemporaryFileTest.php | 9 +++ 3 files changed, 114 insertions(+), 33 deletions(-) create mode 100644 test/asset/dummy-gpg-sign-subkey.asc diff --git a/test/asset/dummy-gpg-no-sign.asc b/test/asset/dummy-gpg-no-sign.asc index 9683aa69..e15368a9 100644 --- a/test/asset/dummy-gpg-no-sign.asc +++ b/test/asset/dummy-gpg-no-sign.asc @@ -27,37 +27,38 @@ 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 -=cI7Z +f9oBCADHxf6YEy5ASpX6O6sg2wEKvNE6zZyPZxvWHyZk7w08HV7lxIXdkphTPXCA +nfgh8yukRFCd2hWY4bvtgyZqea0YQW+wy3v6a3qWILO/n+WSX8c+i2O3zcTPKJAv +dlNjWT2IMwi7x9G8F9kYQZtjxNsqsz0aPgeJPOy13NPxbcSY+PTw3t0PXPSf7X+2 +jp31oq2XJ+qDwrOmsuFVKsQCmy6ZiHYtJ/q76sM4HDqgFSjCINUfH8mODzZqmJAM +1I9PkJzxLsqI6b+jKdqKNezhZIfMP0grz5uVDbg7cLWsjYH4fiGNOYhPI5FIAbyF +VBU97ZK+GvN6vNuM7bbfVEUmcPzHABEBAAEAB/0ZQTl/RiV5sTQmjzaCD82g6t/U +fDvHkTRerE9xQRs+N0RQ7bgym56wHztCtzWwLQqeWJiMbA6A5kCYtRS9Lyanw1X4 +VrEUplO3+OhgWDlweLU6feqcSOIRgkJADcha7eQufK0k+AzWp3klbN3VDgTa8A/Q +ankPa2lNUF5mzgalg9JXRJQuQiB+Crp1+UEs890niQCbI2oqw76+LpVz1NPbhTgU +qpLenfJjamSz0AZP1z5UKZIpRcJzmtGehYvhTsn/wcnHzm+j66aobGSImQyaa8oX ++AEvY35URR+9N2XUXIt4X1ZiYLCKYmT8mr4w5V63/Q3fX0GgKylE5ytUE26JBADb +lNwbd4NzDLGPbY7cvacmUIhgCvWBQhEOBOT1K02bGZaxsF21wbwrXussuLEFc+/W +E++yVtoc9nuvG0XVebBvtfJ1QDIq9E6Qq7UQeB7+QmIHmFjjC7TTKRZtFdMG27nm +8RCuTvNPa33o21ZIPT3tcX8Tbf/mObexsqwRpx9upQQA6OgcO/WGy/G/fe+1h71f +i75yDYrA287V3/wIBVWcQVP48s8V3P7afD6EUvUOmuO5952HllcBUiRyPw1Ur02m +ub6AisCRh7HAivi0TzuleR3UFxX6n/Wgxm1OU0T3AtRD8MtZP0wTHzCvuR8jgRBF +29NGUc64K0MOrAc5e2xSrfsD/13+H3i2vatV80q6hzZklcQVnUzG52PlY1daL8EV +9PPSHyeeE6pGxP+H60xgIS4EhbA97jE2E3vHudRv6NFtzV3oj6c15MRRJA052YJs +N/kx4UqvdcgCA0z2lDwjt3uPsMeYn7TWjjaTS/C9CTfnGcYN5zmXDZEpElpDx+qx +JTF1P5iJAmwEGAEKACAWIQRFrpEvxcN4Bp5FVW0vyEIjpL5yQgUCZcmAAwIbDAFA +CRAvyEIjpL5yQsB0IAQZAQoAHRYhBNgHSV062tF6VwUdzyzyFhWyhRzJBQJlyX/a +AAoJECzyFhWyhRzJqA4H/0sTEZm56QBD8lmfzvcd2aBMBbMIPnh+YF0l88wKu3XY +eizQHWBWPYdGedOQDQljs8+Q8rReqA5CJeTSynFp8TzdmTiWQKosAArj0ShShsKs +jX5vEktoaHPQ+Ulo+GzezxACIK61Nn6lSiNB4Ejd+4AhvqJWSpaZfoqMgYB1kalg +Xw3WdkWJIR2b94tlXw2Vm8JO/Z6KEui3psexZ2dLOSBxvCpMNf5VHVffCVp2uc4q +Jij4J0hj0v99Jr0g+gRp21WHK8q6Sctq7SwTGdILVkKbDAU4LDVVbpUm7FUtgq1p +Ug8xu69k6FRwnFRmkvPGRTpPypn3QJrycEK0KObWPGLjBggAg/6UsxnqFHnvltNh +ftaPRm2WqkiXZKLGvy73k/oxeCW68YebNgeZR3dxbEHF2gYN9UtKIGLteEzEh+GF +WxM21SFaUlkkoPpiVqlvhMLy6wOqtKR5GmHGCU1zNQbySJn+uRMQqL2awmquNSD8 +FA3UIUNX/uhKCDfQq+EHXeZAIL0n3WBOAoaR/ofODeyDx739Mznia8+1ZwamFDPY +t3cvR2VANREZCYnOi94DOm5uAycCRS5CttbiJ5BpZ8Q6geFDz9ZZdTaVWz5AJer8 +NlS4L/4zGNWR8z6dCHq5TyGcYqkml57qskCEtDSQCYxQez0Lp5Bovufc5473nAs0 +58Lxug== +=0BOE -----END PGP PRIVATE KEY BLOCK----- diff --git a/test/asset/dummy-gpg-sign-subkey.asc b/test/asset/dummy-gpg-sign-subkey.asc new file mode 100644 index 00000000..57f45713 --- /dev/null +++ b/test/asset/dummy-gpg-sign-subkey.asc @@ -0,0 +1,71 @@ +-----BEGIN PGP PRIVATE KEY BLOCK----- + +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 +upAFpjFNVg== +=pSLg +-----END PGP PRIVATE KEY BLOCK----- diff --git a/test/unit/Gpg/ImportGpgKeyFromStringViaTemporaryFileTest.php b/test/unit/Gpg/ImportGpgKeyFromStringViaTemporaryFileTest.php index 37a88ad1..7d6d12cb 100644 --- a/test/unit/Gpg/ImportGpgKeyFromStringViaTemporaryFileTest.php +++ b/test/unit/Gpg/ImportGpgKeyFromStringViaTemporaryFileTest.php @@ -41,6 +41,15 @@ public function testWillFailOnNoSecretKey(): void ->__invoke(read(__DIR__ . '/../../asset/dummy-gpg-key-no-secret.asc')); } + public function testWillImportGpgKeyWithSignCapabilityOnSubkey(): void + { + self::assertEquals( + SecretKeyId::fromBase16String('0C251880C3862779'), + (new ImportGpgKeyFromStringViaTemporaryFile()) + ->__invoke(read(__DIR__ . '/../../asset/dummy-gpg-sign-subkey.asc')), + ); + } + public function testWillFailOnMissingSignCapabilities(): void { $this->expectException(InvariantViolationException::class);