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.

203 lines
4.6 KiB

2 years ago
2 years ago
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. "net/http"
  7. "testing"
  8. "git.tovijaeschke.xyz/tovi/Envelope/Backend/Database"
  9. "git.tovijaeschke.xyz/tovi/Envelope/Backend/Database/Seeder"
  10. "git.tovijaeschke.xyz/tovi/Envelope/Backend/Tests"
  11. )
  12. func Test_CreateFriendRequest(t *testing.T) {
  13. client, ts, err := Tests.InitTestEnv()
  14. if err != nil {
  15. t.Errorf("Expected nil, recieved %s", err.Error())
  16. return
  17. }
  18. u, err := Database.GetUserByUsername("test")
  19. if err != nil {
  20. t.Errorf("Expected nil, recieved %s", err.Error())
  21. return
  22. }
  23. u2, err := Tests.InitTestCreateUser("test2")
  24. if err != nil {
  25. t.Errorf("Expected nil, recieved %s", err.Error())
  26. return
  27. }
  28. key, err := Seeder.GenerateAesKey()
  29. if err != nil {
  30. t.Errorf("Expected nil, recieved %s", err.Error())
  31. return
  32. }
  33. decodedPublicKey := Seeder.GetPubKey()
  34. encPublicKey, err := key.AesEncrypt([]byte(Seeder.PublicKey))
  35. if err != nil {
  36. t.Errorf("Expected nil, recieved %s", err.Error())
  37. return
  38. }
  39. friendReq := Database.FriendRequest{
  40. UserID: u.ID,
  41. FriendID: base64.StdEncoding.EncodeToString(
  42. Seeder.EncryptWithPublicKey(
  43. []byte(u2.ID.String()),
  44. decodedPublicKey,
  45. ),
  46. ),
  47. FriendUsername: base64.StdEncoding.EncodeToString(
  48. Seeder.EncryptWithPublicKey(
  49. []byte(u2.Username),
  50. decodedPublicKey,
  51. ),
  52. ),
  53. FriendPublicAsymmetricKey: base64.StdEncoding.EncodeToString(
  54. encPublicKey,
  55. ),
  56. SymmetricKey: base64.StdEncoding.EncodeToString(
  57. Seeder.EncryptWithPublicKey(key.Key, decodedPublicKey),
  58. ),
  59. }
  60. jsonStr, _ := json.Marshal(friendReq)
  61. req, _ := http.NewRequest("POST", ts.URL+"/api/v1/auth/friend_request", bytes.NewBuffer(jsonStr))
  62. req.Header.Set("Content-Type", "application/json")
  63. resp, err := client.Do(req)
  64. if err != nil {
  65. t.Errorf("Expected nil, recieved %s", err.Error())
  66. return
  67. }
  68. if resp.StatusCode != http.StatusOK {
  69. t.Errorf("Expected %d, recieved %d", http.StatusOK, resp.StatusCode)
  70. return
  71. }
  72. var r Database.FriendRequest
  73. err = Database.DB.First(&r).Error
  74. if err != nil {
  75. t.Errorf("Expected nil, recieved %s", err.Error())
  76. return
  77. }
  78. if r.AcceptedAt.Valid == true {
  79. t.Errorf("Expected false, recieved true")
  80. return
  81. }
  82. }
  83. func Test_CreateFriendRequestQrCode(t *testing.T) {
  84. client, ts, err := Tests.InitTestEnv()
  85. if err != nil {
  86. t.Errorf("Expected nil, recieved %s", err.Error())
  87. return
  88. }
  89. u, err := Database.GetUserByUsername("test")
  90. if err != nil {
  91. t.Errorf("Expected nil, recieved %s", err.Error())
  92. return
  93. }
  94. u2, err := Tests.InitTestCreateUser("test2")
  95. if err != nil {
  96. t.Errorf("Expected nil, recieved %s", err.Error())
  97. return
  98. }
  99. key, err := Seeder.GenerateAesKey()
  100. if err != nil {
  101. t.Errorf("Expected nil, recieved %s", err.Error())
  102. return
  103. }
  104. decodedPublicKey := Seeder.GetPubKey()
  105. encPublicKey, err := key.AesEncrypt([]byte(Seeder.PublicKey))
  106. if err != nil {
  107. t.Errorf("Expected nil, recieved %s", err.Error())
  108. return
  109. }
  110. friendReq := Database.FriendRequest{
  111. UserID: u.ID,
  112. FriendID: base64.StdEncoding.EncodeToString(
  113. Seeder.EncryptWithPublicKey(
  114. []byte(u2.ID.String()),
  115. decodedPublicKey,
  116. ),
  117. ),
  118. FriendUsername: base64.StdEncoding.EncodeToString(
  119. Seeder.EncryptWithPublicKey(
  120. []byte(u2.Username),
  121. decodedPublicKey,
  122. ),
  123. ),
  124. FriendPublicAsymmetricKey: base64.StdEncoding.EncodeToString(
  125. encPublicKey,
  126. ),
  127. SymmetricKey: base64.StdEncoding.EncodeToString(
  128. Seeder.EncryptWithPublicKey(key.Key, decodedPublicKey),
  129. ),
  130. }
  131. friendReq2 := Database.FriendRequest{
  132. UserID: u2.ID,
  133. FriendID: base64.StdEncoding.EncodeToString(
  134. Seeder.EncryptWithPublicKey(
  135. []byte(u.ID.String()),
  136. decodedPublicKey,
  137. ),
  138. ),
  139. FriendUsername: base64.StdEncoding.EncodeToString(
  140. Seeder.EncryptWithPublicKey(
  141. []byte(u.Username),
  142. decodedPublicKey,
  143. ),
  144. ),
  145. FriendPublicAsymmetricKey: base64.StdEncoding.EncodeToString(
  146. encPublicKey,
  147. ),
  148. SymmetricKey: base64.StdEncoding.EncodeToString(
  149. Seeder.EncryptWithPublicKey(key.Key, decodedPublicKey),
  150. ),
  151. }
  152. jsonStr, _ := json.Marshal([]Database.FriendRequest{friendReq, friendReq2})
  153. req, _ := http.NewRequest("POST", ts.URL+"/api/v1/auth/friend_request/qr_code", bytes.NewBuffer(jsonStr))
  154. req.Header.Set("Content-Type", "application/json")
  155. resp, err := client.Do(req)
  156. if err != nil {
  157. t.Errorf("Expected nil, recieved %s", err.Error())
  158. return
  159. }
  160. if resp.StatusCode != http.StatusOK {
  161. t.Errorf("Expected %d, recieved %d", http.StatusOK, resp.StatusCode)
  162. return
  163. }
  164. var r Database.FriendRequest
  165. err = Database.DB.First(&r).Error
  166. if err != nil {
  167. t.Errorf("Expected nil, recieved %s", err.Error())
  168. return
  169. }
  170. if r.AcceptedAt.Valid == false {
  171. t.Errorf("Expected true, recieved false")
  172. return
  173. }
  174. }