summaryrefslogtreecommitdiffstats
path: root/internal/ui/app_test.go
diff options
context:
space:
mode:
authorGab Virebent <gabriel1@virebent.art>2026-08-23 00:26:27 +0200
committerGab Virebent <gabriel1@virebent.art>2026-08-23 00:26:27 +0200
commitbdb8a02bbb3dc0d7c39f5b3ec451abb68e9d093d (patch)
tree796d246f9874641717b5e81a72989961e65a9b9f /internal/ui/app_test.go
parentc1decadb590c4d79d92bcc4df7772119a5c91244 (diff)
downloadaegis-bdb8a02bbb3dc0d7c39f5b3ec451abb68e9d093d.tar.gz
aegis-bdb8a02bbb3dc0d7c39f5b3ec451abb68e9d093d.tar.xz
aegis-bdb8a02bbb3dc0d7c39f5b3ec451abb68e9d093d.zip
Simplify Usenet posting to signing onlyHEADmain
Diffstat (limited to 'internal/ui/app_test.go')
-rw-r--r--internal/ui/app_test.go46
1 files changed, 12 insertions, 34 deletions
diff --git a/internal/ui/app_test.go b/internal/ui/app_test.go
index 0483bdb..6e9dc2a 100644
--- a/internal/ui/app_test.go
+++ b/internal/ui/app_test.go
@@ -10,8 +10,6 @@ import (
"aegis/internal/cryptokit"
"aegis/internal/identity"
-
- "filippo.io/age"
)
func TestNormalizeGroups(t *testing.T) {
@@ -100,7 +98,7 @@ func TestPrepareArticleCryptoSignsCanonicalBody(t *testing.T) {
headers, contentType, transferEncoding, wireBody, err := prepareArticleCrypto(
"hello\r\nworld",
"Sign with Ed25519",
- articleCryptoOptions{SigningKey: privateSeed, PublicKeyURL: "https://keys.example.invalid/aegis.pub"},
+ articleCryptoOptions{SigningKey: privateSeed},
)
if err != nil {
t.Fatal(err)
@@ -108,10 +106,6 @@ func TestPrepareArticleCryptoSignsCanonicalBody(t *testing.T) {
if contentType != "text/plain; charset=UTF-8" || transferEncoding != "8bit" {
t.Fatalf("unexpected MIME metadata: %q, %q", contentType, transferEncoding)
}
- joined := strings.Join(headers, "\r\n")
- if !strings.Contains(joined, "X-Aegis-Public-Key-URL: https://keys.example.invalid/aegis.pub") {
- t.Fatalf("missing public-key URL: %s", joined)
- }
const signaturePrefix = "X-Aegis-Signature: ed25519; "
var signature string
for _, header := range headers {
@@ -127,38 +121,22 @@ func TestPrepareArticleCryptoSignsCanonicalBody(t *testing.T) {
}
}
-func TestPrepareArticleCryptoEncryptsAndSigns(t *testing.T) {
- identity, err := age.GenerateX25519Identity()
- if err != nil {
- t.Fatal(err)
+func TestPrepareArticleCryptoRejectsMessageEncryption(t *testing.T) {
+ if _, _, _, _, err := prepareArticleCrypto("secret body", "Encrypt with age", articleCryptoOptions{}); err == nil {
+ t.Fatal("message encryption mode was accepted")
}
- _, private, err := ed25519.GenerateKey(rand.Reader)
- if err != nil {
- t.Fatal(err)
- }
- headers, contentType, transferEncoding, wireBody, err := prepareArticleCrypto(
- "secret body",
- "Encrypt with age and sign",
- articleCryptoOptions{
- EncryptionKey: identity.Recipient().String(),
- SigningKey: base64.StdEncoding.EncodeToString(private.Seed()),
- },
+}
+
+func TestBuildArticleIncludesToHeader(t *testing.T) {
+ article, err := buildArticleWithIdentityHeaders(
+ []string{"alt.test"}, "reader@example.org", "To header", "body", nil,
+ articleCryptoOptions{Mode: "Plain", To: "mail2news@example.org"},
)
if err != nil {
t.Fatal(err)
}
- if contentType != "application/vnd.aegis.age" || transferEncoding != "7bit" {
- t.Fatalf("unexpected encrypted MIME metadata: %q, %q", contentType, transferEncoding)
- }
- if !strings.Contains(strings.Join(headers, "\r\n"), "X-Aegis-Encryption: age") {
- t.Fatal("missing age encryption header")
- }
- plaintext, err := cryptokit.DecryptAge([]byte(strings.ReplaceAll(wireBody, "\r\n", "\n")), identity.String())
- if err != nil {
- t.Fatal(err)
- }
- if string(plaintext) != "secret body" {
- t.Fatalf("decrypted body = %q", plaintext)
+ if !strings.Contains(article, "To: mail2news@example.org\r\n") {
+ t.Fatalf("article missing To header:\n%s", article)
}
}