143 lines
5.1 KiB
Go
143 lines
5.1 KiB
Go
|
// Copyright 2024 Matthew Rich <matthewrich.conf@gmail.com>. All rights reserved.
|
||
|
|
||
|
package resource
|
||
|
|
||
|
import (
|
||
|
"context"
|
||
|
"github.com/stretchr/testify/assert"
|
||
|
"testing"
|
||
|
"fmt"
|
||
|
"decl/internal/data"
|
||
|
"decl/internal/folio"
|
||
|
"decl/internal/codec"
|
||
|
"log"
|
||
|
)
|
||
|
|
||
|
func NewTestUserKeys() (data.ResourceMapper, folio.URI) {
|
||
|
uri := "openpgp-keyring://TestUser1/TestUser1/testuser@rosskeen.house"
|
||
|
keyRingDecl := folio.NewDeclaration()
|
||
|
keyRingDecl.NewResource(&uri)
|
||
|
|
||
|
ctx := context.Background()
|
||
|
declarationAttributes := fmt.Sprintf(`
|
||
|
name: TestUser1
|
||
|
comment: TestUser1
|
||
|
email: testuser@rosskeen.house
|
||
|
keyringref: file://%s/keyring.asc
|
||
|
`, string(TempDir))
|
||
|
|
||
|
testKeyRing := keyRingDecl.Resource()
|
||
|
if e := testKeyRing.LoadString(declarationAttributes, codec.FormatYaml); e != nil {
|
||
|
log.Fatal(e)
|
||
|
}
|
||
|
|
||
|
testKeyRing.UseConfig(MockConfigValueGetter(func(key string) (any, error) {
|
||
|
switch key {
|
||
|
case "passphrase":
|
||
|
return "foo", nil
|
||
|
}
|
||
|
return nil, fmt.Errorf("%w: %s", data.ErrUnknownConfigurationKey, key)
|
||
|
}))
|
||
|
|
||
|
if err := testKeyRing.Create(ctx); err != nil {
|
||
|
log.Fatal(err)
|
||
|
}
|
||
|
return TestResourceMapper(func(key string) (data.Declaration, bool) {
|
||
|
return keyRingDecl, true
|
||
|
}), folio.URI(uri)
|
||
|
|
||
|
}
|
||
|
|
||
|
func TestNewOpenPGPSignatureResource(t *testing.T) {
|
||
|
assert.NotNil(t, NewOpenPGPSignature())
|
||
|
}
|
||
|
|
||
|
func TestCreateSignature(t *testing.T) {
|
||
|
ctx := context.Background()
|
||
|
|
||
|
m, keyRingUri := NewTestUserKeys()
|
||
|
|
||
|
assert.Nil(t, TempDir.CreateFile("test.txt", "test data"))
|
||
|
|
||
|
declarationAttributes := fmt.Sprintf(`
|
||
|
keyringref: %s
|
||
|
sourceref: file://%s/test.txt
|
||
|
`, string(keyRingUri), string(TempDir))
|
||
|
|
||
|
testSignature := NewOpenPGPSignature()
|
||
|
testSignature.Resources = m
|
||
|
e := testSignature.LoadDecl(declarationAttributes)
|
||
|
assert.Nil(t, e)
|
||
|
|
||
|
err := testSignature.Create(ctx)
|
||
|
assert.Nil(t, err)
|
||
|
/*
|
||
|
assert.Greater(t, len(testSignature.entityList), 0)
|
||
|
assert.Contains(t, testSignature.entityList[0].Identities, "TestUser1 (TestUser1) <testuser@rosskeen.house>")
|
||
|
assert.Contains(t, testSignature.Signature, "-----END PGP PUBLIC KEY BLOCK-----")
|
||
|
assert.Contains(t, testSignature.Signature, "-----END PGP PRIVATE KEY BLOCK-----")
|
||
|
*/
|
||
|
}
|
||
|
|
||
|
/*
|
||
|
func TestReadSignature(t *testing.T) {
|
||
|
ctx := context.Background()
|
||
|
|
||
|
declarationAttributes := `
|
||
|
signature: |-
|
||
|
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
||
|
|
||
|
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
|
||
|
+aAQq8u60fWheEIG+xaV3T01zrNRUo6I7xu5kA==
|
||
|
=yFbn
|
||
|
-----END PGP PUBLIC KEY BLOCK-----
|
||
|
`
|
||
|
|
||
|
testSignature := NewOpenPGPSignature()
|
||
|
e := testSignature.LoadDecl(declarationAttributes)
|
||
|
assert.Nil(t, e)
|
||
|
y, err := testSignature.Read(ctx)
|
||
|
assert.Nil(t, err)
|
||
|
assert.NotNil(t, y)
|
||
|
|
||
|
assert.Greater(t, len(testSignature.entityList), 0)
|
||
|
assert.Contains(t, testSignature.entityList[0].Identities, "TestUser (TestUser) <matthewrich.conf@gmail.com>")
|
||
|
|
||
|
}
|
||
|
*/
|