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