|
|
- package Messages_test
-
- import (
- "bytes"
- "encoding/base64"
- "encoding/json"
- "net/http"
- "testing"
- "time"
-
- "git.tovijaeschke.xyz/tovi/Envelope/Backend/Database"
- "git.tovijaeschke.xyz/tovi/Envelope/Backend/Database/Seeder"
- "git.tovijaeschke.xyz/tovi/Envelope/Backend/Tests"
- "github.com/gofrs/uuid"
- )
-
- // TODO: Write test for message expiry
- func Test_CreateMessage(t *testing.T) {
- client, ts, err := Tests.InitTestEnv()
- if err != nil {
- t.Errorf("Expected nil, recieved %s", err.Error())
- return
- }
-
- u, err := Database.GetUserByUsername("test")
-
- key, err := Seeder.GenerateAesKey()
- if err != nil {
- t.Errorf("Expected nil, recieved %s", err.Error())
- return
- }
-
- dataCiphertext, err := key.AesEncrypt([]byte("Test message..."))
- if err != nil {
- t.Errorf("Expected nil, recieved %s", err.Error())
- return
- }
-
- senderIDCiphertext, err := key.AesEncrypt([]byte(u.ID.String()))
- if err != nil {
- t.Errorf("Expected nil, recieved %s", err.Error())
- return
- }
-
- id, err := uuid.NewV4()
- if err != nil {
- t.Errorf("Expected nil, recieved %s", err.Error())
- return
- }
-
- id2, err := uuid.NewV4()
- if err != nil {
- t.Errorf("Expected nil, recieved %s", err.Error())
- return
- }
-
- d := []struct {
- MessageData struct {
- ID uuid.UUID `json:"id"`
- Data string `json:"data"`
- SenderID string `json:"sender_id"`
- SymmetricKey string `json:"symmetric_key"`
- } `json:"message_data"`
- Messages []struct {
- ID uuid.UUID `json:"id"`
- MessageDataID uuid.UUID `json:"message_data_id"`
- SymmetricKey string `json:"symmetric_key"`
- AssociationKey string `json:"association_key"`
- Expiry time.Time `json:"expiry"`
- } `json:"message"`
- }{
- {
- MessageData: struct {
- ID uuid.UUID `json:"id"`
- Data string `json:"data"`
- SenderID string `json:"sender_id"`
- SymmetricKey string `json:"symmetric_key"`
- }{
- ID: id,
- Data: base64.StdEncoding.EncodeToString(dataCiphertext),
- SenderID: base64.StdEncoding.EncodeToString(senderIDCiphertext),
- SymmetricKey: "",
- },
- Messages: []struct {
- ID uuid.UUID `json:"id"`
- MessageDataID uuid.UUID `json:"message_data_id"`
- SymmetricKey string `json:"symmetric_key"`
- AssociationKey string `json:"association_key"`
- Expiry time.Time `json:"expiry"`
- }{
- {
- ID: id2,
- MessageDataID: id,
- SymmetricKey: "",
- AssociationKey: "",
- Expiry: time.Now(),
- },
- },
- },
- }
-
- jsonStr, _ := json.Marshal(d)
- req, _ := http.NewRequest("POST", ts.URL+"/api/v1/auth/message", bytes.NewBuffer(jsonStr))
- req.Header.Set("Content-Type", "application/json")
-
- resp, err := client.Do(req)
- if err != nil {
- t.Errorf("Expected nil, recieved %s", err.Error())
- return
- }
-
- if resp.StatusCode != http.StatusNoContent {
- t.Errorf("Expected %d, recieved %d", http.StatusNoContent, resp.StatusCode)
- return
- }
-
- var m Database.Message
- err = Database.DB.First(&m).Error
- if err != nil {
- t.Errorf("Expected conversation detail record, received %s", err.Error())
- return
- }
-
- var md Database.MessageData
- err = Database.DB.First(&md).Error
- if err != nil {
- t.Errorf("Expected conversation detail record, received %s", err.Error())
- return
- }
-
- }
|