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:
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 = ®istrationUpdateFee
- 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 = ®istrationUpdateFee
+ 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)