Encrypted messaging app
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

136 lines
2.9 KiB

2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
  1. package Friends_test
  2. import (
  3. "bytes"
  4. "encoding/base64"
  5. "encoding/json"
  6. "fmt"
  7. "net/http"
  8. "testing"
  9. "git.tovijaeschke.xyz/tovi/Envelope/Backend/Database"
  10. "git.tovijaeschke.xyz/tovi/Envelope/Backend/Database/Seeder"
  11. "git.tovijaeschke.xyz/tovi/Envelope/Backend/Tests"
  12. )
  13. func Test_AcceptFriendRequest(t *testing.T) {
  14. client, ts, err := Tests.InitTestEnv()
  15. if err != nil {
  16. t.Errorf("Expected nil, recieved %s", err.Error())
  17. return
  18. }
  19. u, err := Database.GetUserByUsername("test")
  20. if err != nil {
  21. t.Errorf("Expected nil, recieved %s", err.Error())
  22. return
  23. }
  24. u2, err := Tests.InitTestCreateUser("test2")
  25. if err != nil {
  26. t.Errorf("Expected nil, recieved %s", err.Error())
  27. return
  28. }
  29. key, err := Seeder.GenerateAesKey()
  30. if err != nil {
  31. t.Errorf("Expected nil, recieved %s", err.Error())
  32. return
  33. }
  34. decodedPublicKey := Seeder.GetPubKey()
  35. encPublicKey, err := key.AesEncrypt([]byte(Seeder.PublicKey))
  36. if err != nil {
  37. t.Errorf("Expected nil, recieved %s", err.Error())
  38. return
  39. }
  40. friendReq := Database.FriendRequest{
  41. UserID: u.ID,
  42. FriendID: base64.StdEncoding.EncodeToString(
  43. Seeder.EncryptWithPublicKey(
  44. []byte(u2.ID.String()),
  45. decodedPublicKey,
  46. ),
  47. ),
  48. FriendUsername: base64.StdEncoding.EncodeToString(
  49. Seeder.EncryptWithPublicKey(
  50. []byte(u2.Username),
  51. decodedPublicKey,
  52. ),
  53. ),
  54. FriendPublicAsymmetricKey: base64.StdEncoding.EncodeToString(
  55. encPublicKey,
  56. ),
  57. SymmetricKey: base64.StdEncoding.EncodeToString(
  58. Seeder.EncryptWithPublicKey(key.Key, decodedPublicKey),
  59. ),
  60. }
  61. err = (&friendReq).CreateFriendRequest()
  62. if err != nil {
  63. t.Errorf("Expected nil, recieved %s", err.Error())
  64. return
  65. }
  66. friendReqResponse := Database.FriendRequest{
  67. UserID: u2.ID,
  68. FriendID: base64.StdEncoding.EncodeToString(
  69. Seeder.EncryptWithPublicKey(
  70. []byte(u.ID.String()),
  71. decodedPublicKey,
  72. ),
  73. ),
  74. FriendUsername: base64.StdEncoding.EncodeToString(
  75. Seeder.EncryptWithPublicKey(
  76. []byte(u.Username),
  77. decodedPublicKey,
  78. ),
  79. ),
  80. FriendPublicAsymmetricKey: base64.StdEncoding.EncodeToString(
  81. encPublicKey,
  82. ),
  83. SymmetricKey: base64.StdEncoding.EncodeToString(
  84. Seeder.EncryptWithPublicKey(key.Key, decodedPublicKey),
  85. ),
  86. }
  87. jsonStr, _ := json.Marshal(friendReqResponse)
  88. req, _ := http.NewRequest(
  89. "POST",
  90. fmt.Sprintf(
  91. "%s/api/v1/auth/friend_request/%s",
  92. ts.URL,
  93. friendReq.ID,
  94. ),
  95. bytes.NewBuffer(jsonStr),
  96. )
  97. req.Header.Set("Content-Type", "application/json")
  98. resp, err := client.Do(req)
  99. if err != nil {
  100. t.Errorf("Expected nil, recieved %s", err.Error())
  101. return
  102. }
  103. if resp.StatusCode != http.StatusNoContent {
  104. t.Errorf("Expected %d, recieved %d", http.StatusNoContent, resp.StatusCode)
  105. return
  106. }
  107. var reqs []Database.FriendRequest
  108. err = Database.DB.Find(&reqs).Error
  109. if err != nil {
  110. t.Errorf("Expected nil, recieved %s", err.Error())
  111. return
  112. }
  113. for _, r := range reqs {
  114. if r.AcceptedAt.Valid != true {
  115. t.Errorf("Expected true, recieved false")
  116. return
  117. }
  118. }
  119. }