taler-mailbox

Service for asynchronous wallet-to-wallet payment messages
Log | Files | Refs | Submodules | README | LICENSE

commit 0d5e03d60e905158b59b5a4e60ca0e24313cdfba
parent 3dc87295db0e320480a306242799998763a39a07
Author: Martin Schanzenbach <schanzen@gnunet.org>
Date:   Tue, 17 Feb 2026 12:49:19 +0100

add test for new info field

Diffstat:
Mcmd/mailbox-server/main_test.go | 87+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++------------------
1 file changed, 68 insertions(+), 19 deletions(-)

diff --git a/cmd/mailbox-server/main_test.go b/cmd/mailbox-server/main_test.go @@ -266,6 +266,7 @@ func TestMailboxRegistration(t *testing.T) { } var respMsg mailbox.MailboxMetadata err := json.NewDecoder(response.Body).Decode(&respMsg) + fmt.Println(respMsg) if err != nil { t.Errorf("Error %s\n", err) } @@ -279,23 +280,23 @@ func TestMailboxRegistration(t *testing.T) { mailbox.DeleteAllPendingRegistrationsFromDatabase(a.DB) } -func TestMailboxRegistrationPaid(t *testing.T) { - var msg mailbox.MailboxRegistrationRequest - - // Make paid - registrationUpdateFee := talerutil.NewAmount("KUDOS", 1, 0) - monthlyFee := talerutil.NewAmount("KUDOS", 2, 0) - a.RegistrationUpdateFee = &registrationUpdateFee - a.MonthlyFee = &monthlyFee +func createMailboxMetadata(encKey []byte, signKey []byte, info string) mailbox.MailboxMetadata { + var mb mailbox.MailboxMetadata + aliceSigningKey := util.Base32CrockfordEncode(signKey) + mb.EncryptionKey = util.Base32CrockfordEncode(encKey) + mb.EncryptionKeyType = "X25519" + mb.Expiration.Seconds = uint64(time.Now().Add(time.Hour * 24 * 365).Unix()) + mb.SigningKey = aliceSigningKey + mb.SigningKeyType = "EdDSA" + if info != "" { + mb.Info = info + } + return mb +} - // Dummy pubkey - encKey := make([]byte, 32) - aliceSigningKey := util.Base32CrockfordEncode(testAliceSigningKey) - msg.MailboxMetadata.EncryptionKey = util.Base32CrockfordEncode(encKey) - msg.MailboxMetadata.EncryptionKeyType = "X25519" - msg.MailboxMetadata.Expiration.Seconds = uint64(time.Now().Add(time.Hour * 24 * 365).Unix()) - msg.MailboxMetadata.SigningKey = aliceSigningKey - msg.MailboxMetadata.SigningKeyType = "EdDSA" +func createMailboxRegistrationMessage(encKey []byte, md mailbox.MailboxMetadata) mailbox.MailboxRegistrationRequest { + var msg mailbox.MailboxRegistrationRequest + msg.MailboxMetadata = md expNbo := make([]byte, 8) binary.BigEndian.PutUint64(expNbo, msg.MailboxMetadata.Expiration.Seconds) h := sha512.New() @@ -309,10 +310,58 @@ func TestMailboxRegistrationPaid(t *testing.T) { binary.BigEndian.PutUint32(purp, gana.TalerSignaturePurposeMailboxRegister) copy(signedMsg[8:], h.Sum(nil)) sig := ed25519.Sign(testAliceSigningKeyPriv, signedMsg[0:]) - if !ed25519.Verify(testAliceSigningKey, signedMsg[0:], sig) { - t.Errorf("Signature invalid!") - } msg.Signature = util.Base32CrockfordEncode(sig) + return msg +} + +func TestMailboxRegistrationWithInfo(t *testing.T) { + var msg mailbox.MailboxRegistrationRequest + encKey := make([]byte, 32) + md := createMailboxMetadata(encKey, testAliceSigningKey, "") + msg = createMailboxRegistrationMessage(encKey, md) + jsonMsg, _ := json.Marshal(msg) + req, _ := http.NewRequest("POST", "/register", bytes.NewReader(jsonMsg)) + response := executeRequest(req) + checkResponseCode(t, http.StatusNoContent, response.Code) + req, _ = http.NewRequest("GET", "/info/"+testAliceHashedSigningKeyString, nil) + response = executeRequest(req) + checkResponseCode(t, http.StatusOK, response.Code) + body := response.Body.String() + if body == "" { + t.Errorf("Expected response, Got %s", body) + return + } + var respMsg mailbox.MailboxMetadata + err := json.NewDecoder(response.Body).Decode(&respMsg) + if err != nil { + t.Errorf("Error %s\n", err) + } + if respMsg.SigningKey != msg.MailboxMetadata.SigningKey { + fmt.Printf("Keys mismatch! %v %v\n", respMsg, msg.MailboxMetadata) + } + if respMsg.EncryptionKey != msg.MailboxMetadata.EncryptionKey { + fmt.Printf("Keys mismatch! %v %v\n", respMsg, msg.MailboxMetadata) + } + if respMsg.Info != "Hello World" { + fmt.Printf("Info field missing! %v %v\n", respMsg, msg.MailboxMetadata) + } + mailbox.DeleteAllMailboxesFromDatabase(a.DB) + mailbox.DeleteAllPendingRegistrationsFromDatabase(a.DB) +} + +func TestMailboxRegistrationPaid(t *testing.T) { + var msg mailbox.MailboxRegistrationRequest + + // Make paid + registrationUpdateFee := talerutil.NewAmount("KUDOS", 1, 0) + monthlyFee := talerutil.NewAmount("KUDOS", 2, 0) + a.RegistrationUpdateFee = &registrationUpdateFee + a.MonthlyFee = &monthlyFee + + // Dummy pubkey + encKey := make([]byte, 32) + md := createMailboxMetadata(encKey, testAliceSigningKey, "") + msg = createMailboxRegistrationMessage(encKey, md) jsonMsg, _ := json.Marshal(msg) req, _ := http.NewRequest("POST", "/register", bytes.NewReader(jsonMsg)) response := executeRequest(req)