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.

client_test.go 1.3KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  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. "regexp"
  10. "testing"
  11. "code.gitea.io/gitea/models/db"
  12. "code.gitea.io/gitea/models/unittest"
  13. user_model "code.gitea.io/gitea/models/user"
  14. "code.gitea.io/gitea/modules/setting"
  15. "github.com/stretchr/testify/assert"
  16. )
  17. func TestActivityPubSignedPost(t *testing.T) {
  18. assert.NoError(t, unittest.PrepareTestDatabase())
  19. user := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: 1})
  20. pubID := "https://example.com/pubID"
  21. c, err := NewClient(db.DefaultContext, user, pubID)
  22. assert.NoError(t, err)
  23. expected := "BODY"
  24. srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
  25. assert.Regexp(t, regexp.MustCompile("^"+setting.Federation.DigestAlgorithm), r.Header.Get("Digest"))
  26. assert.Contains(t, r.Header.Get("Signature"), pubID)
  27. assert.Equal(t, r.Header.Get("Content-Type"), ActivityStreamsContentType)
  28. body, err := io.ReadAll(r.Body)
  29. assert.NoError(t, err)
  30. assert.Equal(t, expected, string(body))
  31. fmt.Fprint(w, expected)
  32. }))
  33. defer srv.Close()
  34. r, err := c.Post([]byte(expected), srv.URL)
  35. assert.NoError(t, err)
  36. defer r.Body.Close()
  37. body, err := io.ReadAll(r.Body)
  38. assert.NoError(t, err)
  39. assert.Equal(t, expected, string(body))
  40. }