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.

124 lines
2.6 KiB

2 years ago
  1. package Friends_test
  2. import (
  3. "encoding/base64"
  4. "encoding/json"
  5. "fmt"
  6. "io/ioutil"
  7. "net/http"
  8. "testing"
  9. "time"
  10. "git.tovijaeschke.xyz/tovi/Capsule/Backend/Database"
  11. "git.tovijaeschke.xyz/tovi/Capsule/Backend/Database/Seeder"
  12. "git.tovijaeschke.xyz/tovi/Capsule/Backend/Models"
  13. "git.tovijaeschke.xyz/tovi/Capsule/Backend/Tests"
  14. )
  15. func Test_FriendRequestList(t *testing.T) {
  16. client, ts, err := Tests.InitTestEnv()
  17. if err != nil {
  18. t.Errorf("Expected nil, recieved %s", err.Error())
  19. return
  20. }
  21. u, err := Database.GetUserByUsername("test")
  22. if err != nil {
  23. t.Errorf("Expected nil, recieved %s", err.Error())
  24. return
  25. }
  26. key, err := Seeder.GenerateAesKey()
  27. if err != nil {
  28. t.Errorf("Expected nil, recieved %s", err.Error())
  29. return
  30. }
  31. for i := 0; i < 30; i++ {
  32. u2, err := Tests.InitTestCreateUser(fmt.Sprintf("test%d", i))
  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 := Models.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. if i > 20 {
  61. friendReq.AcceptedAt.Time = time.Now()
  62. friendReq.AcceptedAt.Valid = true
  63. }
  64. err = Database.CreateFriendRequest(&friendReq)
  65. if err != nil {
  66. t.Errorf("Expected nil, recieved %s", err.Error())
  67. return
  68. }
  69. }
  70. req, _ := http.NewRequest("GET", ts.URL+"/api/v1/auth/friend_requests", nil)
  71. resp, err := client.Do(req)
  72. if err != nil {
  73. t.Errorf("Expected nil, recieved %s", err.Error())
  74. return
  75. }
  76. if resp.StatusCode != http.StatusOK {
  77. t.Errorf("Expected %d, recieved %d", http.StatusOK, resp.StatusCode)
  78. return
  79. }
  80. requestBody, err := ioutil.ReadAll(resp.Body)
  81. if err != nil {
  82. t.Errorf("Expected %d, recieved %d", http.StatusOK, resp.StatusCode)
  83. return
  84. }
  85. var users []Models.FriendRequest
  86. json.Unmarshal(requestBody, &users)
  87. if len(users) != 20 {
  88. t.Errorf("Expected %d, recieved %d", 1, len(users))
  89. return
  90. }
  91. for i := 0; i < 20; i++ {
  92. eq := true
  93. if i > 8 {
  94. eq = false
  95. }
  96. if users[i].AcceptedAt.Valid != eq {
  97. t.Errorf(
  98. "Expected %v, recieved %v, on user %d",
  99. eq, users[i].AcceptedAt.Valid,
  100. i,
  101. )
  102. return
  103. }
  104. }
  105. }