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.

123 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/Envelope/Backend/Database"
  11. "git.tovijaeschke.xyz/tovi/Envelope/Backend/Database/Seeder"
  12. "git.tovijaeschke.xyz/tovi/Envelope/Backend/Tests"
  13. )
  14. func Test_FriendRequestList(t *testing.T) {
  15. client, ts, err := Tests.InitTestEnv()
  16. if err != nil {
  17. t.Errorf("Expected nil, recieved %s", err.Error())
  18. return
  19. }
  20. u, err := Database.GetUserByUsername("test")
  21. if err != nil {
  22. t.Errorf("Expected nil, recieved %s", err.Error())
  23. return
  24. }
  25. key, err := Seeder.GenerateAesKey()
  26. if err != nil {
  27. t.Errorf("Expected nil, recieved %s", err.Error())
  28. return
  29. }
  30. for i := 0; i < 30; i++ {
  31. u2, err := Tests.InitTestCreateUser(fmt.Sprintf("test%d", i))
  32. decodedPublicKey := Seeder.GetPubKey()
  33. encPublicKey, err := key.AesEncrypt([]byte(Seeder.PublicKey))
  34. if err != nil {
  35. t.Errorf("Expected nil, recieved %s", err.Error())
  36. return
  37. }
  38. friendReq := Database.FriendRequest{
  39. UserID: u.ID,
  40. FriendID: base64.StdEncoding.EncodeToString(
  41. Seeder.EncryptWithPublicKey(
  42. []byte(u2.ID.String()),
  43. decodedPublicKey,
  44. ),
  45. ),
  46. FriendUsername: base64.StdEncoding.EncodeToString(
  47. Seeder.EncryptWithPublicKey(
  48. []byte(u2.Username),
  49. decodedPublicKey,
  50. ),
  51. ),
  52. FriendPublicAsymmetricKey: base64.StdEncoding.EncodeToString(
  53. encPublicKey,
  54. ),
  55. SymmetricKey: base64.StdEncoding.EncodeToString(
  56. Seeder.EncryptWithPublicKey(key.Key, decodedPublicKey),
  57. ),
  58. }
  59. if i > 20 {
  60. friendReq.AcceptedAt.Time = time.Now()
  61. friendReq.AcceptedAt.Valid = true
  62. }
  63. err = (&friendReq).CreateFriendRequest()
  64. if err != nil {
  65. t.Errorf("Expected nil, recieved %s", err.Error())
  66. return
  67. }
  68. }
  69. req, _ := http.NewRequest("GET", ts.URL+"/api/v1/auth/friend_requests", nil)
  70. resp, err := client.Do(req)
  71. if err != nil {
  72. t.Errorf("Expected nil, recieved %s", err.Error())
  73. return
  74. }
  75. if resp.StatusCode != http.StatusOK {
  76. t.Errorf("Expected %d, recieved %d", http.StatusOK, resp.StatusCode)
  77. return
  78. }
  79. requestBody, err := ioutil.ReadAll(resp.Body)
  80. if err != nil {
  81. t.Errorf("Expected %d, recieved %d", http.StatusOK, resp.StatusCode)
  82. return
  83. }
  84. var users Database.FriendRequestList
  85. json.Unmarshal(requestBody, &users)
  86. if len(users) != 20 {
  87. t.Errorf("Expected %d, recieved %d", 1, len(users))
  88. return
  89. }
  90. for i := 0; i < 20; i++ {
  91. eq := true
  92. if i > 8 {
  93. eq = false
  94. }
  95. if users[i].AcceptedAt.Valid != eq {
  96. t.Errorf(
  97. "Expected %v, recieved %v, on user %d",
  98. eq, users[i].AcceptedAt.Valid,
  99. i,
  100. )
  101. return
  102. }
  103. }
  104. }