gitea源码

client_test.go 1.3KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. // Copyright 2022 The Gitea Authors. All rights reserved.
  2. // SPDX-License-Identifier: MIT
  3. package activitypub
  4. import (
  5. "fmt"
  6. "io"
  7. "net/http"
  8. "net/http/httptest"
  9. "testing"
  10. "code.gitea.io/gitea/models/unittest"
  11. user_model "code.gitea.io/gitea/models/user"
  12. "code.gitea.io/gitea/modules/setting"
  13. "github.com/stretchr/testify/assert"
  14. )
  15. func TestActivityPubSignedPost(t *testing.T) {
  16. assert.NoError(t, unittest.PrepareTestDatabase())
  17. user := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: 1})
  18. pubID := "https://example.com/pubID"
  19. c, err := NewClient(t.Context(), user, pubID)
  20. assert.NoError(t, err)
  21. expected := "BODY"
  22. srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
  23. assert.Regexp(t, "^"+setting.Federation.DigestAlgorithm, r.Header.Get("Digest"))
  24. assert.Contains(t, r.Header.Get("Signature"), pubID)
  25. assert.Equal(t, ActivityStreamsContentType, r.Header.Get("Content-Type"))
  26. body, err := io.ReadAll(r.Body)
  27. assert.NoError(t, err)
  28. assert.Equal(t, expected, string(body))
  29. fmt.Fprint(w, expected)
  30. }))
  31. defer srv.Close()
  32. r, err := c.Post([]byte(expected), srv.URL)
  33. assert.NoError(t, err)
  34. defer r.Body.Close()
  35. body, err := io.ReadAll(r.Body)
  36. assert.NoError(t, err)
  37. assert.Equal(t, expected, string(body))
  38. }