mirror of
				https://github.com/superseriousbusiness/gotosocial.git
				synced 2025-10-30 19:42:26 -05:00 
			
		
		
		
	[chore] Remove omitempty on account source; refactor tests to use prettyprint json (#1337)
* remove omitEmpty tag on account source items * update tests
This commit is contained in:
		
					parent
					
						
							
								5318054808
							
						
					
				
			
			
				commit
				
					
						eafd73c292
					
				
			
		
					 18 changed files with 1605 additions and 163 deletions
				
			
		|  | @ -19,6 +19,7 @@ | ||||||
| package users_test | package users_test | ||||||
| 
 | 
 | ||||||
| import ( | import ( | ||||||
|  | 	"bytes" | ||||||
| 	"context" | 	"context" | ||||||
| 	"encoding/json" | 	"encoding/json" | ||||||
| 	"io/ioutil" | 	"io/ioutil" | ||||||
|  | @ -76,7 +77,15 @@ func (suite *OutboxGetTestSuite) TestGetOutbox() { | ||||||
| 	defer result.Body.Close() | 	defer result.Body.Close() | ||||||
| 	b, err := ioutil.ReadAll(result.Body) | 	b, err := ioutil.ReadAll(result.Body) | ||||||
| 	suite.NoError(err) | 	suite.NoError(err) | ||||||
| 	suite.Equal(`{"@context":"https://www.w3.org/ns/activitystreams","first":"http://localhost:8080/users/the_mighty_zork/outbox?page=true","id":"http://localhost:8080/users/the_mighty_zork/outbox","type":"OrderedCollection"}`, string(b)) | 	dst := new(bytes.Buffer) | ||||||
|  | 	err = json.Indent(dst, b, "", "  ") | ||||||
|  | 	suite.NoError(err) | ||||||
|  | 	suite.Equal(`{ | ||||||
|  |   "@context": "https://www.w3.org/ns/activitystreams", | ||||||
|  |   "first": "http://localhost:8080/users/the_mighty_zork/outbox?page=true", | ||||||
|  |   "id": "http://localhost:8080/users/the_mighty_zork/outbox", | ||||||
|  |   "type": "OrderedCollection" | ||||||
|  | }`, dst.String()) | ||||||
| 
 | 
 | ||||||
| 	m := make(map[string]interface{}) | 	m := make(map[string]interface{}) | ||||||
| 	err = json.Unmarshal(b, &m) | 	err = json.Unmarshal(b, &m) | ||||||
|  | @ -135,7 +144,26 @@ func (suite *OutboxGetTestSuite) TestGetOutboxFirstPage() { | ||||||
| 	defer result.Body.Close() | 	defer result.Body.Close() | ||||||
| 	b, err := ioutil.ReadAll(result.Body) | 	b, err := ioutil.ReadAll(result.Body) | ||||||
| 	suite.NoError(err) | 	suite.NoError(err) | ||||||
| 	suite.Equal(`{"@context":"https://www.w3.org/ns/activitystreams","id":"http://localhost:8080/users/the_mighty_zork/outbox?page=true","next":"http://localhost:8080/users/the_mighty_zork/outbox?page=true\u0026max_id=01F8MHAMCHF6Y650WCRSCP4WMY","orderedItems":{"actor":"http://localhost:8080/users/the_mighty_zork","cc":"http://localhost:8080/users/the_mighty_zork/followers","id":"http://localhost:8080/users/the_mighty_zork/statuses/01F8MHAMCHF6Y650WCRSCP4WMY/activity","object":"http://localhost:8080/users/the_mighty_zork/statuses/01F8MHAMCHF6Y650WCRSCP4WMY","published":"2021-10-20T10:40:37Z","to":"https://www.w3.org/ns/activitystreams#Public","type":"Create"},"partOf":"http://localhost:8080/users/the_mighty_zork/outbox","prev":"http://localhost:8080/users/the_mighty_zork/outbox?page=true\u0026min_id=01F8MHAMCHF6Y650WCRSCP4WMY","type":"OrderedCollectionPage"}`, string(b)) | 	dst := new(bytes.Buffer) | ||||||
|  | 	err = json.Indent(dst, b, "", "  ") | ||||||
|  | 	suite.NoError(err) | ||||||
|  | 	suite.Equal(`{ | ||||||
|  |   "@context": "https://www.w3.org/ns/activitystreams", | ||||||
|  |   "id": "http://localhost:8080/users/the_mighty_zork/outbox?page=true", | ||||||
|  |   "next": "http://localhost:8080/users/the_mighty_zork/outbox?page=true\u0026max_id=01F8MHAMCHF6Y650WCRSCP4WMY", | ||||||
|  |   "orderedItems": { | ||||||
|  |     "actor": "http://localhost:8080/users/the_mighty_zork", | ||||||
|  |     "cc": "http://localhost:8080/users/the_mighty_zork/followers", | ||||||
|  |     "id": "http://localhost:8080/users/the_mighty_zork/statuses/01F8MHAMCHF6Y650WCRSCP4WMY/activity", | ||||||
|  |     "object": "http://localhost:8080/users/the_mighty_zork/statuses/01F8MHAMCHF6Y650WCRSCP4WMY", | ||||||
|  |     "published": "2021-10-20T10:40:37Z", | ||||||
|  |     "to": "https://www.w3.org/ns/activitystreams#Public", | ||||||
|  |     "type": "Create" | ||||||
|  |   }, | ||||||
|  |   "partOf": "http://localhost:8080/users/the_mighty_zork/outbox", | ||||||
|  |   "prev": "http://localhost:8080/users/the_mighty_zork/outbox?page=true\u0026min_id=01F8MHAMCHF6Y650WCRSCP4WMY", | ||||||
|  |   "type": "OrderedCollectionPage" | ||||||
|  | }`, dst.String()) | ||||||
| 
 | 
 | ||||||
| 	m := make(map[string]interface{}) | 	m := make(map[string]interface{}) | ||||||
| 	err = json.Unmarshal(b, &m) | 	err = json.Unmarshal(b, &m) | ||||||
|  | @ -198,7 +226,16 @@ func (suite *OutboxGetTestSuite) TestGetOutboxNextPage() { | ||||||
| 	defer result.Body.Close() | 	defer result.Body.Close() | ||||||
| 	b, err := ioutil.ReadAll(result.Body) | 	b, err := ioutil.ReadAll(result.Body) | ||||||
| 	suite.NoError(err) | 	suite.NoError(err) | ||||||
| 	suite.Equal(`{"@context":"https://www.w3.org/ns/activitystreams","id":"http://localhost:8080/users/the_mighty_zork/outbox?page=true\u0026maxID=01F8MHAMCHF6Y650WCRSCP4WMY","orderedItems":[],"partOf":"http://localhost:8080/users/the_mighty_zork/outbox","type":"OrderedCollectionPage"}`, string(b)) | 	dst := new(bytes.Buffer) | ||||||
|  | 	err = json.Indent(dst, b, "", "  ") | ||||||
|  | 	suite.NoError(err) | ||||||
|  | 	suite.Equal(`{ | ||||||
|  |   "@context": "https://www.w3.org/ns/activitystreams", | ||||||
|  |   "id": "http://localhost:8080/users/the_mighty_zork/outbox?page=true\u0026maxID=01F8MHAMCHF6Y650WCRSCP4WMY", | ||||||
|  |   "orderedItems": [], | ||||||
|  |   "partOf": "http://localhost:8080/users/the_mighty_zork/outbox", | ||||||
|  |   "type": "OrderedCollectionPage" | ||||||
|  | }`, dst.String()) | ||||||
| 
 | 
 | ||||||
| 	m := make(map[string]interface{}) | 	m := make(map[string]interface{}) | ||||||
| 	err = json.Unmarshal(b, &m) | 	err = json.Unmarshal(b, &m) | ||||||
|  |  | ||||||
|  | @ -19,6 +19,8 @@ | ||||||
| package admin_test | package admin_test | ||||||
| 
 | 
 | ||||||
| import ( | import ( | ||||||
|  | 	"bytes" | ||||||
|  | 	"encoding/json" | ||||||
| 	"io" | 	"io" | ||||||
| 	"net/http" | 	"net/http" | ||||||
| 	"net/http/httptest" | 	"net/http/httptest" | ||||||
|  | @ -44,8 +46,19 @@ func (suite *EmojiCategoriesGetTestSuite) TestEmojiCategoriesGet() { | ||||||
| 	b, err := io.ReadAll(recorder.Body) | 	b, err := io.ReadAll(recorder.Body) | ||||||
| 	suite.NoError(err) | 	suite.NoError(err) | ||||||
| 	suite.NotNil(b) | 	suite.NotNil(b) | ||||||
| 
 | 	dst := new(bytes.Buffer) | ||||||
| 	suite.Equal(`[{"id":"01GGQ989PTT9PMRN4FZ1WWK2B9","name":"cute stuff"},{"id":"01GGQ8V4993XK67B2JB396YFB7","name":"reactions"}]`, string(b)) | 	err = json.Indent(dst, b, "", "  ") | ||||||
|  | 	suite.NoError(err) | ||||||
|  | 	suite.Equal(`[ | ||||||
|  |   { | ||||||
|  |     "id": "01GGQ989PTT9PMRN4FZ1WWK2B9", | ||||||
|  |     "name": "cute stuff" | ||||||
|  |   }, | ||||||
|  |   { | ||||||
|  |     "id": "01GGQ8V4993XK67B2JB396YFB7", | ||||||
|  |     "name": "reactions" | ||||||
|  |   } | ||||||
|  | ]`, dst.String()) | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| func TestEmojiCategoriesGetTestSuite(t *testing.T) { | func TestEmojiCategoriesGetTestSuite(t *testing.T) { | ||||||
|  |  | ||||||
|  | @ -19,7 +19,9 @@ | ||||||
| package admin_test | package admin_test | ||||||
| 
 | 
 | ||||||
| import ( | import ( | ||||||
|  | 	"bytes" | ||||||
| 	"context" | 	"context" | ||||||
|  | 	"encoding/json" | ||||||
| 	"io" | 	"io" | ||||||
| 	"net/http" | 	"net/http" | ||||||
| 	"net/http/httptest" | 	"net/http/httptest" | ||||||
|  | @ -48,8 +50,22 @@ func (suite *EmojiDeleteTestSuite) TestEmojiDelete1() { | ||||||
| 	b, err := io.ReadAll(recorder.Body) | 	b, err := io.ReadAll(recorder.Body) | ||||||
| 	suite.NoError(err) | 	suite.NoError(err) | ||||||
| 	suite.NotNil(b) | 	suite.NotNil(b) | ||||||
| 
 | 	dst := new(bytes.Buffer) | ||||||
| 	suite.Equal(`{"shortcode":"rainbow","url":"http://localhost:8080/fileserver/01AY6P665V14JJR0AFVRT7311Y/emoji/original/01F8MH9H8E4VG3KDYJR9EGPXCQ.png","static_url":"http://localhost:8080/fileserver/01AY6P665V14JJR0AFVRT7311Y/emoji/static/01F8MH9H8E4VG3KDYJR9EGPXCQ.png","visible_in_picker":true,"category":"reactions","id":"01F8MH9H8E4VG3KDYJR9EGPXCQ","disabled":false,"updated_at":"2021-09-20T10:40:37.000Z","total_file_size":47115,"content_type":"image/png","uri":"http://localhost:8080/emoji/01F8MH9H8E4VG3KDYJR9EGPXCQ"}`, string(b)) | 	err = json.Indent(dst, b, "", "  ") | ||||||
|  | 	suite.NoError(err) | ||||||
|  | 	suite.Equal(`{ | ||||||
|  |   "shortcode": "rainbow", | ||||||
|  |   "url": "http://localhost:8080/fileserver/01AY6P665V14JJR0AFVRT7311Y/emoji/original/01F8MH9H8E4VG3KDYJR9EGPXCQ.png", | ||||||
|  |   "static_url": "http://localhost:8080/fileserver/01AY6P665V14JJR0AFVRT7311Y/emoji/static/01F8MH9H8E4VG3KDYJR9EGPXCQ.png", | ||||||
|  |   "visible_in_picker": true, | ||||||
|  |   "category": "reactions", | ||||||
|  |   "id": "01F8MH9H8E4VG3KDYJR9EGPXCQ", | ||||||
|  |   "disabled": false, | ||||||
|  |   "updated_at": "2021-09-20T10:40:37.000Z", | ||||||
|  |   "total_file_size": 47115, | ||||||
|  |   "content_type": "image/png", | ||||||
|  |   "uri": "http://localhost:8080/emoji/01F8MH9H8E4VG3KDYJR9EGPXCQ" | ||||||
|  | }`, dst.String()) | ||||||
| 
 | 
 | ||||||
| 	// emoji should no longer be in the db | 	// emoji should no longer be in the db | ||||||
| 	dbEmoji, err := suite.db.GetEmojiByID(context.Background(), testEmoji.ID) | 	dbEmoji, err := suite.db.GetEmojiByID(context.Background(), testEmoji.ID) | ||||||
|  |  | ||||||
|  | @ -19,6 +19,8 @@ | ||||||
| package admin_test | package admin_test | ||||||
| 
 | 
 | ||||||
| import ( | import ( | ||||||
|  | 	"bytes" | ||||||
|  | 	"encoding/json" | ||||||
| 	"io" | 	"io" | ||||||
| 	"net/http" | 	"net/http" | ||||||
| 	"net/http/httptest" | 	"net/http/httptest" | ||||||
|  | @ -46,8 +48,22 @@ func (suite *EmojiGetTestSuite) TestEmojiGet1() { | ||||||
| 	b, err := io.ReadAll(recorder.Body) | 	b, err := io.ReadAll(recorder.Body) | ||||||
| 	suite.NoError(err) | 	suite.NoError(err) | ||||||
| 	suite.NotNil(b) | 	suite.NotNil(b) | ||||||
| 
 | 	dst := new(bytes.Buffer) | ||||||
| 	suite.Equal(`{"shortcode":"rainbow","url":"http://localhost:8080/fileserver/01AY6P665V14JJR0AFVRT7311Y/emoji/original/01F8MH9H8E4VG3KDYJR9EGPXCQ.png","static_url":"http://localhost:8080/fileserver/01AY6P665V14JJR0AFVRT7311Y/emoji/static/01F8MH9H8E4VG3KDYJR9EGPXCQ.png","visible_in_picker":true,"category":"reactions","id":"01F8MH9H8E4VG3KDYJR9EGPXCQ","disabled":false,"updated_at":"2021-09-20T10:40:37.000Z","total_file_size":47115,"content_type":"image/png","uri":"http://localhost:8080/emoji/01F8MH9H8E4VG3KDYJR9EGPXCQ"}`, string(b)) | 	err = json.Indent(dst, b, "", "  ") | ||||||
|  | 	suite.NoError(err) | ||||||
|  | 	suite.Equal(`{ | ||||||
|  |   "shortcode": "rainbow", | ||||||
|  |   "url": "http://localhost:8080/fileserver/01AY6P665V14JJR0AFVRT7311Y/emoji/original/01F8MH9H8E4VG3KDYJR9EGPXCQ.png", | ||||||
|  |   "static_url": "http://localhost:8080/fileserver/01AY6P665V14JJR0AFVRT7311Y/emoji/static/01F8MH9H8E4VG3KDYJR9EGPXCQ.png", | ||||||
|  |   "visible_in_picker": true, | ||||||
|  |   "category": "reactions", | ||||||
|  |   "id": "01F8MH9H8E4VG3KDYJR9EGPXCQ", | ||||||
|  |   "disabled": false, | ||||||
|  |   "updated_at": "2021-09-20T10:40:37.000Z", | ||||||
|  |   "total_file_size": 47115, | ||||||
|  |   "content_type": "image/png", | ||||||
|  |   "uri": "http://localhost:8080/emoji/01F8MH9H8E4VG3KDYJR9EGPXCQ" | ||||||
|  | }`, dst.String()) | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| func (suite *EmojiGetTestSuite) TestEmojiGet2() { | func (suite *EmojiGetTestSuite) TestEmojiGet2() { | ||||||
|  | @ -64,8 +80,22 @@ func (suite *EmojiGetTestSuite) TestEmojiGet2() { | ||||||
| 	b, err := io.ReadAll(recorder.Body) | 	b, err := io.ReadAll(recorder.Body) | ||||||
| 	suite.NoError(err) | 	suite.NoError(err) | ||||||
| 	suite.NotNil(b) | 	suite.NotNil(b) | ||||||
| 
 | 	dst := new(bytes.Buffer) | ||||||
| 	suite.Equal(`{"shortcode":"yell","url":"http://localhost:8080/fileserver/01AY6P665V14JJR0AFVRT7311Y/emoji/original/01GD5KP5CQEE1R3X43Y1EHS2CW.png","static_url":"http://localhost:8080/fileserver/01AY6P665V14JJR0AFVRT7311Y/emoji/static/01GD5KP5CQEE1R3X43Y1EHS2CW.png","visible_in_picker":false,"id":"01GD5KP5CQEE1R3X43Y1EHS2CW","disabled":false,"domain":"fossbros-anonymous.io","updated_at":"2020-03-18T12:12:00.000Z","total_file_size":21697,"content_type":"image/png","uri":"http://fossbros-anonymous.io/emoji/01GD5KP5CQEE1R3X43Y1EHS2CW"}`, string(b)) | 	err = json.Indent(dst, b, "", "  ") | ||||||
|  | 	suite.NoError(err) | ||||||
|  | 	suite.Equal(`{ | ||||||
|  |   "shortcode": "yell", | ||||||
|  |   "url": "http://localhost:8080/fileserver/01AY6P665V14JJR0AFVRT7311Y/emoji/original/01GD5KP5CQEE1R3X43Y1EHS2CW.png", | ||||||
|  |   "static_url": "http://localhost:8080/fileserver/01AY6P665V14JJR0AFVRT7311Y/emoji/static/01GD5KP5CQEE1R3X43Y1EHS2CW.png", | ||||||
|  |   "visible_in_picker": false, | ||||||
|  |   "id": "01GD5KP5CQEE1R3X43Y1EHS2CW", | ||||||
|  |   "disabled": false, | ||||||
|  |   "domain": "fossbros-anonymous.io", | ||||||
|  |   "updated_at": "2020-03-18T12:12:00.000Z", | ||||||
|  |   "total_file_size": 21697, | ||||||
|  |   "content_type": "image/png", | ||||||
|  |   "uri": "http://fossbros-anonymous.io/emoji/01GD5KP5CQEE1R3X43Y1EHS2CW" | ||||||
|  | }`, dst.String()) | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| func (suite *EmojiGetTestSuite) TestEmojiGetNotFound() { | func (suite *EmojiGetTestSuite) TestEmojiGetNotFound() { | ||||||
|  |  | ||||||
|  | @ -19,7 +19,9 @@ | ||||||
| package followrequests_test | package followrequests_test | ||||||
| 
 | 
 | ||||||
| import ( | import ( | ||||||
|  | 	"bytes" | ||||||
| 	"context" | 	"context" | ||||||
|  | 	"encoding/json" | ||||||
| 	"fmt" | 	"fmt" | ||||||
| 	"io/ioutil" | 	"io/ioutil" | ||||||
| 	"net/http" | 	"net/http" | ||||||
|  | @ -28,7 +30,6 @@ import ( | ||||||
| 	"time" | 	"time" | ||||||
| 
 | 
 | ||||||
| 	"github.com/gin-gonic/gin" | 	"github.com/gin-gonic/gin" | ||||||
| 	"github.com/stretchr/testify/assert" |  | ||||||
| 	"github.com/stretchr/testify/suite" | 	"github.com/stretchr/testify/suite" | ||||||
| 	"github.com/superseriousbusiness/gotosocial/internal/api/client/followrequests" | 	"github.com/superseriousbusiness/gotosocial/internal/api/client/followrequests" | ||||||
| 	"github.com/superseriousbusiness/gotosocial/internal/gtsmodel" | 	"github.com/superseriousbusiness/gotosocial/internal/gtsmodel" | ||||||
|  | @ -77,9 +78,25 @@ func (suite *AuthorizeTestSuite) TestAuthorize() { | ||||||
| 
 | 
 | ||||||
| 	// check the response | 	// check the response | ||||||
| 	b, err := ioutil.ReadAll(result.Body) | 	b, err := ioutil.ReadAll(result.Body) | ||||||
| 	assert.NoError(suite.T(), err) | 	suite.NoError(err) | ||||||
| 
 | 	dst := new(bytes.Buffer) | ||||||
| 	suite.Equal(`{"id":"01FHMQX3GAABWSM0S2VZEC2SWC","following":false,"showing_reblogs":false,"notifying":false,"followed_by":true,"blocking":false,"blocked_by":false,"muting":false,"muting_notifications":false,"requested":false,"domain_blocking":false,"endorsed":false,"note":""}`, string(b)) | 	err = json.Indent(dst, b, "", "  ") | ||||||
|  | 	suite.NoError(err) | ||||||
|  | 	suite.Equal(`{ | ||||||
|  |   "id": "01FHMQX3GAABWSM0S2VZEC2SWC", | ||||||
|  |   "following": false, | ||||||
|  |   "showing_reblogs": false, | ||||||
|  |   "notifying": false, | ||||||
|  |   "followed_by": true, | ||||||
|  |   "blocking": false, | ||||||
|  |   "blocked_by": false, | ||||||
|  |   "muting": false, | ||||||
|  |   "muting_notifications": false, | ||||||
|  |   "requested": false, | ||||||
|  |   "domain_blocking": false, | ||||||
|  |   "endorsed": false, | ||||||
|  |   "note": "" | ||||||
|  | }`, dst.String()) | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| func (suite *AuthorizeTestSuite) TestAuthorizeNoFR() { | func (suite *AuthorizeTestSuite) TestAuthorizeNoFR() { | ||||||
|  | @ -105,7 +122,7 @@ func (suite *AuthorizeTestSuite) TestAuthorizeNoFR() { | ||||||
| 
 | 
 | ||||||
| 	// check the response | 	// check the response | ||||||
| 	b, err := ioutil.ReadAll(result.Body) | 	b, err := ioutil.ReadAll(result.Body) | ||||||
| 	assert.NoError(suite.T(), err) | 	suite.NoError(err) | ||||||
| 
 | 
 | ||||||
| 	suite.Equal(`{"error":"Not Found"}`, string(b)) | 	suite.Equal(`{"error":"Not Found"}`, string(b)) | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -19,7 +19,9 @@ | ||||||
| package followrequests_test | package followrequests_test | ||||||
| 
 | 
 | ||||||
| import ( | import ( | ||||||
|  | 	"bytes" | ||||||
| 	"context" | 	"context" | ||||||
|  | 	"encoding/json" | ||||||
| 	"fmt" | 	"fmt" | ||||||
| 	"io/ioutil" | 	"io/ioutil" | ||||||
| 	"net/http" | 	"net/http" | ||||||
|  | @ -69,8 +71,32 @@ func (suite *GetTestSuite) TestGet() { | ||||||
| 	// check the response | 	// check the response | ||||||
| 	b, err := ioutil.ReadAll(result.Body) | 	b, err := ioutil.ReadAll(result.Body) | ||||||
| 	assert.NoError(suite.T(), err) | 	assert.NoError(suite.T(), err) | ||||||
| 
 | 	dst := new(bytes.Buffer) | ||||||
| 	suite.Equal(`[{"id":"01FHMQX3GAABWSM0S2VZEC2SWC","username":"Some_User","acct":"Some_User@example.org","display_name":"some user","locked":true,"bot":false,"created_at":"2020-08-10T12:13:28.000Z","note":"i'm a real son of a gun","url":"http://example.org/@Some_User","avatar":"","avatar_static":"","header":"http://localhost:8080/assets/default_header.png","header_static":"http://localhost:8080/assets/default_header.png","followers_count":0,"following_count":0,"statuses_count":0,"last_status_at":null,"emojis":[],"fields":[]}]`, string(b)) | 	err = json.Indent(dst, b, "", "  ") | ||||||
|  | 	suite.NoError(err) | ||||||
|  | 	suite.Equal(`[ | ||||||
|  |   { | ||||||
|  |     "id": "01FHMQX3GAABWSM0S2VZEC2SWC", | ||||||
|  |     "username": "Some_User", | ||||||
|  |     "acct": "Some_User@example.org", | ||||||
|  |     "display_name": "some user", | ||||||
|  |     "locked": true, | ||||||
|  |     "bot": false, | ||||||
|  |     "created_at": "2020-08-10T12:13:28.000Z", | ||||||
|  |     "note": "i'm a real son of a gun", | ||||||
|  |     "url": "http://example.org/@Some_User", | ||||||
|  |     "avatar": "", | ||||||
|  |     "avatar_static": "", | ||||||
|  |     "header": "http://localhost:8080/assets/default_header.png", | ||||||
|  |     "header_static": "http://localhost:8080/assets/default_header.png", | ||||||
|  |     "followers_count": 0, | ||||||
|  |     "following_count": 0, | ||||||
|  |     "statuses_count": 0, | ||||||
|  |     "last_status_at": null, | ||||||
|  |     "emojis": [], | ||||||
|  |     "fields": [] | ||||||
|  |   } | ||||||
|  | ]`, dst.String()) | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| func TestGetTestSuite(t *testing.T) { | func TestGetTestSuite(t *testing.T) { | ||||||
|  |  | ||||||
|  | @ -19,7 +19,9 @@ | ||||||
| package followrequests_test | package followrequests_test | ||||||
| 
 | 
 | ||||||
| import ( | import ( | ||||||
|  | 	"bytes" | ||||||
| 	"context" | 	"context" | ||||||
|  | 	"encoding/json" | ||||||
| 	"fmt" | 	"fmt" | ||||||
| 	"io/ioutil" | 	"io/ioutil" | ||||||
| 	"net/http" | 	"net/http" | ||||||
|  | @ -28,7 +30,6 @@ import ( | ||||||
| 	"time" | 	"time" | ||||||
| 
 | 
 | ||||||
| 	"github.com/gin-gonic/gin" | 	"github.com/gin-gonic/gin" | ||||||
| 	"github.com/stretchr/testify/assert" |  | ||||||
| 	"github.com/stretchr/testify/suite" | 	"github.com/stretchr/testify/suite" | ||||||
| 	"github.com/superseriousbusiness/gotosocial/internal/api/client/followrequests" | 	"github.com/superseriousbusiness/gotosocial/internal/api/client/followrequests" | ||||||
| 	"github.com/superseriousbusiness/gotosocial/internal/gtsmodel" | 	"github.com/superseriousbusiness/gotosocial/internal/gtsmodel" | ||||||
|  | @ -77,9 +78,25 @@ func (suite *RejectTestSuite) TestReject() { | ||||||
| 
 | 
 | ||||||
| 	// check the response | 	// check the response | ||||||
| 	b, err := ioutil.ReadAll(result.Body) | 	b, err := ioutil.ReadAll(result.Body) | ||||||
| 	assert.NoError(suite.T(), err) | 	suite.NoError(err) | ||||||
| 
 | 	dst := new(bytes.Buffer) | ||||||
| 	suite.Equal(`{"id":"01FHMQX3GAABWSM0S2VZEC2SWC","following":false,"showing_reblogs":false,"notifying":false,"followed_by":false,"blocking":false,"blocked_by":false,"muting":false,"muting_notifications":false,"requested":false,"domain_blocking":false,"endorsed":false,"note":""}`, string(b)) | 	err = json.Indent(dst, b, "", "  ") | ||||||
|  | 	suite.NoError(err) | ||||||
|  | 	suite.Equal(`{ | ||||||
|  |   "id": "01FHMQX3GAABWSM0S2VZEC2SWC", | ||||||
|  |   "following": false, | ||||||
|  |   "showing_reblogs": false, | ||||||
|  |   "notifying": false, | ||||||
|  |   "followed_by": false, | ||||||
|  |   "blocking": false, | ||||||
|  |   "blocked_by": false, | ||||||
|  |   "muting": false, | ||||||
|  |   "muting_notifications": false, | ||||||
|  |   "requested": false, | ||||||
|  |   "domain_blocking": false, | ||||||
|  |   "endorsed": false, | ||||||
|  |   "note": "" | ||||||
|  | }`, dst.String()) | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| func TestRejectTestSuite(t *testing.T) { | func TestRejectTestSuite(t *testing.T) { | ||||||
|  |  | ||||||
|  | @ -19,8 +19,9 @@ | ||||||
| package instance_test | package instance_test | ||||||
| 
 | 
 | ||||||
| import ( | import ( | ||||||
|  | 	"bytes" | ||||||
| 	"context" | 	"context" | ||||||
| 	"fmt" | 	"encoding/json" | ||||||
| 	"io" | 	"io" | ||||||
| 	"net/http" | 	"net/http" | ||||||
| 	"net/http/httptest" | 	"net/http/httptest" | ||||||
|  | @ -64,8 +65,87 @@ func (suite *InstancePatchTestSuite) TestInstancePatch1() { | ||||||
| 
 | 
 | ||||||
| 	b, err := io.ReadAll(result.Body) | 	b, err := io.ReadAll(result.Body) | ||||||
| 	suite.NoError(err) | 	suite.NoError(err) | ||||||
| 
 | 	dst := new(bytes.Buffer) | ||||||
| 	suite.Equal(`{"uri":"http://localhost:8080","account_domain":"localhost:8080","title":"Example Instance","description":"\u003cp\u003eThis is the GoToSocial testrig. It doesn't federate or anything.\u003c/p\u003e\u003cp\u003eWhen the testrig is shut down, all data on it will be deleted.\u003c/p\u003e\u003cp\u003eDon't use this in production!\u003c/p\u003e","short_description":"\u003cp\u003eThis is the GoToSocial testrig. It doesn't federate or anything.\u003c/p\u003e\u003cp\u003eWhen the testrig is shut down, all data on it will be deleted.\u003c/p\u003e\u003cp\u003eDon't use this in production!\u003c/p\u003e","email":"someone@example.org","version":"0.0.0-testrig","registrations":true,"approval_required":true,"invites_enabled":false,"configuration":{"statuses":{"max_characters":5000,"max_media_attachments":6,"characters_reserved_per_url":25},"media_attachments":{"supported_mime_types":["image/jpeg","image/gif","image/png","image/webp","video/mp4"],"image_size_limit":10485760,"image_matrix_limit":16777216,"video_size_limit":41943040,"video_frame_rate_limit":60,"video_matrix_limit":16777216},"polls":{"max_options":6,"max_characters_per_option":50,"min_expiration":300,"max_expiration":2629746},"accounts":{"allow_custom_css":true},"emojis":{"emoji_size_limit":51200}},"urls":{"streaming_api":"wss://localhost:8080"},"stats":{"domain_count":2,"status_count":16,"user_count":4},"thumbnail":"http://localhost:8080/assets/logo.png","contact_account":{"id":"01F8MH17FWEB39HZJ76B6VXSKF","username":"admin","acct":"admin","display_name":"","locked":false,"bot":false,"created_at":"2022-05-17T13:10:59.000Z","note":"","url":"http://localhost:8080/@admin","avatar":"","avatar_static":"","header":"http://localhost:8080/assets/default_header.png","header_static":"http://localhost:8080/assets/default_header.png","followers_count":1,"following_count":1,"statuses_count":4,"last_status_at":"2021-10-20T10:41:37.000Z","emojis":[],"fields":[],"enable_rss":true,"role":"admin"},"max_toot_chars":5000}`, string(b)) | 	err = json.Indent(dst, b, "", "  ") | ||||||
|  | 	suite.NoError(err) | ||||||
|  | 	suite.Equal(`{ | ||||||
|  |   "uri": "http://localhost:8080", | ||||||
|  |   "account_domain": "localhost:8080", | ||||||
|  |   "title": "Example Instance", | ||||||
|  |   "description": "\u003cp\u003eThis is the GoToSocial testrig. It doesn't federate or anything.\u003c/p\u003e\u003cp\u003eWhen the testrig is shut down, all data on it will be deleted.\u003c/p\u003e\u003cp\u003eDon't use this in production!\u003c/p\u003e", | ||||||
|  |   "short_description": "\u003cp\u003eThis is the GoToSocial testrig. It doesn't federate or anything.\u003c/p\u003e\u003cp\u003eWhen the testrig is shut down, all data on it will be deleted.\u003c/p\u003e\u003cp\u003eDon't use this in production!\u003c/p\u003e", | ||||||
|  |   "email": "someone@example.org", | ||||||
|  |   "version": "0.0.0-testrig", | ||||||
|  |   "registrations": true, | ||||||
|  |   "approval_required": true, | ||||||
|  |   "invites_enabled": false, | ||||||
|  |   "configuration": { | ||||||
|  |     "statuses": { | ||||||
|  |       "max_characters": 5000, | ||||||
|  |       "max_media_attachments": 6, | ||||||
|  |       "characters_reserved_per_url": 25 | ||||||
|  |     }, | ||||||
|  |     "media_attachments": { | ||||||
|  |       "supported_mime_types": [ | ||||||
|  |         "image/jpeg", | ||||||
|  |         "image/gif", | ||||||
|  |         "image/png", | ||||||
|  |         "image/webp", | ||||||
|  |         "video/mp4" | ||||||
|  |       ], | ||||||
|  |       "image_size_limit": 10485760, | ||||||
|  |       "image_matrix_limit": 16777216, | ||||||
|  |       "video_size_limit": 41943040, | ||||||
|  |       "video_frame_rate_limit": 60, | ||||||
|  |       "video_matrix_limit": 16777216 | ||||||
|  |     }, | ||||||
|  |     "polls": { | ||||||
|  |       "max_options": 6, | ||||||
|  |       "max_characters_per_option": 50, | ||||||
|  |       "min_expiration": 300, | ||||||
|  |       "max_expiration": 2629746 | ||||||
|  |     }, | ||||||
|  |     "accounts": { | ||||||
|  |       "allow_custom_css": true | ||||||
|  |     }, | ||||||
|  |     "emojis": { | ||||||
|  |       "emoji_size_limit": 51200 | ||||||
|  |     } | ||||||
|  |   }, | ||||||
|  |   "urls": { | ||||||
|  |     "streaming_api": "wss://localhost:8080" | ||||||
|  |   }, | ||||||
|  |   "stats": { | ||||||
|  |     "domain_count": 2, | ||||||
|  |     "status_count": 16, | ||||||
|  |     "user_count": 4 | ||||||
|  |   }, | ||||||
|  |   "thumbnail": "http://localhost:8080/assets/logo.png", | ||||||
|  |   "contact_account": { | ||||||
|  |     "id": "01F8MH17FWEB39HZJ76B6VXSKF", | ||||||
|  |     "username": "admin", | ||||||
|  |     "acct": "admin", | ||||||
|  |     "display_name": "", | ||||||
|  |     "locked": false, | ||||||
|  |     "bot": false, | ||||||
|  |     "created_at": "2022-05-17T13:10:59.000Z", | ||||||
|  |     "note": "", | ||||||
|  |     "url": "http://localhost:8080/@admin", | ||||||
|  |     "avatar": "", | ||||||
|  |     "avatar_static": "", | ||||||
|  |     "header": "http://localhost:8080/assets/default_header.png", | ||||||
|  |     "header_static": "http://localhost:8080/assets/default_header.png", | ||||||
|  |     "followers_count": 1, | ||||||
|  |     "following_count": 1, | ||||||
|  |     "statuses_count": 4, | ||||||
|  |     "last_status_at": "2021-10-20T10:41:37.000Z", | ||||||
|  |     "emojis": [], | ||||||
|  |     "fields": [], | ||||||
|  |     "enable_rss": true, | ||||||
|  |     "role": "admin" | ||||||
|  |   }, | ||||||
|  |   "max_toot_chars": 5000 | ||||||
|  | }`, dst.String()) | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| func (suite *InstancePatchTestSuite) TestInstancePatch2() { | func (suite *InstancePatchTestSuite) TestInstancePatch2() { | ||||||
|  | @ -94,8 +174,87 @@ func (suite *InstancePatchTestSuite) TestInstancePatch2() { | ||||||
| 
 | 
 | ||||||
| 	b, err := io.ReadAll(result.Body) | 	b, err := io.ReadAll(result.Body) | ||||||
| 	suite.NoError(err) | 	suite.NoError(err) | ||||||
| 
 | 	dst := new(bytes.Buffer) | ||||||
| 	suite.Equal(`{"uri":"http://localhost:8080","account_domain":"localhost:8080","title":"Geoff's Instance","description":"\u003cp\u003eThis is the GoToSocial testrig. It doesn't federate or anything.\u003c/p\u003e\u003cp\u003eWhen the testrig is shut down, all data on it will be deleted.\u003c/p\u003e\u003cp\u003eDon't use this in production!\u003c/p\u003e","short_description":"\u003cp\u003eThis is the GoToSocial testrig. It doesn't federate or anything.\u003c/p\u003e\u003cp\u003eWhen the testrig is shut down, all data on it will be deleted.\u003c/p\u003e\u003cp\u003eDon't use this in production!\u003c/p\u003e","email":"admin@example.org","version":"0.0.0-testrig","registrations":true,"approval_required":true,"invites_enabled":false,"configuration":{"statuses":{"max_characters":5000,"max_media_attachments":6,"characters_reserved_per_url":25},"media_attachments":{"supported_mime_types":["image/jpeg","image/gif","image/png","image/webp","video/mp4"],"image_size_limit":10485760,"image_matrix_limit":16777216,"video_size_limit":41943040,"video_frame_rate_limit":60,"video_matrix_limit":16777216},"polls":{"max_options":6,"max_characters_per_option":50,"min_expiration":300,"max_expiration":2629746},"accounts":{"allow_custom_css":true},"emojis":{"emoji_size_limit":51200}},"urls":{"streaming_api":"wss://localhost:8080"},"stats":{"domain_count":2,"status_count":16,"user_count":4},"thumbnail":"http://localhost:8080/assets/logo.png","contact_account":{"id":"01F8MH17FWEB39HZJ76B6VXSKF","username":"admin","acct":"admin","display_name":"","locked":false,"bot":false,"created_at":"2022-05-17T13:10:59.000Z","note":"","url":"http://localhost:8080/@admin","avatar":"","avatar_static":"","header":"http://localhost:8080/assets/default_header.png","header_static":"http://localhost:8080/assets/default_header.png","followers_count":1,"following_count":1,"statuses_count":4,"last_status_at":"2021-10-20T10:41:37.000Z","emojis":[],"fields":[],"enable_rss":true,"role":"admin"},"max_toot_chars":5000}`, string(b)) | 	err = json.Indent(dst, b, "", "  ") | ||||||
|  | 	suite.NoError(err) | ||||||
|  | 	suite.Equal(`{ | ||||||
|  |   "uri": "http://localhost:8080", | ||||||
|  |   "account_domain": "localhost:8080", | ||||||
|  |   "title": "Geoff's Instance", | ||||||
|  |   "description": "\u003cp\u003eThis is the GoToSocial testrig. It doesn't federate or anything.\u003c/p\u003e\u003cp\u003eWhen the testrig is shut down, all data on it will be deleted.\u003c/p\u003e\u003cp\u003eDon't use this in production!\u003c/p\u003e", | ||||||
|  |   "short_description": "\u003cp\u003eThis is the GoToSocial testrig. It doesn't federate or anything.\u003c/p\u003e\u003cp\u003eWhen the testrig is shut down, all data on it will be deleted.\u003c/p\u003e\u003cp\u003eDon't use this in production!\u003c/p\u003e", | ||||||
|  |   "email": "admin@example.org", | ||||||
|  |   "version": "0.0.0-testrig", | ||||||
|  |   "registrations": true, | ||||||
|  |   "approval_required": true, | ||||||
|  |   "invites_enabled": false, | ||||||
|  |   "configuration": { | ||||||
|  |     "statuses": { | ||||||
|  |       "max_characters": 5000, | ||||||
|  |       "max_media_attachments": 6, | ||||||
|  |       "characters_reserved_per_url": 25 | ||||||
|  |     }, | ||||||
|  |     "media_attachments": { | ||||||
|  |       "supported_mime_types": [ | ||||||
|  |         "image/jpeg", | ||||||
|  |         "image/gif", | ||||||
|  |         "image/png", | ||||||
|  |         "image/webp", | ||||||
|  |         "video/mp4" | ||||||
|  |       ], | ||||||
|  |       "image_size_limit": 10485760, | ||||||
|  |       "image_matrix_limit": 16777216, | ||||||
|  |       "video_size_limit": 41943040, | ||||||
|  |       "video_frame_rate_limit": 60, | ||||||
|  |       "video_matrix_limit": 16777216 | ||||||
|  |     }, | ||||||
|  |     "polls": { | ||||||
|  |       "max_options": 6, | ||||||
|  |       "max_characters_per_option": 50, | ||||||
|  |       "min_expiration": 300, | ||||||
|  |       "max_expiration": 2629746 | ||||||
|  |     }, | ||||||
|  |     "accounts": { | ||||||
|  |       "allow_custom_css": true | ||||||
|  |     }, | ||||||
|  |     "emojis": { | ||||||
|  |       "emoji_size_limit": 51200 | ||||||
|  |     } | ||||||
|  |   }, | ||||||
|  |   "urls": { | ||||||
|  |     "streaming_api": "wss://localhost:8080" | ||||||
|  |   }, | ||||||
|  |   "stats": { | ||||||
|  |     "domain_count": 2, | ||||||
|  |     "status_count": 16, | ||||||
|  |     "user_count": 4 | ||||||
|  |   }, | ||||||
|  |   "thumbnail": "http://localhost:8080/assets/logo.png", | ||||||
|  |   "contact_account": { | ||||||
|  |     "id": "01F8MH17FWEB39HZJ76B6VXSKF", | ||||||
|  |     "username": "admin", | ||||||
|  |     "acct": "admin", | ||||||
|  |     "display_name": "", | ||||||
|  |     "locked": false, | ||||||
|  |     "bot": false, | ||||||
|  |     "created_at": "2022-05-17T13:10:59.000Z", | ||||||
|  |     "note": "", | ||||||
|  |     "url": "http://localhost:8080/@admin", | ||||||
|  |     "avatar": "", | ||||||
|  |     "avatar_static": "", | ||||||
|  |     "header": "http://localhost:8080/assets/default_header.png", | ||||||
|  |     "header_static": "http://localhost:8080/assets/default_header.png", | ||||||
|  |     "followers_count": 1, | ||||||
|  |     "following_count": 1, | ||||||
|  |     "statuses_count": 4, | ||||||
|  |     "last_status_at": "2021-10-20T10:41:37.000Z", | ||||||
|  |     "emojis": [], | ||||||
|  |     "fields": [], | ||||||
|  |     "enable_rss": true, | ||||||
|  |     "role": "admin" | ||||||
|  |   }, | ||||||
|  |   "max_toot_chars": 5000 | ||||||
|  | }`, dst.String()) | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| func (suite *InstancePatchTestSuite) TestInstancePatch3() { | func (suite *InstancePatchTestSuite) TestInstancePatch3() { | ||||||
|  | @ -124,8 +283,87 @@ func (suite *InstancePatchTestSuite) TestInstancePatch3() { | ||||||
| 
 | 
 | ||||||
| 	b, err := io.ReadAll(result.Body) | 	b, err := io.ReadAll(result.Body) | ||||||
| 	suite.NoError(err) | 	suite.NoError(err) | ||||||
| 
 | 	dst := new(bytes.Buffer) | ||||||
| 	suite.Equal(`{"uri":"http://localhost:8080","account_domain":"localhost:8080","title":"GoToSocial Testrig Instance","description":"\u003cp\u003eThis is the GoToSocial testrig. It doesn't federate or anything.\u003c/p\u003e\u003cp\u003eWhen the testrig is shut down, all data on it will be deleted.\u003c/p\u003e\u003cp\u003eDon't use this in production!\u003c/p\u003e","short_description":"\u003cp\u003eThis is some html, which is \u003cem\u003eallowed\u003c/em\u003e in short descriptions.\u003c/p\u003e","email":"admin@example.org","version":"0.0.0-testrig","registrations":true,"approval_required":true,"invites_enabled":false,"configuration":{"statuses":{"max_characters":5000,"max_media_attachments":6,"characters_reserved_per_url":25},"media_attachments":{"supported_mime_types":["image/jpeg","image/gif","image/png","image/webp","video/mp4"],"image_size_limit":10485760,"image_matrix_limit":16777216,"video_size_limit":41943040,"video_frame_rate_limit":60,"video_matrix_limit":16777216},"polls":{"max_options":6,"max_characters_per_option":50,"min_expiration":300,"max_expiration":2629746},"accounts":{"allow_custom_css":true},"emojis":{"emoji_size_limit":51200}},"urls":{"streaming_api":"wss://localhost:8080"},"stats":{"domain_count":2,"status_count":16,"user_count":4},"thumbnail":"http://localhost:8080/assets/logo.png","contact_account":{"id":"01F8MH17FWEB39HZJ76B6VXSKF","username":"admin","acct":"admin","display_name":"","locked":false,"bot":false,"created_at":"2022-05-17T13:10:59.000Z","note":"","url":"http://localhost:8080/@admin","avatar":"","avatar_static":"","header":"http://localhost:8080/assets/default_header.png","header_static":"http://localhost:8080/assets/default_header.png","followers_count":1,"following_count":1,"statuses_count":4,"last_status_at":"2021-10-20T10:41:37.000Z","emojis":[],"fields":[],"enable_rss":true,"role":"admin"},"max_toot_chars":5000}`, string(b)) | 	err = json.Indent(dst, b, "", "  ") | ||||||
|  | 	suite.NoError(err) | ||||||
|  | 	suite.Equal(`{ | ||||||
|  |   "uri": "http://localhost:8080", | ||||||
|  |   "account_domain": "localhost:8080", | ||||||
|  |   "title": "GoToSocial Testrig Instance", | ||||||
|  |   "description": "\u003cp\u003eThis is the GoToSocial testrig. It doesn't federate or anything.\u003c/p\u003e\u003cp\u003eWhen the testrig is shut down, all data on it will be deleted.\u003c/p\u003e\u003cp\u003eDon't use this in production!\u003c/p\u003e", | ||||||
|  |   "short_description": "\u003cp\u003eThis is some html, which is \u003cem\u003eallowed\u003c/em\u003e in short descriptions.\u003c/p\u003e", | ||||||
|  |   "email": "admin@example.org", | ||||||
|  |   "version": "0.0.0-testrig", | ||||||
|  |   "registrations": true, | ||||||
|  |   "approval_required": true, | ||||||
|  |   "invites_enabled": false, | ||||||
|  |   "configuration": { | ||||||
|  |     "statuses": { | ||||||
|  |       "max_characters": 5000, | ||||||
|  |       "max_media_attachments": 6, | ||||||
|  |       "characters_reserved_per_url": 25 | ||||||
|  |     }, | ||||||
|  |     "media_attachments": { | ||||||
|  |       "supported_mime_types": [ | ||||||
|  |         "image/jpeg", | ||||||
|  |         "image/gif", | ||||||
|  |         "image/png", | ||||||
|  |         "image/webp", | ||||||
|  |         "video/mp4" | ||||||
|  |       ], | ||||||
|  |       "image_size_limit": 10485760, | ||||||
|  |       "image_matrix_limit": 16777216, | ||||||
|  |       "video_size_limit": 41943040, | ||||||
|  |       "video_frame_rate_limit": 60, | ||||||
|  |       "video_matrix_limit": 16777216 | ||||||
|  |     }, | ||||||
|  |     "polls": { | ||||||
|  |       "max_options": 6, | ||||||
|  |       "max_characters_per_option": 50, | ||||||
|  |       "min_expiration": 300, | ||||||
|  |       "max_expiration": 2629746 | ||||||
|  |     }, | ||||||
|  |     "accounts": { | ||||||
|  |       "allow_custom_css": true | ||||||
|  |     }, | ||||||
|  |     "emojis": { | ||||||
|  |       "emoji_size_limit": 51200 | ||||||
|  |     } | ||||||
|  |   }, | ||||||
|  |   "urls": { | ||||||
|  |     "streaming_api": "wss://localhost:8080" | ||||||
|  |   }, | ||||||
|  |   "stats": { | ||||||
|  |     "domain_count": 2, | ||||||
|  |     "status_count": 16, | ||||||
|  |     "user_count": 4 | ||||||
|  |   }, | ||||||
|  |   "thumbnail": "http://localhost:8080/assets/logo.png", | ||||||
|  |   "contact_account": { | ||||||
|  |     "id": "01F8MH17FWEB39HZJ76B6VXSKF", | ||||||
|  |     "username": "admin", | ||||||
|  |     "acct": "admin", | ||||||
|  |     "display_name": "", | ||||||
|  |     "locked": false, | ||||||
|  |     "bot": false, | ||||||
|  |     "created_at": "2022-05-17T13:10:59.000Z", | ||||||
|  |     "note": "", | ||||||
|  |     "url": "http://localhost:8080/@admin", | ||||||
|  |     "avatar": "", | ||||||
|  |     "avatar_static": "", | ||||||
|  |     "header": "http://localhost:8080/assets/default_header.png", | ||||||
|  |     "header_static": "http://localhost:8080/assets/default_header.png", | ||||||
|  |     "followers_count": 1, | ||||||
|  |     "following_count": 1, | ||||||
|  |     "statuses_count": 4, | ||||||
|  |     "last_status_at": "2021-10-20T10:41:37.000Z", | ||||||
|  |     "emojis": [], | ||||||
|  |     "fields": [], | ||||||
|  |     "enable_rss": true, | ||||||
|  |     "role": "admin" | ||||||
|  |   }, | ||||||
|  |   "max_toot_chars": 5000 | ||||||
|  | }`, dst.String()) | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| func (suite *InstancePatchTestSuite) TestInstancePatch4() { | func (suite *InstancePatchTestSuite) TestInstancePatch4() { | ||||||
|  | @ -215,8 +453,87 @@ func (suite *InstancePatchTestSuite) TestInstancePatch6() { | ||||||
| 
 | 
 | ||||||
| 	b, err := io.ReadAll(result.Body) | 	b, err := io.ReadAll(result.Body) | ||||||
| 	suite.NoError(err) | 	suite.NoError(err) | ||||||
| 
 | 	dst := new(bytes.Buffer) | ||||||
| 	suite.Equal(`{"uri":"http://localhost:8080","account_domain":"localhost:8080","title":"GoToSocial Testrig Instance","description":"\u003cp\u003eThis is the GoToSocial testrig. It doesn't federate or anything.\u003c/p\u003e\u003cp\u003eWhen the testrig is shut down, all data on it will be deleted.\u003c/p\u003e\u003cp\u003eDon't use this in production!\u003c/p\u003e","short_description":"\u003cp\u003eThis is the GoToSocial testrig. It doesn't federate or anything.\u003c/p\u003e\u003cp\u003eWhen the testrig is shut down, all data on it will be deleted.\u003c/p\u003e\u003cp\u003eDon't use this in production!\u003c/p\u003e","email":"","version":"0.0.0-testrig","registrations":true,"approval_required":true,"invites_enabled":false,"configuration":{"statuses":{"max_characters":5000,"max_media_attachments":6,"characters_reserved_per_url":25},"media_attachments":{"supported_mime_types":["image/jpeg","image/gif","image/png","image/webp","video/mp4"],"image_size_limit":10485760,"image_matrix_limit":16777216,"video_size_limit":41943040,"video_frame_rate_limit":60,"video_matrix_limit":16777216},"polls":{"max_options":6,"max_characters_per_option":50,"min_expiration":300,"max_expiration":2629746},"accounts":{"allow_custom_css":true},"emojis":{"emoji_size_limit":51200}},"urls":{"streaming_api":"wss://localhost:8080"},"stats":{"domain_count":2,"status_count":16,"user_count":4},"thumbnail":"http://localhost:8080/assets/logo.png","contact_account":{"id":"01F8MH17FWEB39HZJ76B6VXSKF","username":"admin","acct":"admin","display_name":"","locked":false,"bot":false,"created_at":"2022-05-17T13:10:59.000Z","note":"","url":"http://localhost:8080/@admin","avatar":"","avatar_static":"","header":"http://localhost:8080/assets/default_header.png","header_static":"http://localhost:8080/assets/default_header.png","followers_count":1,"following_count":1,"statuses_count":4,"last_status_at":"2021-10-20T10:41:37.000Z","emojis":[],"fields":[],"enable_rss":true,"role":"admin"},"max_toot_chars":5000}`, string(b)) | 	err = json.Indent(dst, b, "", "  ") | ||||||
|  | 	suite.NoError(err) | ||||||
|  | 	suite.Equal(`{ | ||||||
|  |   "uri": "http://localhost:8080", | ||||||
|  |   "account_domain": "localhost:8080", | ||||||
|  |   "title": "GoToSocial Testrig Instance", | ||||||
|  |   "description": "\u003cp\u003eThis is the GoToSocial testrig. It doesn't federate or anything.\u003c/p\u003e\u003cp\u003eWhen the testrig is shut down, all data on it will be deleted.\u003c/p\u003e\u003cp\u003eDon't use this in production!\u003c/p\u003e", | ||||||
|  |   "short_description": "\u003cp\u003eThis is the GoToSocial testrig. It doesn't federate or anything.\u003c/p\u003e\u003cp\u003eWhen the testrig is shut down, all data on it will be deleted.\u003c/p\u003e\u003cp\u003eDon't use this in production!\u003c/p\u003e", | ||||||
|  |   "email": "", | ||||||
|  |   "version": "0.0.0-testrig", | ||||||
|  |   "registrations": true, | ||||||
|  |   "approval_required": true, | ||||||
|  |   "invites_enabled": false, | ||||||
|  |   "configuration": { | ||||||
|  |     "statuses": { | ||||||
|  |       "max_characters": 5000, | ||||||
|  |       "max_media_attachments": 6, | ||||||
|  |       "characters_reserved_per_url": 25 | ||||||
|  |     }, | ||||||
|  |     "media_attachments": { | ||||||
|  |       "supported_mime_types": [ | ||||||
|  |         "image/jpeg", | ||||||
|  |         "image/gif", | ||||||
|  |         "image/png", | ||||||
|  |         "image/webp", | ||||||
|  |         "video/mp4" | ||||||
|  |       ], | ||||||
|  |       "image_size_limit": 10485760, | ||||||
|  |       "image_matrix_limit": 16777216, | ||||||
|  |       "video_size_limit": 41943040, | ||||||
|  |       "video_frame_rate_limit": 60, | ||||||
|  |       "video_matrix_limit": 16777216 | ||||||
|  |     }, | ||||||
|  |     "polls": { | ||||||
|  |       "max_options": 6, | ||||||
|  |       "max_characters_per_option": 50, | ||||||
|  |       "min_expiration": 300, | ||||||
|  |       "max_expiration": 2629746 | ||||||
|  |     }, | ||||||
|  |     "accounts": { | ||||||
|  |       "allow_custom_css": true | ||||||
|  |     }, | ||||||
|  |     "emojis": { | ||||||
|  |       "emoji_size_limit": 51200 | ||||||
|  |     } | ||||||
|  |   }, | ||||||
|  |   "urls": { | ||||||
|  |     "streaming_api": "wss://localhost:8080" | ||||||
|  |   }, | ||||||
|  |   "stats": { | ||||||
|  |     "domain_count": 2, | ||||||
|  |     "status_count": 16, | ||||||
|  |     "user_count": 4 | ||||||
|  |   }, | ||||||
|  |   "thumbnail": "http://localhost:8080/assets/logo.png", | ||||||
|  |   "contact_account": { | ||||||
|  |     "id": "01F8MH17FWEB39HZJ76B6VXSKF", | ||||||
|  |     "username": "admin", | ||||||
|  |     "acct": "admin", | ||||||
|  |     "display_name": "", | ||||||
|  |     "locked": false, | ||||||
|  |     "bot": false, | ||||||
|  |     "created_at": "2022-05-17T13:10:59.000Z", | ||||||
|  |     "note": "", | ||||||
|  |     "url": "http://localhost:8080/@admin", | ||||||
|  |     "avatar": "", | ||||||
|  |     "avatar_static": "", | ||||||
|  |     "header": "http://localhost:8080/assets/default_header.png", | ||||||
|  |     "header_static": "http://localhost:8080/assets/default_header.png", | ||||||
|  |     "followers_count": 1, | ||||||
|  |     "following_count": 1, | ||||||
|  |     "statuses_count": 4, | ||||||
|  |     "last_status_at": "2021-10-20T10:41:37.000Z", | ||||||
|  |     "emojis": [], | ||||||
|  |     "fields": [], | ||||||
|  |     "enable_rss": true, | ||||||
|  |     "role": "admin" | ||||||
|  |   }, | ||||||
|  |   "max_toot_chars": 5000 | ||||||
|  | }`, dst.String()) | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| func (suite *InstancePatchTestSuite) TestInstancePatch7() { | func (suite *InstancePatchTestSuite) TestInstancePatch7() { | ||||||
|  | @ -270,17 +587,97 @@ func (suite *InstancePatchTestSuite) TestInstancePatch8() { | ||||||
| 	result := recorder.Result() | 	result := recorder.Result() | ||||||
| 	defer result.Body.Close() | 	defer result.Body.Close() | ||||||
| 
 | 
 | ||||||
| 	b, err := io.ReadAll(result.Body) |  | ||||||
| 	suite.NoError(err) |  | ||||||
| 
 |  | ||||||
| 	instanceAccount, err := suite.db.GetInstanceAccount(context.Background(), "") | 	instanceAccount, err := suite.db.GetInstanceAccount(context.Background(), "") | ||||||
| 	if err != nil { | 	if err != nil { | ||||||
| 		suite.FailNow(err.Error()) | 		suite.FailNow(err.Error()) | ||||||
| 	} | 	} | ||||||
| 	suite.NotEmpty(instanceAccount.AvatarMediaAttachmentID) | 	suite.NotEmpty(instanceAccount.AvatarMediaAttachmentID) | ||||||
| 
 | 
 | ||||||
| 	expectedInstanceResponse := fmt.Sprintf(`{"uri":"http://localhost:8080","account_domain":"localhost:8080","title":"GoToSocial Testrig Instance","description":"\u003cp\u003eThis is the GoToSocial testrig. It doesn't federate or anything.\u003c/p\u003e\u003cp\u003eWhen the testrig is shut down, all data on it will be deleted.\u003c/p\u003e\u003cp\u003eDon't use this in production!\u003c/p\u003e","short_description":"\u003cp\u003eThis is the GoToSocial testrig. It doesn't federate or anything.\u003c/p\u003e\u003cp\u003eWhen the testrig is shut down, all data on it will be deleted.\u003c/p\u003e\u003cp\u003eDon't use this in production!\u003c/p\u003e","email":"admin@example.org","version":"0.0.0-testrig","registrations":true,"approval_required":true,"invites_enabled":false,"configuration":{"statuses":{"max_characters":5000,"max_media_attachments":6,"characters_reserved_per_url":25},"media_attachments":{"supported_mime_types":["image/jpeg","image/gif","image/png","image/webp","video/mp4"],"image_size_limit":10485760,"image_matrix_limit":16777216,"video_size_limit":41943040,"video_frame_rate_limit":60,"video_matrix_limit":16777216},"polls":{"max_options":6,"max_characters_per_option":50,"min_expiration":300,"max_expiration":2629746},"accounts":{"allow_custom_css":true},"emojis":{"emoji_size_limit":51200}},"urls":{"streaming_api":"wss://localhost:8080"},"stats":{"domain_count":2,"status_count":16,"user_count":4},"thumbnail":"http://localhost:8080/fileserver/%s/attachment/original/%s.gif","thumbnail_type":"image/gif","thumbnail_description":"A bouncing little green peglin.","contact_account":{"id":"01F8MH17FWEB39HZJ76B6VXSKF","username":"admin","acct":"admin","display_name":"","locked":false,"bot":false,"created_at":"2022-05-17T13:10:59.000Z","note":"","url":"http://localhost:8080/@admin","avatar":"","avatar_static":"","header":"http://localhost:8080/assets/default_header.png","header_static":"http://localhost:8080/assets/default_header.png","followers_count":1,"following_count":1,"statuses_count":4,"last_status_at":"2021-10-20T10:41:37.000Z","emojis":[],"fields":[],"enable_rss":true,"role":"admin"},"max_toot_chars":5000}`, instanceAccount.ID, instanceAccount.AvatarMediaAttachmentID) | 	b, err := io.ReadAll(result.Body) | ||||||
| 	suite.Equal(expectedInstanceResponse, string(b)) | 	suite.NoError(err) | ||||||
|  | 	dst := new(bytes.Buffer) | ||||||
|  | 	err = json.Indent(dst, b, "", "  ") | ||||||
|  | 	suite.NoError(err) | ||||||
|  | 	suite.Equal(`{ | ||||||
|  |   "uri": "http://localhost:8080", | ||||||
|  |   "account_domain": "localhost:8080", | ||||||
|  |   "title": "GoToSocial Testrig Instance", | ||||||
|  |   "description": "\u003cp\u003eThis is the GoToSocial testrig. It doesn't federate or anything.\u003c/p\u003e\u003cp\u003eWhen the testrig is shut down, all data on it will be deleted.\u003c/p\u003e\u003cp\u003eDon't use this in production!\u003c/p\u003e", | ||||||
|  |   "short_description": "\u003cp\u003eThis is the GoToSocial testrig. It doesn't federate or anything.\u003c/p\u003e\u003cp\u003eWhen the testrig is shut down, all data on it will be deleted.\u003c/p\u003e\u003cp\u003eDon't use this in production!\u003c/p\u003e", | ||||||
|  |   "email": "admin@example.org", | ||||||
|  |   "version": "0.0.0-testrig", | ||||||
|  |   "registrations": true, | ||||||
|  |   "approval_required": true, | ||||||
|  |   "invites_enabled": false, | ||||||
|  |   "configuration": { | ||||||
|  |     "statuses": { | ||||||
|  |       "max_characters": 5000, | ||||||
|  |       "max_media_attachments": 6, | ||||||
|  |       "characters_reserved_per_url": 25 | ||||||
|  |     }, | ||||||
|  |     "media_attachments": { | ||||||
|  |       "supported_mime_types": [ | ||||||
|  |         "image/jpeg", | ||||||
|  |         "image/gif", | ||||||
|  |         "image/png", | ||||||
|  |         "image/webp", | ||||||
|  |         "video/mp4" | ||||||
|  |       ], | ||||||
|  |       "image_size_limit": 10485760, | ||||||
|  |       "image_matrix_limit": 16777216, | ||||||
|  |       "video_size_limit": 41943040, | ||||||
|  |       "video_frame_rate_limit": 60, | ||||||
|  |       "video_matrix_limit": 16777216 | ||||||
|  |     }, | ||||||
|  |     "polls": { | ||||||
|  |       "max_options": 6, | ||||||
|  |       "max_characters_per_option": 50, | ||||||
|  |       "min_expiration": 300, | ||||||
|  |       "max_expiration": 2629746 | ||||||
|  |     }, | ||||||
|  |     "accounts": { | ||||||
|  |       "allow_custom_css": true | ||||||
|  |     }, | ||||||
|  |     "emojis": { | ||||||
|  |       "emoji_size_limit": 51200 | ||||||
|  |     } | ||||||
|  |   }, | ||||||
|  |   "urls": { | ||||||
|  |     "streaming_api": "wss://localhost:8080" | ||||||
|  |   }, | ||||||
|  |   "stats": { | ||||||
|  |     "domain_count": 2, | ||||||
|  |     "status_count": 16, | ||||||
|  |     "user_count": 4 | ||||||
|  |   }, | ||||||
|  |   "thumbnail": "http://localhost:8080/fileserver/01AY6P665V14JJR0AFVRT7311Y/attachment/original/`+instanceAccount.AvatarMediaAttachment.ID+`.gif",`+` | ||||||
|  |   "thumbnail_type": "image/gif", | ||||||
|  |   "thumbnail_description": "A bouncing little green peglin.", | ||||||
|  |   "contact_account": { | ||||||
|  |     "id": "01F8MH17FWEB39HZJ76B6VXSKF", | ||||||
|  |     "username": "admin", | ||||||
|  |     "acct": "admin", | ||||||
|  |     "display_name": "", | ||||||
|  |     "locked": false, | ||||||
|  |     "bot": false, | ||||||
|  |     "created_at": "2022-05-17T13:10:59.000Z", | ||||||
|  |     "note": "", | ||||||
|  |     "url": "http://localhost:8080/@admin", | ||||||
|  |     "avatar": "", | ||||||
|  |     "avatar_static": "", | ||||||
|  |     "header": "http://localhost:8080/assets/default_header.png", | ||||||
|  |     "header_static": "http://localhost:8080/assets/default_header.png", | ||||||
|  |     "followers_count": 1, | ||||||
|  |     "following_count": 1, | ||||||
|  |     "statuses_count": 4, | ||||||
|  |     "last_status_at": "2021-10-20T10:41:37.000Z", | ||||||
|  |     "emojis": [], | ||||||
|  |     "fields": [], | ||||||
|  |     "enable_rss": true, | ||||||
|  |     "role": "admin" | ||||||
|  |   }, | ||||||
|  |   "max_toot_chars": 5000 | ||||||
|  | }`, dst.String()) | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| func TestInstancePatchTestSuite(t *testing.T) { | func TestInstancePatchTestSuite(t *testing.T) { | ||||||
|  |  | ||||||
|  | @ -19,7 +19,9 @@ | ||||||
| package instance_test | package instance_test | ||||||
| 
 | 
 | ||||||
| import ( | import ( | ||||||
|  | 	"bytes" | ||||||
| 	"context" | 	"context" | ||||||
|  | 	"encoding/json" | ||||||
| 	"fmt" | 	"fmt" | ||||||
| 	"io" | 	"io" | ||||||
| 	"net/http" | 	"net/http" | ||||||
|  | @ -56,8 +58,13 @@ func (suite *InstancePeersGetTestSuite) TestInstancePeersGetNoParams() { | ||||||
| 
 | 
 | ||||||
| 	b, err := io.ReadAll(result.Body) | 	b, err := io.ReadAll(result.Body) | ||||||
| 	suite.NoError(err) | 	suite.NoError(err) | ||||||
| 
 | 	dst := new(bytes.Buffer) | ||||||
| 	suite.Equal(`["example.org","fossbros-anonymous.io"]`, string(b)) | 	err = json.Indent(dst, b, "", "  ") | ||||||
|  | 	suite.NoError(err) | ||||||
|  | 	suite.Equal(`[ | ||||||
|  |   "example.org", | ||||||
|  |   "fossbros-anonymous.io" | ||||||
|  | ]`, dst.String()) | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| func (suite *InstancePeersGetTestSuite) TestInstancePeersGetNoParamsUnauthorized() { | func (suite *InstancePeersGetTestSuite) TestInstancePeersGetNoParamsUnauthorized() { | ||||||
|  | @ -98,8 +105,13 @@ func (suite *InstancePeersGetTestSuite) TestInstancePeersGetNoParamsAuthorized() | ||||||
| 
 | 
 | ||||||
| 	b, err := io.ReadAll(result.Body) | 	b, err := io.ReadAll(result.Body) | ||||||
| 	suite.NoError(err) | 	suite.NoError(err) | ||||||
| 
 | 	dst := new(bytes.Buffer) | ||||||
| 	suite.Equal(`["example.org","fossbros-anonymous.io"]`, string(b)) | 	err = json.Indent(dst, b, "", "  ") | ||||||
|  | 	suite.NoError(err) | ||||||
|  | 	suite.Equal(`[ | ||||||
|  |   "example.org", | ||||||
|  |   "fossbros-anonymous.io" | ||||||
|  | ]`, dst.String()) | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| func (suite *InstancePeersGetTestSuite) TestInstancePeersGetOnlySuspended() { | func (suite *InstancePeersGetTestSuite) TestInstancePeersGetOnlySuspended() { | ||||||
|  | @ -117,8 +129,16 @@ func (suite *InstancePeersGetTestSuite) TestInstancePeersGetOnlySuspended() { | ||||||
| 
 | 
 | ||||||
| 	b, err := io.ReadAll(result.Body) | 	b, err := io.ReadAll(result.Body) | ||||||
| 	suite.NoError(err) | 	suite.NoError(err) | ||||||
| 
 | 	dst := new(bytes.Buffer) | ||||||
| 	suite.Equal(`[{"domain":"replyguys.com","suspended_at":"2020-05-13T13:29:12.000Z","public_comment":"reply-guying to tech posts"}]`, string(b)) | 	err = json.Indent(dst, b, "", "  ") | ||||||
|  | 	suite.NoError(err) | ||||||
|  | 	suite.Equal(`[ | ||||||
|  |   { | ||||||
|  |     "domain": "replyguys.com", | ||||||
|  |     "suspended_at": "2020-05-13T13:29:12.000Z", | ||||||
|  |     "public_comment": "reply-guying to tech posts" | ||||||
|  |   } | ||||||
|  | ]`, dst.String()) | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| func (suite *InstancePeersGetTestSuite) TestInstancePeersGetOnlySuspendedUnauthorized() { | func (suite *InstancePeersGetTestSuite) TestInstancePeersGetOnlySuspendedUnauthorized() { | ||||||
|  | @ -159,8 +179,16 @@ func (suite *InstancePeersGetTestSuite) TestInstancePeersGetOnlySuspendedAuthori | ||||||
| 
 | 
 | ||||||
| 	b, err := io.ReadAll(result.Body) | 	b, err := io.ReadAll(result.Body) | ||||||
| 	suite.NoError(err) | 	suite.NoError(err) | ||||||
| 
 | 	dst := new(bytes.Buffer) | ||||||
| 	suite.Equal(`[{"domain":"replyguys.com","suspended_at":"2020-05-13T13:29:12.000Z","public_comment":"reply-guying to tech posts"}]`, string(b)) | 	err = json.Indent(dst, b, "", "  ") | ||||||
|  | 	suite.NoError(err) | ||||||
|  | 	suite.Equal(`[ | ||||||
|  |   { | ||||||
|  |     "domain": "replyguys.com", | ||||||
|  |     "suspended_at": "2020-05-13T13:29:12.000Z", | ||||||
|  |     "public_comment": "reply-guying to tech posts" | ||||||
|  |   } | ||||||
|  | ]`, dst.String()) | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| func (suite *InstancePeersGetTestSuite) TestInstancePeersGetAll() { | func (suite *InstancePeersGetTestSuite) TestInstancePeersGetAll() { | ||||||
|  | @ -178,8 +206,22 @@ func (suite *InstancePeersGetTestSuite) TestInstancePeersGetAll() { | ||||||
| 
 | 
 | ||||||
| 	b, err := io.ReadAll(result.Body) | 	b, err := io.ReadAll(result.Body) | ||||||
| 	suite.NoError(err) | 	suite.NoError(err) | ||||||
| 
 | 	dst := new(bytes.Buffer) | ||||||
| 	suite.Equal(`[{"domain":"example.org"},{"domain":"fossbros-anonymous.io"},{"domain":"replyguys.com","suspended_at":"2020-05-13T13:29:12.000Z","public_comment":"reply-guying to tech posts"}]`, string(b)) | 	err = json.Indent(dst, b, "", "  ") | ||||||
|  | 	suite.NoError(err) | ||||||
|  | 	suite.Equal(`[ | ||||||
|  |   { | ||||||
|  |     "domain": "example.org" | ||||||
|  |   }, | ||||||
|  |   { | ||||||
|  |     "domain": "fossbros-anonymous.io" | ||||||
|  |   }, | ||||||
|  |   { | ||||||
|  |     "domain": "replyguys.com", | ||||||
|  |     "suspended_at": "2020-05-13T13:29:12.000Z", | ||||||
|  |     "public_comment": "reply-guying to tech posts" | ||||||
|  |   } | ||||||
|  | ]`, dst.String()) | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| func (suite *InstancePeersGetTestSuite) TestInstancePeersGetAllWithObfuscated() { | func (suite *InstancePeersGetTestSuite) TestInstancePeersGetAllWithObfuscated() { | ||||||
|  | @ -208,8 +250,27 @@ func (suite *InstancePeersGetTestSuite) TestInstancePeersGetAllWithObfuscated() | ||||||
| 
 | 
 | ||||||
| 	b, err := io.ReadAll(result.Body) | 	b, err := io.ReadAll(result.Body) | ||||||
| 	suite.NoError(err) | 	suite.NoError(err) | ||||||
| 
 | 	dst := new(bytes.Buffer) | ||||||
| 	suite.Equal(`[{"domain":"example.org"},{"domain":"fossbros-anonymous.io"},{"domain":"o*g.*u**.t**.*or*t.*r**ev**","suspended_at":"2021-06-09T10:34:55.000Z","public_comment":"just absolutely the worst, wowza"},{"domain":"replyguys.com","suspended_at":"2020-05-13T13:29:12.000Z","public_comment":"reply-guying to tech posts"}]`, string(b)) | 	err = json.Indent(dst, b, "", "  ") | ||||||
|  | 	suite.NoError(err) | ||||||
|  | 	suite.Equal(`[ | ||||||
|  |   { | ||||||
|  |     "domain": "example.org" | ||||||
|  |   }, | ||||||
|  |   { | ||||||
|  |     "domain": "fossbros-anonymous.io" | ||||||
|  |   }, | ||||||
|  |   { | ||||||
|  |     "domain": "o*g.*u**.t**.*or*t.*r**ev**", | ||||||
|  |     "suspended_at": "2021-06-09T10:34:55.000Z", | ||||||
|  |     "public_comment": "just absolutely the worst, wowza" | ||||||
|  |   }, | ||||||
|  |   { | ||||||
|  |     "domain": "replyguys.com", | ||||||
|  |     "suspended_at": "2020-05-13T13:29:12.000Z", | ||||||
|  |     "public_comment": "reply-guying to tech posts" | ||||||
|  |   } | ||||||
|  | ]`, dst.String()) | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| func (suite *InstancePeersGetTestSuite) TestInstancePeersGetFunkyParams() { | func (suite *InstancePeersGetTestSuite) TestInstancePeersGetFunkyParams() { | ||||||
|  |  | ||||||
|  | @ -26,11 +26,11 @@ type Source struct { | ||||||
| 	//    unlisted = Unlisted post | 	//    unlisted = Unlisted post | ||||||
| 	//    private = Followers-only post | 	//    private = Followers-only post | ||||||
| 	//    direct = Direct post | 	//    direct = Direct post | ||||||
| 	Privacy Visibility `json:"privacy,omitempty"` | 	Privacy Visibility `json:"privacy"` | ||||||
| 	// Whether new statuses should be marked sensitive by default. | 	// Whether new statuses should be marked sensitive by default. | ||||||
| 	Sensitive bool `json:"sensitive,omitempty"` | 	Sensitive bool `json:"sensitive"` | ||||||
| 	// The default posting language for new statuses. | 	// The default posting language for new statuses. | ||||||
| 	Language string `json:"language,omitempty"` | 	Language string `json:"language"` | ||||||
| 	// The default posting format for new statuses. | 	// The default posting format for new statuses. | ||||||
| 	StatusFormat string `json:"status_format"` | 	StatusFormat string `json:"status_format"` | ||||||
| 	// Profile bio. | 	// Profile bio. | ||||||
|  | @ -38,5 +38,5 @@ type Source struct { | ||||||
| 	// Metadata about the account. | 	// Metadata about the account. | ||||||
| 	Fields []Field `json:"fields"` | 	Fields []Field `json:"fields"` | ||||||
| 	// The number of pending follow requests. | 	// The number of pending follow requests. | ||||||
| 	FollowRequestsCount int `json:"follow_requests_count,omitempty"` | 	FollowRequestsCount int `json:"follow_requests_count"` | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -19,14 +19,15 @@ | ||||||
| package webfinger_test | package webfinger_test | ||||||
| 
 | 
 | ||||||
| import ( | import ( | ||||||
|  | 	"bytes" | ||||||
| 	"context" | 	"context" | ||||||
|  | 	"encoding/json" | ||||||
| 	"fmt" | 	"fmt" | ||||||
| 	"io/ioutil" | 	"io/ioutil" | ||||||
| 	"net/http" | 	"net/http" | ||||||
| 	"net/http/httptest" | 	"net/http/httptest" | ||||||
| 	"testing" | 	"testing" | ||||||
| 
 | 
 | ||||||
| 	"github.com/stretchr/testify/assert" |  | ||||||
| 	"github.com/stretchr/testify/suite" | 	"github.com/stretchr/testify/suite" | ||||||
| 	"github.com/superseriousbusiness/gotosocial/internal/api/wellknown/webfinger" | 	"github.com/superseriousbusiness/gotosocial/internal/api/wellknown/webfinger" | ||||||
| 	"github.com/superseriousbusiness/gotosocial/internal/concurrency" | 	"github.com/superseriousbusiness/gotosocial/internal/concurrency" | ||||||
|  | @ -61,9 +62,29 @@ func (suite *WebfingerGetTestSuite) TestFingerUser() { | ||||||
| 	result := recorder.Result() | 	result := recorder.Result() | ||||||
| 	defer result.Body.Close() | 	defer result.Body.Close() | ||||||
| 	b, err := ioutil.ReadAll(result.Body) | 	b, err := ioutil.ReadAll(result.Body) | ||||||
| 	assert.NoError(suite.T(), err) | 	suite.NoError(err) | ||||||
| 
 | 	dst := new(bytes.Buffer) | ||||||
| 	suite.Equal(`{"subject":"acct:the_mighty_zork@localhost:8080","aliases":["http://localhost:8080/users/the_mighty_zork","http://localhost:8080/@the_mighty_zork"],"links":[{"rel":"http://webfinger.net/rel/profile-page","type":"text/html","href":"http://localhost:8080/@the_mighty_zork"},{"rel":"self","type":"application/activity+json","href":"http://localhost:8080/users/the_mighty_zork"}]}`, string(b)) | 	err = json.Indent(dst, b, "", "  ") | ||||||
|  | 	suite.NoError(err) | ||||||
|  | 	suite.Equal(`{ | ||||||
|  |   "subject": "acct:the_mighty_zork@localhost:8080", | ||||||
|  |   "aliases": [ | ||||||
|  |     "http://localhost:8080/users/the_mighty_zork", | ||||||
|  |     "http://localhost:8080/@the_mighty_zork" | ||||||
|  |   ], | ||||||
|  |   "links": [ | ||||||
|  |     { | ||||||
|  |       "rel": "http://webfinger.net/rel/profile-page", | ||||||
|  |       "type": "text/html", | ||||||
|  |       "href": "http://localhost:8080/@the_mighty_zork" | ||||||
|  |     }, | ||||||
|  |     { | ||||||
|  |       "rel": "self", | ||||||
|  |       "type": "application/activity+json", | ||||||
|  |       "href": "http://localhost:8080/users/the_mighty_zork" | ||||||
|  |     } | ||||||
|  |   ] | ||||||
|  | }`, dst.String()) | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| func (suite *WebfingerGetTestSuite) TestFingerUserWithDifferentAccountDomainByHost() { | func (suite *WebfingerGetTestSuite) TestFingerUserWithDifferentAccountDomainByHost() { | ||||||
|  | @ -98,9 +119,29 @@ func (suite *WebfingerGetTestSuite) TestFingerUserWithDifferentAccountDomainByHo | ||||||
| 	result := recorder.Result() | 	result := recorder.Result() | ||||||
| 	defer result.Body.Close() | 	defer result.Body.Close() | ||||||
| 	b, err := ioutil.ReadAll(result.Body) | 	b, err := ioutil.ReadAll(result.Body) | ||||||
| 	assert.NoError(suite.T(), err) | 	suite.NoError(err) | ||||||
| 
 | 	dst := new(bytes.Buffer) | ||||||
| 	suite.Equal(`{"subject":"acct:aaaaa@example.org","aliases":["http://gts.example.org/users/aaaaa","http://gts.example.org/@aaaaa"],"links":[{"rel":"http://webfinger.net/rel/profile-page","type":"text/html","href":"http://gts.example.org/@aaaaa"},{"rel":"self","type":"application/activity+json","href":"http://gts.example.org/users/aaaaa"}]}`, string(b)) | 	err = json.Indent(dst, b, "", "  ") | ||||||
|  | 	suite.NoError(err) | ||||||
|  | 	suite.Equal(`{ | ||||||
|  |   "subject": "acct:aaaaa@example.org", | ||||||
|  |   "aliases": [ | ||||||
|  |     "http://gts.example.org/users/aaaaa", | ||||||
|  |     "http://gts.example.org/@aaaaa" | ||||||
|  |   ], | ||||||
|  |   "links": [ | ||||||
|  |     { | ||||||
|  |       "rel": "http://webfinger.net/rel/profile-page", | ||||||
|  |       "type": "text/html", | ||||||
|  |       "href": "http://gts.example.org/@aaaaa" | ||||||
|  |     }, | ||||||
|  |     { | ||||||
|  |       "rel": "self", | ||||||
|  |       "type": "application/activity+json", | ||||||
|  |       "href": "http://gts.example.org/users/aaaaa" | ||||||
|  |     } | ||||||
|  |   ] | ||||||
|  | }`, dst.String()) | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| func (suite *WebfingerGetTestSuite) TestFingerUserWithDifferentAccountDomainByAccountDomain() { | func (suite *WebfingerGetTestSuite) TestFingerUserWithDifferentAccountDomainByAccountDomain() { | ||||||
|  | @ -135,9 +176,29 @@ func (suite *WebfingerGetTestSuite) TestFingerUserWithDifferentAccountDomainByAc | ||||||
| 	result := recorder.Result() | 	result := recorder.Result() | ||||||
| 	defer result.Body.Close() | 	defer result.Body.Close() | ||||||
| 	b, err := ioutil.ReadAll(result.Body) | 	b, err := ioutil.ReadAll(result.Body) | ||||||
| 	assert.NoError(suite.T(), err) | 	suite.NoError(err) | ||||||
| 
 | 	dst := new(bytes.Buffer) | ||||||
| 	suite.Equal(`{"subject":"acct:aaaaa@example.org","aliases":["http://gts.example.org/users/aaaaa","http://gts.example.org/@aaaaa"],"links":[{"rel":"http://webfinger.net/rel/profile-page","type":"text/html","href":"http://gts.example.org/@aaaaa"},{"rel":"self","type":"application/activity+json","href":"http://gts.example.org/users/aaaaa"}]}`, string(b)) | 	err = json.Indent(dst, b, "", "  ") | ||||||
|  | 	suite.NoError(err) | ||||||
|  | 	suite.Equal(`{ | ||||||
|  |   "subject": "acct:aaaaa@example.org", | ||||||
|  |   "aliases": [ | ||||||
|  |     "http://gts.example.org/users/aaaaa", | ||||||
|  |     "http://gts.example.org/@aaaaa" | ||||||
|  |   ], | ||||||
|  |   "links": [ | ||||||
|  |     { | ||||||
|  |       "rel": "http://webfinger.net/rel/profile-page", | ||||||
|  |       "type": "text/html", | ||||||
|  |       "href": "http://gts.example.org/@aaaaa" | ||||||
|  |     }, | ||||||
|  |     { | ||||||
|  |       "rel": "self", | ||||||
|  |       "type": "application/activity+json", | ||||||
|  |       "href": "http://gts.example.org/users/aaaaa" | ||||||
|  |     } | ||||||
|  |   ] | ||||||
|  | }`, dst.String()) | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| func (suite *WebfingerGetTestSuite) TestFingerUserWithoutAcct() { | func (suite *WebfingerGetTestSuite) TestFingerUserWithoutAcct() { | ||||||
|  | @ -161,9 +222,29 @@ func (suite *WebfingerGetTestSuite) TestFingerUserWithoutAcct() { | ||||||
| 	result := recorder.Result() | 	result := recorder.Result() | ||||||
| 	defer result.Body.Close() | 	defer result.Body.Close() | ||||||
| 	b, err := ioutil.ReadAll(result.Body) | 	b, err := ioutil.ReadAll(result.Body) | ||||||
| 	assert.NoError(suite.T(), err) | 	suite.NoError(err) | ||||||
| 
 | 	dst := new(bytes.Buffer) | ||||||
| 	suite.Equal(`{"subject":"acct:the_mighty_zork@localhost:8080","aliases":["http://localhost:8080/users/the_mighty_zork","http://localhost:8080/@the_mighty_zork"],"links":[{"rel":"http://webfinger.net/rel/profile-page","type":"text/html","href":"http://localhost:8080/@the_mighty_zork"},{"rel":"self","type":"application/activity+json","href":"http://localhost:8080/users/the_mighty_zork"}]}`, string(b)) | 	err = json.Indent(dst, b, "", "  ") | ||||||
|  | 	suite.NoError(err) | ||||||
|  | 	suite.Equal(`{ | ||||||
|  |   "subject": "acct:the_mighty_zork@localhost:8080", | ||||||
|  |   "aliases": [ | ||||||
|  |     "http://localhost:8080/users/the_mighty_zork", | ||||||
|  |     "http://localhost:8080/@the_mighty_zork" | ||||||
|  |   ], | ||||||
|  |   "links": [ | ||||||
|  |     { | ||||||
|  |       "rel": "http://webfinger.net/rel/profile-page", | ||||||
|  |       "type": "text/html", | ||||||
|  |       "href": "http://localhost:8080/@the_mighty_zork" | ||||||
|  |     }, | ||||||
|  |     { | ||||||
|  |       "rel": "self", | ||||||
|  |       "type": "application/activity+json", | ||||||
|  |       "href": "http://localhost:8080/users/the_mighty_zork" | ||||||
|  |     } | ||||||
|  |   ] | ||||||
|  | }`, dst.String()) | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| func TestWebfingerGetTestSuite(t *testing.T) { | func TestWebfingerGetTestSuite(t *testing.T) { | ||||||
|  |  | ||||||
|  | @ -19,7 +19,9 @@ | ||||||
| package federation_test | package federation_test | ||||||
| 
 | 
 | ||||||
| import ( | import ( | ||||||
|  | 	"bytes" | ||||||
| 	"context" | 	"context" | ||||||
|  | 	"encoding/json" | ||||||
| 	"net/url" | 	"net/url" | ||||||
| 	"testing" | 	"testing" | ||||||
| 	"time" | 	"time" | ||||||
|  | @ -130,7 +132,27 @@ func (suite *FederatingActorTestSuite) TestSendRemoteFollower() { | ||||||
| 		suite.FailNow("timed out waiting for message") | 		suite.FailNow("timed out waiting for message") | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	suite.Equal(`{"@context":"https://www.w3.org/ns/activitystreams","actor":"http://localhost:8080/users/the_mighty_zork","id":"http://localhost:8080/whatever_some_create","object":{"attributedTo":"http://localhost:8080/users/the_mighty_zork","content":"boobies","id":"http://localhost:8080/users/the_mighty_zork/statuses/01G1TR6BADACCZWQMNF9X21TV5","published":"2022-06-02T12:22:21+02:00","tag":[],"to":"http://localhost:8080/users/the_mighty_zork/followers","type":"Note","url":"http://localhost:8080/@the_mighty_zork/statuses/01G1TR6BADACCZWQMNF9X21TV5"},"published":"2022-06-02T12:22:21+02:00","to":"http://localhost:8080/users/the_mighty_zork/followers","type":"Create"}`, string(sent[0])) | 	dst := new(bytes.Buffer) | ||||||
|  | 	err = json.Indent(dst, sent[0], "", "  ") | ||||||
|  | 	suite.NoError(err) | ||||||
|  | 	suite.Equal(`{ | ||||||
|  |   "@context": "https://www.w3.org/ns/activitystreams", | ||||||
|  |   "actor": "http://localhost:8080/users/the_mighty_zork", | ||||||
|  |   "id": "http://localhost:8080/whatever_some_create", | ||||||
|  |   "object": { | ||||||
|  |     "attributedTo": "http://localhost:8080/users/the_mighty_zork", | ||||||
|  |     "content": "boobies", | ||||||
|  |     "id": "http://localhost:8080/users/the_mighty_zork/statuses/01G1TR6BADACCZWQMNF9X21TV5", | ||||||
|  |     "published": "2022-06-02T12:22:21+02:00", | ||||||
|  |     "tag": [], | ||||||
|  |     "to": "http://localhost:8080/users/the_mighty_zork/followers", | ||||||
|  |     "type": "Note", | ||||||
|  |     "url": "http://localhost:8080/@the_mighty_zork/statuses/01G1TR6BADACCZWQMNF9X21TV5" | ||||||
|  |   }, | ||||||
|  |   "published": "2022-06-02T12:22:21+02:00", | ||||||
|  |   "to": "http://localhost:8080/users/the_mighty_zork/followers", | ||||||
|  |   "type": "Create" | ||||||
|  | }`, dst.String()) | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| func TestFederatingActorTestSuite(t *testing.T) { | func TestFederatingActorTestSuite(t *testing.T) { | ||||||
|  |  | ||||||
|  | @ -41,11 +41,15 @@ func (suite *FollowersTestSuite) TestGetFollowers() { | ||||||
| 	fi, err := streams.Serialize(f) | 	fi, err := streams.Serialize(f) | ||||||
| 	suite.NoError(err) | 	suite.NoError(err) | ||||||
| 
 | 
 | ||||||
| 	fJson, err := json.Marshal(fi) | 	fJson, err := json.MarshalIndent(fi, "", "  ") | ||||||
| 	suite.NoError(err) | 	suite.NoError(err) | ||||||
| 
 | 
 | ||||||
| 	// zork follows local_account_2 so this should be reflected in the response | 	// zork follows local_account_2 so this should be reflected in the response | ||||||
| 	suite.Equal(`{"@context":"https://www.w3.org/ns/activitystreams","items":"http://localhost:8080/users/the_mighty_zork","type":"Collection"}`, string(fJson)) | 	suite.Equal(`{ | ||||||
|  |   "@context": "https://www.w3.org/ns/activitystreams", | ||||||
|  |   "items": "http://localhost:8080/users/the_mighty_zork", | ||||||
|  |   "type": "Collection" | ||||||
|  | }`, string(fJson)) | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| func TestFollowersTestSuite(t *testing.T) { | func TestFollowersTestSuite(t *testing.T) { | ||||||
|  |  | ||||||
|  | @ -41,11 +41,18 @@ func (suite *FollowingTestSuite) TestGetFollowing() { | ||||||
| 	fi, err := streams.Serialize(f) | 	fi, err := streams.Serialize(f) | ||||||
| 	suite.NoError(err) | 	suite.NoError(err) | ||||||
| 
 | 
 | ||||||
| 	fJson, err := json.Marshal(fi) | 	fJson, err := json.MarshalIndent(fi, "", "  ") | ||||||
| 	suite.NoError(err) | 	suite.NoError(err) | ||||||
| 
 | 
 | ||||||
| 	// zork follows admin account and local_account_1 | 	// zork follows admin account and local_account_1 | ||||||
| 	suite.Equal(`{"@context":"https://www.w3.org/ns/activitystreams","items":["http://localhost:8080/users/admin","http://localhost:8080/users/1happyturtle"],"type":"Collection"}`, string(fJson)) | 	suite.Equal(`{ | ||||||
|  |   "@context": "https://www.w3.org/ns/activitystreams", | ||||||
|  |   "items": [ | ||||||
|  |     "http://localhost:8080/users/admin", | ||||||
|  |     "http://localhost:8080/users/1happyturtle" | ||||||
|  |   ], | ||||||
|  |   "type": "Collection" | ||||||
|  | }`, string(fJson)) | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| func TestFollowingTestSuite(t *testing.T) { | func TestFollowingTestSuite(t *testing.T) { | ||||||
|  |  | ||||||
|  | @ -19,7 +19,9 @@ | ||||||
| package streaming_test | package streaming_test | ||||||
| 
 | 
 | ||||||
| import ( | import ( | ||||||
|  | 	"bytes" | ||||||
| 	"context" | 	"context" | ||||||
|  | 	"encoding/json" | ||||||
| 	"testing" | 	"testing" | ||||||
| 
 | 
 | ||||||
| 	"github.com/stretchr/testify/suite" | 	"github.com/stretchr/testify/suite" | ||||||
|  | @ -52,7 +54,35 @@ func (suite *NotificationTestSuite) TestStreamNotification() { | ||||||
| 	suite.NoError(err) | 	suite.NoError(err) | ||||||
| 
 | 
 | ||||||
| 	msg := <-openStream.Messages | 	msg := <-openStream.Messages | ||||||
| 	suite.Equal(`{"id":"01FH57SJCMDWQGEAJ0X08CE3WV","type":"follow","created_at":"2021-10-04T08:52:36.000Z","account":{"id":"01F8MH5ZK5VRH73AKHQM6Y9VNX","username":"foss_satan","acct":"foss_satan@fossbros-anonymous.io","display_name":"big gerald","locked":false,"bot":false,"created_at":"2021-09-26T10:52:36.000Z","note":"i post about like, i dunno, stuff, or whatever!!!!","url":"http://fossbros-anonymous.io/@foss_satan","avatar":"","avatar_static":"","header":"http://localhost:8080/assets/default_header.png","header_static":"http://localhost:8080/assets/default_header.png","followers_count":0,"following_count":0,"statuses_count":1,"last_status_at":"2021-09-20T10:40:37.000Z","emojis":[],"fields":[]}}`, msg.Payload) | 	dst := new(bytes.Buffer) | ||||||
|  | 	err = json.Indent(dst, []byte(msg.Payload), "", "  ") | ||||||
|  | 	suite.NoError(err) | ||||||
|  | 	suite.Equal(`{ | ||||||
|  |   "id": "01FH57SJCMDWQGEAJ0X08CE3WV", | ||||||
|  |   "type": "follow", | ||||||
|  |   "created_at": "2021-10-04T08:52:36.000Z", | ||||||
|  |   "account": { | ||||||
|  |     "id": "01F8MH5ZK5VRH73AKHQM6Y9VNX", | ||||||
|  |     "username": "foss_satan", | ||||||
|  |     "acct": "foss_satan@fossbros-anonymous.io", | ||||||
|  |     "display_name": "big gerald", | ||||||
|  |     "locked": false, | ||||||
|  |     "bot": false, | ||||||
|  |     "created_at": "2021-09-26T10:52:36.000Z", | ||||||
|  |     "note": "i post about like, i dunno, stuff, or whatever!!!!", | ||||||
|  |     "url": "http://fossbros-anonymous.io/@foss_satan", | ||||||
|  |     "avatar": "", | ||||||
|  |     "avatar_static": "", | ||||||
|  |     "header": "http://localhost:8080/assets/default_header.png", | ||||||
|  |     "header_static": "http://localhost:8080/assets/default_header.png", | ||||||
|  |     "followers_count": 0, | ||||||
|  |     "following_count": 0, | ||||||
|  |     "statuses_count": 1, | ||||||
|  |     "last_status_at": "2021-09-20T10:40:37.000Z", | ||||||
|  |     "emojis": [], | ||||||
|  |     "fields": [] | ||||||
|  |   } | ||||||
|  | }`, dst.String()) | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| func TestNotificationTestSuite(t *testing.T) { | func TestNotificationTestSuite(t *testing.T) { | ||||||
|  |  | ||||||
|  | @ -44,14 +44,43 @@ func (suite *InternalToASTestSuite) TestAccountToAS() { | ||||||
| 	ser, err := streams.Serialize(asPerson) | 	ser, err := streams.Serialize(asPerson) | ||||||
| 	suite.NoError(err) | 	suite.NoError(err) | ||||||
| 
 | 
 | ||||||
| 	bytes, err := json.Marshal(ser) | 	bytes, err := json.MarshalIndent(ser, "", "  ") | ||||||
| 	suite.NoError(err) | 	suite.NoError(err) | ||||||
| 
 | 
 | ||||||
| 	// trim off everything up to 'discoverable'; | 	// trim off everything up to 'discoverable'; | ||||||
| 	// this is necessary because the order of multiple 'context' entries is not determinate | 	// this is necessary because the order of multiple 'context' entries is not determinate | ||||||
| 	trimmed := strings.Split(string(bytes), "\"discoverable\"")[1] | 	trimmed := strings.Split(string(bytes), "\"discoverable\"")[1] | ||||||
| 
 | 
 | ||||||
| 	suite.Equal(`:true,"featured":"http://localhost:8080/users/the_mighty_zork/collections/featured","followers":"http://localhost:8080/users/the_mighty_zork/followers","following":"http://localhost:8080/users/the_mighty_zork/following","icon":{"mediaType":"image/jpeg","type":"Image","url":"http://localhost:8080/fileserver/01F8MH1H7YV1Z7D2C8K2730QBF/avatar/original/01F8MH58A357CV5K7R7TJMSH6S.jpg"},"id":"http://localhost:8080/users/the_mighty_zork","image":{"mediaType":"image/jpeg","type":"Image","url":"http://localhost:8080/fileserver/01F8MH1H7YV1Z7D2C8K2730QBF/header/original/01PFPMWK2FF0D9WMHEJHR07C3Q.jpg"},"inbox":"http://localhost:8080/users/the_mighty_zork/inbox","manuallyApprovesFollowers":false,"name":"original zork (he/they)","outbox":"http://localhost:8080/users/the_mighty_zork/outbox","preferredUsername":"the_mighty_zork","publicKey":{"id":"http://localhost:8080/users/the_mighty_zork/main-key","owner":"http://localhost:8080/users/the_mighty_zork","publicKeyPem":"-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwXTcOAvM1Jiw5Ffpk0qn\nr0cwbNvFe/5zQ+Tp7tumK/ZnT37o7X0FUEXrxNi+dkhmeJ0gsaiN+JQGNUewvpSk\nPIAXKvi908aSfCGjs7bGlJCJCuDuL5d6m7hZnP9rt9fJc70GElPpG0jc9fXwlz7T\nlsPb2ecatmG05Y4jPwdC+oN4MNCv9yQzEvCVMzl76EJaM602kIHC1CISn0rDFmYd\n9rSN7XPlNJw1F6PbpJ/BWQ+pXHKw3OEwNTETAUNYiVGnZU+B7a7bZC9f6/aPbJuV\nt8Qmg+UnDvW1Y8gmfHnxaWG2f5TDBvCHmcYtucIZPLQD4trAozC4ryqlmCWQNKbt\n0wIDAQAB\n-----END PUBLIC KEY-----\n"},"summary":"\u003cp\u003ehey yo this is my profile!\u003c/p\u003e","tag":[],"type":"Person","url":"http://localhost:8080/@the_mighty_zork"}`, trimmed) | 	suite.Equal(`: true, | ||||||
|  |   "featured": "http://localhost:8080/users/the_mighty_zork/collections/featured", | ||||||
|  |   "followers": "http://localhost:8080/users/the_mighty_zork/followers", | ||||||
|  |   "following": "http://localhost:8080/users/the_mighty_zork/following", | ||||||
|  |   "icon": { | ||||||
|  |     "mediaType": "image/jpeg", | ||||||
|  |     "type": "Image", | ||||||
|  |     "url": "http://localhost:8080/fileserver/01F8MH1H7YV1Z7D2C8K2730QBF/avatar/original/01F8MH58A357CV5K7R7TJMSH6S.jpg" | ||||||
|  |   }, | ||||||
|  |   "id": "http://localhost:8080/users/the_mighty_zork", | ||||||
|  |   "image": { | ||||||
|  |     "mediaType": "image/jpeg", | ||||||
|  |     "type": "Image", | ||||||
|  |     "url": "http://localhost:8080/fileserver/01F8MH1H7YV1Z7D2C8K2730QBF/header/original/01PFPMWK2FF0D9WMHEJHR07C3Q.jpg" | ||||||
|  |   }, | ||||||
|  |   "inbox": "http://localhost:8080/users/the_mighty_zork/inbox", | ||||||
|  |   "manuallyApprovesFollowers": false, | ||||||
|  |   "name": "original zork (he/they)", | ||||||
|  |   "outbox": "http://localhost:8080/users/the_mighty_zork/outbox", | ||||||
|  |   "preferredUsername": "the_mighty_zork", | ||||||
|  |   "publicKey": { | ||||||
|  |     "id": "http://localhost:8080/users/the_mighty_zork/main-key", | ||||||
|  |     "owner": "http://localhost:8080/users/the_mighty_zork", | ||||||
|  |     "publicKeyPem": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwXTcOAvM1Jiw5Ffpk0qn\nr0cwbNvFe/5zQ+Tp7tumK/ZnT37o7X0FUEXrxNi+dkhmeJ0gsaiN+JQGNUewvpSk\nPIAXKvi908aSfCGjs7bGlJCJCuDuL5d6m7hZnP9rt9fJc70GElPpG0jc9fXwlz7T\nlsPb2ecatmG05Y4jPwdC+oN4MNCv9yQzEvCVMzl76EJaM602kIHC1CISn0rDFmYd\n9rSN7XPlNJw1F6PbpJ/BWQ+pXHKw3OEwNTETAUNYiVGnZU+B7a7bZC9f6/aPbJuV\nt8Qmg+UnDvW1Y8gmfHnxaWG2f5TDBvCHmcYtucIZPLQD4trAozC4ryqlmCWQNKbt\n0wIDAQAB\n-----END PUBLIC KEY-----\n" | ||||||
|  |   }, | ||||||
|  |   "summary": "\u003cp\u003ehey yo this is my profile!\u003c/p\u003e", | ||||||
|  |   "tag": [], | ||||||
|  |   "type": "Person", | ||||||
|  |   "url": "http://localhost:8080/@the_mighty_zork" | ||||||
|  | }`, trimmed) | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| func (suite *InternalToASTestSuite) TestAccountToASWithEmoji() { | func (suite *InternalToASTestSuite) TestAccountToASWithEmoji() { | ||||||
|  | @ -65,14 +94,53 @@ func (suite *InternalToASTestSuite) TestAccountToASWithEmoji() { | ||||||
| 	ser, err := streams.Serialize(asPerson) | 	ser, err := streams.Serialize(asPerson) | ||||||
| 	suite.NoError(err) | 	suite.NoError(err) | ||||||
| 
 | 
 | ||||||
| 	bytes, err := json.Marshal(ser) | 	bytes, err := json.MarshalIndent(ser, "", "  ") | ||||||
| 	suite.NoError(err) | 	suite.NoError(err) | ||||||
| 
 | 
 | ||||||
| 	// trim off everything up to 'discoverable'; | 	// trim off everything up to 'discoverable'; | ||||||
| 	// this is necessary because the order of multiple 'context' entries is not determinate | 	// this is necessary because the order of multiple 'context' entries is not determinate | ||||||
| 	trimmed := strings.Split(string(bytes), "\"discoverable\"")[1] | 	trimmed := strings.Split(string(bytes), "\"discoverable\"")[1] | ||||||
| 
 | 
 | ||||||
| 	suite.Equal(`:true,"featured":"http://localhost:8080/users/the_mighty_zork/collections/featured","followers":"http://localhost:8080/users/the_mighty_zork/followers","following":"http://localhost:8080/users/the_mighty_zork/following","icon":{"mediaType":"image/jpeg","type":"Image","url":"http://localhost:8080/fileserver/01F8MH1H7YV1Z7D2C8K2730QBF/avatar/original/01F8MH58A357CV5K7R7TJMSH6S.jpg"},"id":"http://localhost:8080/users/the_mighty_zork","image":{"mediaType":"image/jpeg","type":"Image","url":"http://localhost:8080/fileserver/01F8MH1H7YV1Z7D2C8K2730QBF/header/original/01PFPMWK2FF0D9WMHEJHR07C3Q.jpg"},"inbox":"http://localhost:8080/users/the_mighty_zork/inbox","manuallyApprovesFollowers":false,"name":"original zork (he/they)","outbox":"http://localhost:8080/users/the_mighty_zork/outbox","preferredUsername":"the_mighty_zork","publicKey":{"id":"http://localhost:8080/users/the_mighty_zork/main-key","owner":"http://localhost:8080/users/the_mighty_zork","publicKeyPem":"-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwXTcOAvM1Jiw5Ffpk0qn\nr0cwbNvFe/5zQ+Tp7tumK/ZnT37o7X0FUEXrxNi+dkhmeJ0gsaiN+JQGNUewvpSk\nPIAXKvi908aSfCGjs7bGlJCJCuDuL5d6m7hZnP9rt9fJc70GElPpG0jc9fXwlz7T\nlsPb2ecatmG05Y4jPwdC+oN4MNCv9yQzEvCVMzl76EJaM602kIHC1CISn0rDFmYd\n9rSN7XPlNJw1F6PbpJ/BWQ+pXHKw3OEwNTETAUNYiVGnZU+B7a7bZC9f6/aPbJuV\nt8Qmg+UnDvW1Y8gmfHnxaWG2f5TDBvCHmcYtucIZPLQD4trAozC4ryqlmCWQNKbt\n0wIDAQAB\n-----END PUBLIC KEY-----\n"},"summary":"\u003cp\u003ehey yo this is my profile!\u003c/p\u003e","tag":{"icon":{"mediaType":"image/png","type":"Image","url":"http://localhost:8080/fileserver/01AY6P665V14JJR0AFVRT7311Y/emoji/original/01F8MH9H8E4VG3KDYJR9EGPXCQ.png"},"id":"http://localhost:8080/emoji/01F8MH9H8E4VG3KDYJR9EGPXCQ","name":":rainbow:","type":"Emoji","updated":"2021-09-20T12:40:37+02:00"},"type":"Person","url":"http://localhost:8080/@the_mighty_zork"}`, trimmed) | 	suite.Equal(`: true, | ||||||
|  |   "featured": "http://localhost:8080/users/the_mighty_zork/collections/featured", | ||||||
|  |   "followers": "http://localhost:8080/users/the_mighty_zork/followers", | ||||||
|  |   "following": "http://localhost:8080/users/the_mighty_zork/following", | ||||||
|  |   "icon": { | ||||||
|  |     "mediaType": "image/jpeg", | ||||||
|  |     "type": "Image", | ||||||
|  |     "url": "http://localhost:8080/fileserver/01F8MH1H7YV1Z7D2C8K2730QBF/avatar/original/01F8MH58A357CV5K7R7TJMSH6S.jpg" | ||||||
|  |   }, | ||||||
|  |   "id": "http://localhost:8080/users/the_mighty_zork", | ||||||
|  |   "image": { | ||||||
|  |     "mediaType": "image/jpeg", | ||||||
|  |     "type": "Image", | ||||||
|  |     "url": "http://localhost:8080/fileserver/01F8MH1H7YV1Z7D2C8K2730QBF/header/original/01PFPMWK2FF0D9WMHEJHR07C3Q.jpg" | ||||||
|  |   }, | ||||||
|  |   "inbox": "http://localhost:8080/users/the_mighty_zork/inbox", | ||||||
|  |   "manuallyApprovesFollowers": false, | ||||||
|  |   "name": "original zork (he/they)", | ||||||
|  |   "outbox": "http://localhost:8080/users/the_mighty_zork/outbox", | ||||||
|  |   "preferredUsername": "the_mighty_zork", | ||||||
|  |   "publicKey": { | ||||||
|  |     "id": "http://localhost:8080/users/the_mighty_zork/main-key", | ||||||
|  |     "owner": "http://localhost:8080/users/the_mighty_zork", | ||||||
|  |     "publicKeyPem": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwXTcOAvM1Jiw5Ffpk0qn\nr0cwbNvFe/5zQ+Tp7tumK/ZnT37o7X0FUEXrxNi+dkhmeJ0gsaiN+JQGNUewvpSk\nPIAXKvi908aSfCGjs7bGlJCJCuDuL5d6m7hZnP9rt9fJc70GElPpG0jc9fXwlz7T\nlsPb2ecatmG05Y4jPwdC+oN4MNCv9yQzEvCVMzl76EJaM602kIHC1CISn0rDFmYd\n9rSN7XPlNJw1F6PbpJ/BWQ+pXHKw3OEwNTETAUNYiVGnZU+B7a7bZC9f6/aPbJuV\nt8Qmg+UnDvW1Y8gmfHnxaWG2f5TDBvCHmcYtucIZPLQD4trAozC4ryqlmCWQNKbt\n0wIDAQAB\n-----END PUBLIC KEY-----\n" | ||||||
|  |   }, | ||||||
|  |   "summary": "\u003cp\u003ehey yo this is my profile!\u003c/p\u003e", | ||||||
|  |   "tag": { | ||||||
|  |     "icon": { | ||||||
|  |       "mediaType": "image/png", | ||||||
|  |       "type": "Image", | ||||||
|  |       "url": "http://localhost:8080/fileserver/01AY6P665V14JJR0AFVRT7311Y/emoji/original/01F8MH9H8E4VG3KDYJR9EGPXCQ.png" | ||||||
|  |     }, | ||||||
|  |     "id": "http://localhost:8080/emoji/01F8MH9H8E4VG3KDYJR9EGPXCQ", | ||||||
|  |     "name": ":rainbow:", | ||||||
|  |     "type": "Emoji", | ||||||
|  |     "updated": "2021-09-20T12:40:37+02:00" | ||||||
|  |   }, | ||||||
|  |   "type": "Person", | ||||||
|  |   "url": "http://localhost:8080/@the_mighty_zork" | ||||||
|  | }`, trimmed) | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| func (suite *InternalToASTestSuite) TestAccountToASWithSharedInbox() { | func (suite *InternalToASTestSuite) TestAccountToASWithSharedInbox() { | ||||||
|  | @ -87,14 +155,46 @@ func (suite *InternalToASTestSuite) TestAccountToASWithSharedInbox() { | ||||||
| 	ser, err := streams.Serialize(asPerson) | 	ser, err := streams.Serialize(asPerson) | ||||||
| 	suite.NoError(err) | 	suite.NoError(err) | ||||||
| 
 | 
 | ||||||
| 	bytes, err := json.Marshal(ser) | 	bytes, err := json.MarshalIndent(ser, "", "  ") | ||||||
| 	suite.NoError(err) | 	suite.NoError(err) | ||||||
| 
 | 
 | ||||||
| 	// trim off everything up to 'discoverable'; | 	// trim off everything up to 'discoverable'; | ||||||
| 	// this is necessary because the order of multiple 'context' entries is not determinate | 	// this is necessary because the order of multiple 'context' entries is not determinate | ||||||
| 	trimmed := strings.Split(string(bytes), "\"discoverable\"")[1] | 	trimmed := strings.Split(string(bytes), "\"discoverable\"")[1] | ||||||
| 
 | 
 | ||||||
| 	suite.Equal(`:true,"endpoints":{"sharedInbox":"http://localhost:8080/sharedInbox"},"featured":"http://localhost:8080/users/the_mighty_zork/collections/featured","followers":"http://localhost:8080/users/the_mighty_zork/followers","following":"http://localhost:8080/users/the_mighty_zork/following","icon":{"mediaType":"image/jpeg","type":"Image","url":"http://localhost:8080/fileserver/01F8MH1H7YV1Z7D2C8K2730QBF/avatar/original/01F8MH58A357CV5K7R7TJMSH6S.jpg"},"id":"http://localhost:8080/users/the_mighty_zork","image":{"mediaType":"image/jpeg","type":"Image","url":"http://localhost:8080/fileserver/01F8MH1H7YV1Z7D2C8K2730QBF/header/original/01PFPMWK2FF0D9WMHEJHR07C3Q.jpg"},"inbox":"http://localhost:8080/users/the_mighty_zork/inbox","manuallyApprovesFollowers":false,"name":"original zork (he/they)","outbox":"http://localhost:8080/users/the_mighty_zork/outbox","preferredUsername":"the_mighty_zork","publicKey":{"id":"http://localhost:8080/users/the_mighty_zork/main-key","owner":"http://localhost:8080/users/the_mighty_zork","publicKeyPem":"-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwXTcOAvM1Jiw5Ffpk0qn\nr0cwbNvFe/5zQ+Tp7tumK/ZnT37o7X0FUEXrxNi+dkhmeJ0gsaiN+JQGNUewvpSk\nPIAXKvi908aSfCGjs7bGlJCJCuDuL5d6m7hZnP9rt9fJc70GElPpG0jc9fXwlz7T\nlsPb2ecatmG05Y4jPwdC+oN4MNCv9yQzEvCVMzl76EJaM602kIHC1CISn0rDFmYd\n9rSN7XPlNJw1F6PbpJ/BWQ+pXHKw3OEwNTETAUNYiVGnZU+B7a7bZC9f6/aPbJuV\nt8Qmg+UnDvW1Y8gmfHnxaWG2f5TDBvCHmcYtucIZPLQD4trAozC4ryqlmCWQNKbt\n0wIDAQAB\n-----END PUBLIC KEY-----\n"},"summary":"\u003cp\u003ehey yo this is my profile!\u003c/p\u003e","tag":[],"type":"Person","url":"http://localhost:8080/@the_mighty_zork"}`, trimmed) | 	suite.Equal(`: true, | ||||||
|  |   "endpoints": { | ||||||
|  |     "sharedInbox": "http://localhost:8080/sharedInbox" | ||||||
|  |   }, | ||||||
|  |   "featured": "http://localhost:8080/users/the_mighty_zork/collections/featured", | ||||||
|  |   "followers": "http://localhost:8080/users/the_mighty_zork/followers", | ||||||
|  |   "following": "http://localhost:8080/users/the_mighty_zork/following", | ||||||
|  |   "icon": { | ||||||
|  |     "mediaType": "image/jpeg", | ||||||
|  |     "type": "Image", | ||||||
|  |     "url": "http://localhost:8080/fileserver/01F8MH1H7YV1Z7D2C8K2730QBF/avatar/original/01F8MH58A357CV5K7R7TJMSH6S.jpg" | ||||||
|  |   }, | ||||||
|  |   "id": "http://localhost:8080/users/the_mighty_zork", | ||||||
|  |   "image": { | ||||||
|  |     "mediaType": "image/jpeg", | ||||||
|  |     "type": "Image", | ||||||
|  |     "url": "http://localhost:8080/fileserver/01F8MH1H7YV1Z7D2C8K2730QBF/header/original/01PFPMWK2FF0D9WMHEJHR07C3Q.jpg" | ||||||
|  |   }, | ||||||
|  |   "inbox": "http://localhost:8080/users/the_mighty_zork/inbox", | ||||||
|  |   "manuallyApprovesFollowers": false, | ||||||
|  |   "name": "original zork (he/they)", | ||||||
|  |   "outbox": "http://localhost:8080/users/the_mighty_zork/outbox", | ||||||
|  |   "preferredUsername": "the_mighty_zork", | ||||||
|  |   "publicKey": { | ||||||
|  |     "id": "http://localhost:8080/users/the_mighty_zork/main-key", | ||||||
|  |     "owner": "http://localhost:8080/users/the_mighty_zork", | ||||||
|  |     "publicKeyPem": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwXTcOAvM1Jiw5Ffpk0qn\nr0cwbNvFe/5zQ+Tp7tumK/ZnT37o7X0FUEXrxNi+dkhmeJ0gsaiN+JQGNUewvpSk\nPIAXKvi908aSfCGjs7bGlJCJCuDuL5d6m7hZnP9rt9fJc70GElPpG0jc9fXwlz7T\nlsPb2ecatmG05Y4jPwdC+oN4MNCv9yQzEvCVMzl76EJaM602kIHC1CISn0rDFmYd\n9rSN7XPlNJw1F6PbpJ/BWQ+pXHKw3OEwNTETAUNYiVGnZU+B7a7bZC9f6/aPbJuV\nt8Qmg+UnDvW1Y8gmfHnxaWG2f5TDBvCHmcYtucIZPLQD4trAozC4ryqlmCWQNKbt\n0wIDAQAB\n-----END PUBLIC KEY-----\n" | ||||||
|  |   }, | ||||||
|  |   "summary": "\u003cp\u003ehey yo this is my profile!\u003c/p\u003e", | ||||||
|  |   "tag": [], | ||||||
|  |   "type": "Person", | ||||||
|  |   "url": "http://localhost:8080/@the_mighty_zork" | ||||||
|  | }`, trimmed) | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| func (suite *InternalToASTestSuite) TestOutboxToASCollection() { | func (suite *InternalToASTestSuite) TestOutboxToASCollection() { | ||||||
|  | @ -107,20 +207,15 @@ func (suite *InternalToASTestSuite) TestOutboxToASCollection() { | ||||||
| 	ser, err := streams.Serialize(collection) | 	ser, err := streams.Serialize(collection) | ||||||
| 	suite.NoError(err) | 	suite.NoError(err) | ||||||
| 
 | 
 | ||||||
| 	bytes, err := json.Marshal(ser) | 	bytes, err := json.MarshalIndent(ser, "", "  ") | ||||||
| 	suite.NoError(err) | 	suite.NoError(err) | ||||||
| 
 | 
 | ||||||
| 	/* | 	suite.Equal(`{ | ||||||
| 		we want this: |  | ||||||
| 		{ |  | ||||||
|   "@context": "https://www.w3.org/ns/activitystreams", |   "@context": "https://www.w3.org/ns/activitystreams", | ||||||
|   "first": "http://localhost:8080/users/admin/outbox?page=true", |   "first": "http://localhost:8080/users/admin/outbox?page=true", | ||||||
|   "id": "http://localhost:8080/users/admin/outbox", |   "id": "http://localhost:8080/users/admin/outbox", | ||||||
|   "type": "OrderedCollection" |   "type": "OrderedCollection" | ||||||
| 		} | }`, string(bytes)) | ||||||
| 	*/ |  | ||||||
| 
 |  | ||||||
| 	suite.Equal(`{"@context":"https://www.w3.org/ns/activitystreams","first":"http://localhost:8080/users/admin/outbox?page=true","id":"http://localhost:8080/users/admin/outbox","type":"OrderedCollection"}`, string(bytes)) |  | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| func (suite *InternalToASTestSuite) TestStatusToAS() { | func (suite *InternalToASTestSuite) TestStatusToAS() { | ||||||
|  | @ -133,10 +228,34 @@ func (suite *InternalToASTestSuite) TestStatusToAS() { | ||||||
| 	ser, err := streams.Serialize(asStatus) | 	ser, err := streams.Serialize(asStatus) | ||||||
| 	suite.NoError(err) | 	suite.NoError(err) | ||||||
| 
 | 
 | ||||||
| 	bytes, err := json.Marshal(ser) | 	bytes, err := json.MarshalIndent(ser, "", "  ") | ||||||
| 	suite.NoError(err) | 	suite.NoError(err) | ||||||
| 
 | 
 | ||||||
| 	suite.Equal(`{"@context":"https://www.w3.org/ns/activitystreams","attachment":[],"attributedTo":"http://localhost:8080/users/the_mighty_zork","cc":"http://localhost:8080/users/the_mighty_zork/followers","content":"hello everyone!","id":"http://localhost:8080/users/the_mighty_zork/statuses/01F8MHAMCHF6Y650WCRSCP4WMY","published":"2021-10-20T12:40:37+02:00","replies":{"first":{"id":"http://localhost:8080/users/the_mighty_zork/statuses/01F8MHAMCHF6Y650WCRSCP4WMY/replies?page=true","next":"http://localhost:8080/users/the_mighty_zork/statuses/01F8MHAMCHF6Y650WCRSCP4WMY/replies?only_other_accounts=false\u0026page=true","partOf":"http://localhost:8080/users/the_mighty_zork/statuses/01F8MHAMCHF6Y650WCRSCP4WMY/replies","type":"CollectionPage"},"id":"http://localhost:8080/users/the_mighty_zork/statuses/01F8MHAMCHF6Y650WCRSCP4WMY/replies","type":"Collection"},"sensitive":true,"summary":"introduction post","tag":[],"to":"https://www.w3.org/ns/activitystreams#Public","type":"Note","url":"http://localhost:8080/@the_mighty_zork/statuses/01F8MHAMCHF6Y650WCRSCP4WMY"}`, string(bytes)) | 	suite.Equal(`{ | ||||||
|  |   "@context": "https://www.w3.org/ns/activitystreams", | ||||||
|  |   "attachment": [], | ||||||
|  |   "attributedTo": "http://localhost:8080/users/the_mighty_zork", | ||||||
|  |   "cc": "http://localhost:8080/users/the_mighty_zork/followers", | ||||||
|  |   "content": "hello everyone!", | ||||||
|  |   "id": "http://localhost:8080/users/the_mighty_zork/statuses/01F8MHAMCHF6Y650WCRSCP4WMY", | ||||||
|  |   "published": "2021-10-20T12:40:37+02:00", | ||||||
|  |   "replies": { | ||||||
|  |     "first": { | ||||||
|  |       "id": "http://localhost:8080/users/the_mighty_zork/statuses/01F8MHAMCHF6Y650WCRSCP4WMY/replies?page=true", | ||||||
|  |       "next": "http://localhost:8080/users/the_mighty_zork/statuses/01F8MHAMCHF6Y650WCRSCP4WMY/replies?only_other_accounts=false\u0026page=true", | ||||||
|  |       "partOf": "http://localhost:8080/users/the_mighty_zork/statuses/01F8MHAMCHF6Y650WCRSCP4WMY/replies", | ||||||
|  |       "type": "CollectionPage" | ||||||
|  |     }, | ||||||
|  |     "id": "http://localhost:8080/users/the_mighty_zork/statuses/01F8MHAMCHF6Y650WCRSCP4WMY/replies", | ||||||
|  |     "type": "Collection" | ||||||
|  |   }, | ||||||
|  |   "sensitive": true, | ||||||
|  |   "summary": "introduction post", | ||||||
|  |   "tag": [], | ||||||
|  |   "to": "https://www.w3.org/ns/activitystreams#Public", | ||||||
|  |   "type": "Note", | ||||||
|  |   "url": "http://localhost:8080/@the_mighty_zork/statuses/01F8MHAMCHF6Y650WCRSCP4WMY" | ||||||
|  | }`, string(bytes)) | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| func (suite *InternalToASTestSuite) TestStatusWithTagsToASWithIDs() { | func (suite *InternalToASTestSuite) TestStatusWithTagsToASWithIDs() { | ||||||
|  | @ -150,14 +269,52 @@ func (suite *InternalToASTestSuite) TestStatusWithTagsToASWithIDs() { | ||||||
| 	ser, err := streams.Serialize(asStatus) | 	ser, err := streams.Serialize(asStatus) | ||||||
| 	suite.NoError(err) | 	suite.NoError(err) | ||||||
| 
 | 
 | ||||||
| 	bytes, err := json.Marshal(ser) | 	bytes, err := json.MarshalIndent(ser, "", "  ") | ||||||
| 	suite.NoError(err) | 	suite.NoError(err) | ||||||
| 
 | 
 | ||||||
| 	// we can't be sure in what order the two context entries -- | 	// we can't be sure in what order the two context entries -- | ||||||
| 	// http://joinmastodon.org/ns, https://www.w3.org/ns/activitystreams -- | 	// http://joinmastodon.org/ns, https://www.w3.org/ns/activitystreams -- | ||||||
| 	// will appear, so trim them out of the string for consistency | 	// will appear, so trim them out of the string for consistency | ||||||
| 	trimmed := strings.SplitAfter(string(bytes), `"attachment":`)[1] | 	trimmed := strings.SplitAfter(string(bytes), `"attachment":`)[1] | ||||||
| 	suite.Equal(`{"blurhash":"LNJRdVM{00Rj%Mayt7j[4nWBofRj","mediaType":"image/jpeg","name":"Black and white image of some 50's style text saying: Welcome On Board","type":"Document","url":"http://localhost:8080/fileserver/01F8MH17FWEB39HZJ76B6VXSKF/attachment/original/01F8MH6NEM8D7527KZAECTCR76.jpg"},"attributedTo":"http://localhost:8080/users/admin","cc":"http://localhost:8080/users/admin/followers","content":"hello world! #welcome ! first post on the instance :rainbow: !","id":"http://localhost:8080/users/admin/statuses/01F8MH75CBF9JFX4ZAD54N0W0R","published":"2021-10-20T11:36:45Z","replies":{"first":{"id":"http://localhost:8080/users/admin/statuses/01F8MH75CBF9JFX4ZAD54N0W0R/replies?page=true","next":"http://localhost:8080/users/admin/statuses/01F8MH75CBF9JFX4ZAD54N0W0R/replies?only_other_accounts=false\u0026page=true","partOf":"http://localhost:8080/users/admin/statuses/01F8MH75CBF9JFX4ZAD54N0W0R/replies","type":"CollectionPage"},"id":"http://localhost:8080/users/admin/statuses/01F8MH75CBF9JFX4ZAD54N0W0R/replies","type":"Collection"},"sensitive":false,"summary":"","tag":{"icon":{"mediaType":"image/png","type":"Image","url":"http://localhost:8080/fileserver/01AY6P665V14JJR0AFVRT7311Y/emoji/original/01F8MH9H8E4VG3KDYJR9EGPXCQ.png"},"id":"http://localhost:8080/emoji/01F8MH9H8E4VG3KDYJR9EGPXCQ","name":":rainbow:","type":"Emoji","updated":"2021-09-20T10:40:37Z"},"to":"https://www.w3.org/ns/activitystreams#Public","type":"Note","url":"http://localhost:8080/@admin/statuses/01F8MH75CBF9JFX4ZAD54N0W0R"}`, trimmed) | 	suite.Equal(` { | ||||||
|  |     "blurhash": "LNJRdVM{00Rj%Mayt7j[4nWBofRj", | ||||||
|  |     "mediaType": "image/jpeg", | ||||||
|  |     "name": "Black and white image of some 50's style text saying: Welcome On Board", | ||||||
|  |     "type": "Document", | ||||||
|  |     "url": "http://localhost:8080/fileserver/01F8MH17FWEB39HZJ76B6VXSKF/attachment/original/01F8MH6NEM8D7527KZAECTCR76.jpg" | ||||||
|  |   }, | ||||||
|  |   "attributedTo": "http://localhost:8080/users/admin", | ||||||
|  |   "cc": "http://localhost:8080/users/admin/followers", | ||||||
|  |   "content": "hello world! #welcome ! first post on the instance :rainbow: !", | ||||||
|  |   "id": "http://localhost:8080/users/admin/statuses/01F8MH75CBF9JFX4ZAD54N0W0R", | ||||||
|  |   "published": "2021-10-20T11:36:45Z", | ||||||
|  |   "replies": { | ||||||
|  |     "first": { | ||||||
|  |       "id": "http://localhost:8080/users/admin/statuses/01F8MH75CBF9JFX4ZAD54N0W0R/replies?page=true", | ||||||
|  |       "next": "http://localhost:8080/users/admin/statuses/01F8MH75CBF9JFX4ZAD54N0W0R/replies?only_other_accounts=false\u0026page=true", | ||||||
|  |       "partOf": "http://localhost:8080/users/admin/statuses/01F8MH75CBF9JFX4ZAD54N0W0R/replies", | ||||||
|  |       "type": "CollectionPage" | ||||||
|  |     }, | ||||||
|  |     "id": "http://localhost:8080/users/admin/statuses/01F8MH75CBF9JFX4ZAD54N0W0R/replies", | ||||||
|  |     "type": "Collection" | ||||||
|  |   }, | ||||||
|  |   "sensitive": false, | ||||||
|  |   "summary": "", | ||||||
|  |   "tag": { | ||||||
|  |     "icon": { | ||||||
|  |       "mediaType": "image/png", | ||||||
|  |       "type": "Image", | ||||||
|  |       "url": "http://localhost:8080/fileserver/01AY6P665V14JJR0AFVRT7311Y/emoji/original/01F8MH9H8E4VG3KDYJR9EGPXCQ.png" | ||||||
|  |     }, | ||||||
|  |     "id": "http://localhost:8080/emoji/01F8MH9H8E4VG3KDYJR9EGPXCQ", | ||||||
|  |     "name": ":rainbow:", | ||||||
|  |     "type": "Emoji", | ||||||
|  |     "updated": "2021-09-20T10:40:37Z" | ||||||
|  |   }, | ||||||
|  |   "to": "https://www.w3.org/ns/activitystreams#Public", | ||||||
|  |   "type": "Note", | ||||||
|  |   "url": "http://localhost:8080/@admin/statuses/01F8MH75CBF9JFX4ZAD54N0W0R" | ||||||
|  | }`, trimmed) | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| func (suite *InternalToASTestSuite) TestStatusWithTagsToASFromDB() { | func (suite *InternalToASTestSuite) TestStatusWithTagsToASFromDB() { | ||||||
|  | @ -172,14 +329,52 @@ func (suite *InternalToASTestSuite) TestStatusWithTagsToASFromDB() { | ||||||
| 	ser, err := streams.Serialize(asStatus) | 	ser, err := streams.Serialize(asStatus) | ||||||
| 	suite.NoError(err) | 	suite.NoError(err) | ||||||
| 
 | 
 | ||||||
| 	bytes, err := json.Marshal(ser) | 	bytes, err := json.MarshalIndent(ser, "", "  ") | ||||||
| 	suite.NoError(err) | 	suite.NoError(err) | ||||||
| 
 | 
 | ||||||
| 	// we can't be sure in what order the two context entries -- | 	// we can't be sure in what order the two context entries -- | ||||||
| 	// http://joinmastodon.org/ns, https://www.w3.org/ns/activitystreams -- | 	// http://joinmastodon.org/ns, https://www.w3.org/ns/activitystreams -- | ||||||
| 	// will appear, so trim them out of the string for consistency | 	// will appear, so trim them out of the string for consistency | ||||||
| 	trimmed := strings.SplitAfter(string(bytes), `"attachment":`)[1] | 	trimmed := strings.SplitAfter(string(bytes), `"attachment":`)[1] | ||||||
| 	suite.Equal(`{"blurhash":"LNJRdVM{00Rj%Mayt7j[4nWBofRj","mediaType":"image/jpeg","name":"Black and white image of some 50's style text saying: Welcome On Board","type":"Document","url":"http://localhost:8080/fileserver/01F8MH17FWEB39HZJ76B6VXSKF/attachment/original/01F8MH6NEM8D7527KZAECTCR76.jpg"},"attributedTo":"http://localhost:8080/users/admin","cc":"http://localhost:8080/users/admin/followers","content":"hello world! #welcome ! first post on the instance :rainbow: !","id":"http://localhost:8080/users/admin/statuses/01F8MH75CBF9JFX4ZAD54N0W0R","published":"2021-10-20T11:36:45Z","replies":{"first":{"id":"http://localhost:8080/users/admin/statuses/01F8MH75CBF9JFX4ZAD54N0W0R/replies?page=true","next":"http://localhost:8080/users/admin/statuses/01F8MH75CBF9JFX4ZAD54N0W0R/replies?only_other_accounts=false\u0026page=true","partOf":"http://localhost:8080/users/admin/statuses/01F8MH75CBF9JFX4ZAD54N0W0R/replies","type":"CollectionPage"},"id":"http://localhost:8080/users/admin/statuses/01F8MH75CBF9JFX4ZAD54N0W0R/replies","type":"Collection"},"sensitive":false,"summary":"","tag":{"icon":{"mediaType":"image/png","type":"Image","url":"http://localhost:8080/fileserver/01AY6P665V14JJR0AFVRT7311Y/emoji/original/01F8MH9H8E4VG3KDYJR9EGPXCQ.png"},"id":"http://localhost:8080/emoji/01F8MH9H8E4VG3KDYJR9EGPXCQ","name":":rainbow:","type":"Emoji","updated":"2021-09-20T10:40:37Z"},"to":"https://www.w3.org/ns/activitystreams#Public","type":"Note","url":"http://localhost:8080/@admin/statuses/01F8MH75CBF9JFX4ZAD54N0W0R"}`, trimmed) | 	suite.Equal(` { | ||||||
|  |     "blurhash": "LNJRdVM{00Rj%Mayt7j[4nWBofRj", | ||||||
|  |     "mediaType": "image/jpeg", | ||||||
|  |     "name": "Black and white image of some 50's style text saying: Welcome On Board", | ||||||
|  |     "type": "Document", | ||||||
|  |     "url": "http://localhost:8080/fileserver/01F8MH17FWEB39HZJ76B6VXSKF/attachment/original/01F8MH6NEM8D7527KZAECTCR76.jpg" | ||||||
|  |   }, | ||||||
|  |   "attributedTo": "http://localhost:8080/users/admin", | ||||||
|  |   "cc": "http://localhost:8080/users/admin/followers", | ||||||
|  |   "content": "hello world! #welcome ! first post on the instance :rainbow: !", | ||||||
|  |   "id": "http://localhost:8080/users/admin/statuses/01F8MH75CBF9JFX4ZAD54N0W0R", | ||||||
|  |   "published": "2021-10-20T11:36:45Z", | ||||||
|  |   "replies": { | ||||||
|  |     "first": { | ||||||
|  |       "id": "http://localhost:8080/users/admin/statuses/01F8MH75CBF9JFX4ZAD54N0W0R/replies?page=true", | ||||||
|  |       "next": "http://localhost:8080/users/admin/statuses/01F8MH75CBF9JFX4ZAD54N0W0R/replies?only_other_accounts=false\u0026page=true", | ||||||
|  |       "partOf": "http://localhost:8080/users/admin/statuses/01F8MH75CBF9JFX4ZAD54N0W0R/replies", | ||||||
|  |       "type": "CollectionPage" | ||||||
|  |     }, | ||||||
|  |     "id": "http://localhost:8080/users/admin/statuses/01F8MH75CBF9JFX4ZAD54N0W0R/replies", | ||||||
|  |     "type": "Collection" | ||||||
|  |   }, | ||||||
|  |   "sensitive": false, | ||||||
|  |   "summary": "", | ||||||
|  |   "tag": { | ||||||
|  |     "icon": { | ||||||
|  |       "mediaType": "image/png", | ||||||
|  |       "type": "Image", | ||||||
|  |       "url": "http://localhost:8080/fileserver/01AY6P665V14JJR0AFVRT7311Y/emoji/original/01F8MH9H8E4VG3KDYJR9EGPXCQ.png" | ||||||
|  |     }, | ||||||
|  |     "id": "http://localhost:8080/emoji/01F8MH9H8E4VG3KDYJR9EGPXCQ", | ||||||
|  |     "name": ":rainbow:", | ||||||
|  |     "type": "Emoji", | ||||||
|  |     "updated": "2021-09-20T10:40:37Z" | ||||||
|  |   }, | ||||||
|  |   "to": "https://www.w3.org/ns/activitystreams#Public", | ||||||
|  |   "type": "Note", | ||||||
|  |   "url": "http://localhost:8080/@admin/statuses/01F8MH75CBF9JFX4ZAD54N0W0R" | ||||||
|  | }`, trimmed) | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| func (suite *InternalToASTestSuite) TestStatusToASWithMentions() { | func (suite *InternalToASTestSuite) TestStatusToASWithMentions() { | ||||||
|  | @ -195,10 +390,42 @@ func (suite *InternalToASTestSuite) TestStatusToASWithMentions() { | ||||||
| 	ser, err := streams.Serialize(asStatus) | 	ser, err := streams.Serialize(asStatus) | ||||||
| 	suite.NoError(err) | 	suite.NoError(err) | ||||||
| 
 | 
 | ||||||
| 	bytes, err := json.Marshal(ser) | 	bytes, err := json.MarshalIndent(ser, "", "  ") | ||||||
| 	suite.NoError(err) | 	suite.NoError(err) | ||||||
| 
 | 
 | ||||||
| 	suite.Equal(`{"@context":"https://www.w3.org/ns/activitystreams","attachment":[],"attributedTo":"http://localhost:8080/users/admin","cc":["http://localhost:8080/users/admin/followers","http://localhost:8080/users/the_mighty_zork"],"content":"hi @the_mighty_zork welcome to the instance!","id":"http://localhost:8080/users/admin/statuses/01FF25D5Q0DH7CHD57CTRS6WK0","inReplyTo":"http://localhost:8080/users/the_mighty_zork/statuses/01F8MHAMCHF6Y650WCRSCP4WMY","published":"2021-11-20T13:32:16Z","replies":{"first":{"id":"http://localhost:8080/users/admin/statuses/01FF25D5Q0DH7CHD57CTRS6WK0/replies?page=true","next":"http://localhost:8080/users/admin/statuses/01FF25D5Q0DH7CHD57CTRS6WK0/replies?only_other_accounts=false\u0026page=true","partOf":"http://localhost:8080/users/admin/statuses/01FF25D5Q0DH7CHD57CTRS6WK0/replies","type":"CollectionPage"},"id":"http://localhost:8080/users/admin/statuses/01FF25D5Q0DH7CHD57CTRS6WK0/replies","type":"Collection"},"sensitive":false,"summary":"","tag":{"href":"http://localhost:8080/users/the_mighty_zork","name":"@the_mighty_zork@localhost:8080","type":"Mention"},"to":"https://www.w3.org/ns/activitystreams#Public","type":"Note","url":"http://localhost:8080/@admin/statuses/01FF25D5Q0DH7CHD57CTRS6WK0"}`, string(bytes)) | 	suite.Equal(`{ | ||||||
|  |   "@context": "https://www.w3.org/ns/activitystreams", | ||||||
|  |   "attachment": [], | ||||||
|  |   "attributedTo": "http://localhost:8080/users/admin", | ||||||
|  |   "cc": [ | ||||||
|  |     "http://localhost:8080/users/admin/followers", | ||||||
|  |     "http://localhost:8080/users/the_mighty_zork" | ||||||
|  |   ], | ||||||
|  |   "content": "hi @the_mighty_zork welcome to the instance!", | ||||||
|  |   "id": "http://localhost:8080/users/admin/statuses/01FF25D5Q0DH7CHD57CTRS6WK0", | ||||||
|  |   "inReplyTo": "http://localhost:8080/users/the_mighty_zork/statuses/01F8MHAMCHF6Y650WCRSCP4WMY", | ||||||
|  |   "published": "2021-11-20T13:32:16Z", | ||||||
|  |   "replies": { | ||||||
|  |     "first": { | ||||||
|  |       "id": "http://localhost:8080/users/admin/statuses/01FF25D5Q0DH7CHD57CTRS6WK0/replies?page=true", | ||||||
|  |       "next": "http://localhost:8080/users/admin/statuses/01FF25D5Q0DH7CHD57CTRS6WK0/replies?only_other_accounts=false\u0026page=true", | ||||||
|  |       "partOf": "http://localhost:8080/users/admin/statuses/01FF25D5Q0DH7CHD57CTRS6WK0/replies", | ||||||
|  |       "type": "CollectionPage" | ||||||
|  |     }, | ||||||
|  |     "id": "http://localhost:8080/users/admin/statuses/01FF25D5Q0DH7CHD57CTRS6WK0/replies", | ||||||
|  |     "type": "Collection" | ||||||
|  |   }, | ||||||
|  |   "sensitive": false, | ||||||
|  |   "summary": "", | ||||||
|  |   "tag": { | ||||||
|  |     "href": "http://localhost:8080/users/the_mighty_zork", | ||||||
|  |     "name": "@the_mighty_zork@localhost:8080", | ||||||
|  |     "type": "Mention" | ||||||
|  |   }, | ||||||
|  |   "to": "https://www.w3.org/ns/activitystreams#Public", | ||||||
|  |   "type": "Note", | ||||||
|  |   "url": "http://localhost:8080/@admin/statuses/01FF25D5Q0DH7CHD57CTRS6WK0" | ||||||
|  | }`, string(bytes)) | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| func (suite *InternalToASTestSuite) TestStatusesToASOutboxPage() { | func (suite *InternalToASTestSuite) TestStatusesToASOutboxPage() { | ||||||
|  | @ -215,17 +442,13 @@ func (suite *InternalToASTestSuite) TestStatusesToASOutboxPage() { | ||||||
| 	ser, err := streams.Serialize(page) | 	ser, err := streams.Serialize(page) | ||||||
| 	suite.NoError(err) | 	suite.NoError(err) | ||||||
| 
 | 
 | ||||||
| 	bytes, err := json.Marshal(ser) | 	bytes, err := json.MarshalIndent(ser, "", "  ") | ||||||
| 	suite.NoError(err) | 	suite.NoError(err) | ||||||
| 
 | 
 | ||||||
| 	/* | 	suite.Equal(`{ | ||||||
| 
 |  | ||||||
| 		we want this: |  | ||||||
| 
 |  | ||||||
| 		{ |  | ||||||
|   "@context": "https://www.w3.org/ns/activitystreams", |   "@context": "https://www.w3.org/ns/activitystreams", | ||||||
|   "id": "http://localhost:8080/users/admin/outbox?page=true", |   "id": "http://localhost:8080/users/admin/outbox?page=true", | ||||||
| 			"next": "http://localhost:8080/users/admin/outbox?page=true&max_id=01F8MH75CBF9JFX4ZAD54N0W0R", |   "next": "http://localhost:8080/users/admin/outbox?page=true\u0026max_id=01F8MH75CBF9JFX4ZAD54N0W0R", | ||||||
|   "orderedItems": [ |   "orderedItems": [ | ||||||
|     { |     { | ||||||
|       "actor": "http://localhost:8080/users/admin", |       "actor": "http://localhost:8080/users/admin", | ||||||
|  | @ -247,12 +470,9 @@ func (suite *InternalToASTestSuite) TestStatusesToASOutboxPage() { | ||||||
|     } |     } | ||||||
|   ], |   ], | ||||||
|   "partOf": "http://localhost:8080/users/admin/outbox", |   "partOf": "http://localhost:8080/users/admin/outbox", | ||||||
| 			"prev": "http://localhost:8080/users/admin/outbox?page=true&min_id=01F8MHAAY43M6RJ473VQFCVH37", |   "prev": "http://localhost:8080/users/admin/outbox?page=true\u0026min_id=01F8MHAAY43M6RJ473VQFCVH37", | ||||||
|   "type": "OrderedCollectionPage" |   "type": "OrderedCollectionPage" | ||||||
| 		} | }`, string(bytes)) | ||||||
| 	*/ |  | ||||||
| 
 |  | ||||||
| 	suite.Equal(`{"@context":"https://www.w3.org/ns/activitystreams","id":"http://localhost:8080/users/admin/outbox?page=true","next":"http://localhost:8080/users/admin/outbox?page=true\u0026max_id=01F8MH75CBF9JFX4ZAD54N0W0R","orderedItems":[{"actor":"http://localhost:8080/users/admin","cc":"http://localhost:8080/users/admin/followers","id":"http://localhost:8080/users/admin/statuses/01F8MHAAY43M6RJ473VQFCVH37/activity","object":"http://localhost:8080/users/admin/statuses/01F8MHAAY43M6RJ473VQFCVH37","published":"2021-10-20T12:36:45Z","to":"https://www.w3.org/ns/activitystreams#Public","type":"Create"},{"actor":"http://localhost:8080/users/admin","cc":"http://localhost:8080/users/admin/followers","id":"http://localhost:8080/users/admin/statuses/01F8MH75CBF9JFX4ZAD54N0W0R/activity","object":"http://localhost:8080/users/admin/statuses/01F8MH75CBF9JFX4ZAD54N0W0R","published":"2021-10-20T11:36:45Z","to":"https://www.w3.org/ns/activitystreams#Public","type":"Create"}],"partOf":"http://localhost:8080/users/admin/outbox","prev":"http://localhost:8080/users/admin/outbox?page=true\u0026min_id=01F8MHAAY43M6RJ473VQFCVH37","type":"OrderedCollectionPage"}`, string(bytes)) |  | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| func (suite *InternalToASTestSuite) TestSelfBoostFollowersOnlyToAS() { | func (suite *InternalToASTestSuite) TestSelfBoostFollowersOnlyToAS() { | ||||||
|  | @ -275,10 +495,19 @@ func (suite *InternalToASTestSuite) TestSelfBoostFollowersOnlyToAS() { | ||||||
| 	ser, err := streams.Serialize(asBoost) | 	ser, err := streams.Serialize(asBoost) | ||||||
| 	suite.NoError(err) | 	suite.NoError(err) | ||||||
| 
 | 
 | ||||||
| 	bytes, err := json.Marshal(ser) | 	bytes, err := json.MarshalIndent(ser, "", "  ") | ||||||
| 	suite.NoError(err) | 	suite.NoError(err) | ||||||
| 
 | 
 | ||||||
| 	suite.Equal(`{"@context":"https://www.w3.org/ns/activitystreams","actor":"http://localhost:8080/users/the_mighty_zork","cc":"http://localhost:8080/users/the_mighty_zork","id":"http://localhost:8080/users/the_mighty_zork/statuses/01G74JJ1KS331G2JXHRMZCE0ER","object":"http://localhost:8080/users/the_mighty_zork/statuses/01FCTA44PW9H1TB328S9AQXKDS","published":"2022-06-09T13:12:00Z","to":"http://localhost:8080/users/the_mighty_zork/followers","type":"Announce"}`, string(bytes)) | 	suite.Equal(`{ | ||||||
|  |   "@context": "https://www.w3.org/ns/activitystreams", | ||||||
|  |   "actor": "http://localhost:8080/users/the_mighty_zork", | ||||||
|  |   "cc": "http://localhost:8080/users/the_mighty_zork", | ||||||
|  |   "id": "http://localhost:8080/users/the_mighty_zork/statuses/01G74JJ1KS331G2JXHRMZCE0ER", | ||||||
|  |   "object": "http://localhost:8080/users/the_mighty_zork/statuses/01FCTA44PW9H1TB328S9AQXKDS", | ||||||
|  |   "published": "2022-06-09T13:12:00Z", | ||||||
|  |   "to": "http://localhost:8080/users/the_mighty_zork/followers", | ||||||
|  |   "type": "Announce" | ||||||
|  | }`, string(bytes)) | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| func TestInternalToASTestSuite(t *testing.T) { | func TestInternalToASTestSuite(t *testing.T) { | ||||||
|  |  | ||||||
|  | @ -38,9 +38,31 @@ func (suite *InternalToFrontendTestSuite) TestAccountToFrontend() { | ||||||
| 	suite.NoError(err) | 	suite.NoError(err) | ||||||
| 	suite.NotNil(apiAccount) | 	suite.NotNil(apiAccount) | ||||||
| 
 | 
 | ||||||
| 	b, err := json.Marshal(apiAccount) | 	b, err := json.MarshalIndent(apiAccount, "", "  ") | ||||||
| 	suite.NoError(err) | 	suite.NoError(err) | ||||||
| 	suite.Equal(`{"id":"01F8MH1H7YV1Z7D2C8K2730QBF","username":"the_mighty_zork","acct":"the_mighty_zork","display_name":"original zork (he/they)","locked":false,"bot":false,"created_at":"2022-05-20T11:09:18.000Z","note":"\u003cp\u003ehey yo this is my profile!\u003c/p\u003e","url":"http://localhost:8080/@the_mighty_zork","avatar":"http://localhost:8080/fileserver/01F8MH1H7YV1Z7D2C8K2730QBF/avatar/original/01F8MH58A357CV5K7R7TJMSH6S.jpg","avatar_static":"http://localhost:8080/fileserver/01F8MH1H7YV1Z7D2C8K2730QBF/avatar/small/01F8MH58A357CV5K7R7TJMSH6S.jpg","header":"http://localhost:8080/fileserver/01F8MH1H7YV1Z7D2C8K2730QBF/header/original/01PFPMWK2FF0D9WMHEJHR07C3Q.jpg","header_static":"http://localhost:8080/fileserver/01F8MH1H7YV1Z7D2C8K2730QBF/header/small/01PFPMWK2FF0D9WMHEJHR07C3Q.jpg","followers_count":2,"following_count":2,"statuses_count":5,"last_status_at":"2022-05-20T11:37:55.000Z","emojis":[],"fields":[],"enable_rss":true,"role":"user"}`, string(b)) | 	suite.Equal(`{ | ||||||
|  |   "id": "01F8MH1H7YV1Z7D2C8K2730QBF", | ||||||
|  |   "username": "the_mighty_zork", | ||||||
|  |   "acct": "the_mighty_zork", | ||||||
|  |   "display_name": "original zork (he/they)", | ||||||
|  |   "locked": false, | ||||||
|  |   "bot": false, | ||||||
|  |   "created_at": "2022-05-20T11:09:18.000Z", | ||||||
|  |   "note": "\u003cp\u003ehey yo this is my profile!\u003c/p\u003e", | ||||||
|  |   "url": "http://localhost:8080/@the_mighty_zork", | ||||||
|  |   "avatar": "http://localhost:8080/fileserver/01F8MH1H7YV1Z7D2C8K2730QBF/avatar/original/01F8MH58A357CV5K7R7TJMSH6S.jpg", | ||||||
|  |   "avatar_static": "http://localhost:8080/fileserver/01F8MH1H7YV1Z7D2C8K2730QBF/avatar/small/01F8MH58A357CV5K7R7TJMSH6S.jpg", | ||||||
|  |   "header": "http://localhost:8080/fileserver/01F8MH1H7YV1Z7D2C8K2730QBF/header/original/01PFPMWK2FF0D9WMHEJHR07C3Q.jpg", | ||||||
|  |   "header_static": "http://localhost:8080/fileserver/01F8MH1H7YV1Z7D2C8K2730QBF/header/small/01PFPMWK2FF0D9WMHEJHR07C3Q.jpg", | ||||||
|  |   "followers_count": 2, | ||||||
|  |   "following_count": 2, | ||||||
|  |   "statuses_count": 5, | ||||||
|  |   "last_status_at": "2022-05-20T11:37:55.000Z", | ||||||
|  |   "emojis": [], | ||||||
|  |   "fields": [], | ||||||
|  |   "enable_rss": true, | ||||||
|  |   "role": "user" | ||||||
|  | }`, string(b)) | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| func (suite *InternalToFrontendTestSuite) TestAccountToFrontendWithEmojiStruct() { | func (suite *InternalToFrontendTestSuite) TestAccountToFrontendWithEmojiStruct() { | ||||||
|  | @ -53,9 +75,39 @@ func (suite *InternalToFrontendTestSuite) TestAccountToFrontendWithEmojiStruct() | ||||||
| 	suite.NoError(err) | 	suite.NoError(err) | ||||||
| 	suite.NotNil(apiAccount) | 	suite.NotNil(apiAccount) | ||||||
| 
 | 
 | ||||||
| 	b, err := json.Marshal(apiAccount) | 	b, err := json.MarshalIndent(apiAccount, "", "  ") | ||||||
| 	suite.NoError(err) | 	suite.NoError(err) | ||||||
| 	suite.Equal(`{"id":"01F8MH1H7YV1Z7D2C8K2730QBF","username":"the_mighty_zork","acct":"the_mighty_zork","display_name":"original zork (he/they)","locked":false,"bot":false,"created_at":"2022-05-20T11:09:18.000Z","note":"\u003cp\u003ehey yo this is my profile!\u003c/p\u003e","url":"http://localhost:8080/@the_mighty_zork","avatar":"http://localhost:8080/fileserver/01F8MH1H7YV1Z7D2C8K2730QBF/avatar/original/01F8MH58A357CV5K7R7TJMSH6S.jpg","avatar_static":"http://localhost:8080/fileserver/01F8MH1H7YV1Z7D2C8K2730QBF/avatar/small/01F8MH58A357CV5K7R7TJMSH6S.jpg","header":"http://localhost:8080/fileserver/01F8MH1H7YV1Z7D2C8K2730QBF/header/original/01PFPMWK2FF0D9WMHEJHR07C3Q.jpg","header_static":"http://localhost:8080/fileserver/01F8MH1H7YV1Z7D2C8K2730QBF/header/small/01PFPMWK2FF0D9WMHEJHR07C3Q.jpg","followers_count":2,"following_count":2,"statuses_count":5,"last_status_at":"2022-05-20T11:37:55.000Z","emojis":[{"shortcode":"rainbow","url":"http://localhost:8080/fileserver/01AY6P665V14JJR0AFVRT7311Y/emoji/original/01F8MH9H8E4VG3KDYJR9EGPXCQ.png","static_url":"http://localhost:8080/fileserver/01AY6P665V14JJR0AFVRT7311Y/emoji/static/01F8MH9H8E4VG3KDYJR9EGPXCQ.png","visible_in_picker":true,"category":"reactions"}],"fields":[],"enable_rss":true,"role":"user"}`, string(b)) | 	suite.Equal(`{ | ||||||
|  |   "id": "01F8MH1H7YV1Z7D2C8K2730QBF", | ||||||
|  |   "username": "the_mighty_zork", | ||||||
|  |   "acct": "the_mighty_zork", | ||||||
|  |   "display_name": "original zork (he/they)", | ||||||
|  |   "locked": false, | ||||||
|  |   "bot": false, | ||||||
|  |   "created_at": "2022-05-20T11:09:18.000Z", | ||||||
|  |   "note": "\u003cp\u003ehey yo this is my profile!\u003c/p\u003e", | ||||||
|  |   "url": "http://localhost:8080/@the_mighty_zork", | ||||||
|  |   "avatar": "http://localhost:8080/fileserver/01F8MH1H7YV1Z7D2C8K2730QBF/avatar/original/01F8MH58A357CV5K7R7TJMSH6S.jpg", | ||||||
|  |   "avatar_static": "http://localhost:8080/fileserver/01F8MH1H7YV1Z7D2C8K2730QBF/avatar/small/01F8MH58A357CV5K7R7TJMSH6S.jpg", | ||||||
|  |   "header": "http://localhost:8080/fileserver/01F8MH1H7YV1Z7D2C8K2730QBF/header/original/01PFPMWK2FF0D9WMHEJHR07C3Q.jpg", | ||||||
|  |   "header_static": "http://localhost:8080/fileserver/01F8MH1H7YV1Z7D2C8K2730QBF/header/small/01PFPMWK2FF0D9WMHEJHR07C3Q.jpg", | ||||||
|  |   "followers_count": 2, | ||||||
|  |   "following_count": 2, | ||||||
|  |   "statuses_count": 5, | ||||||
|  |   "last_status_at": "2022-05-20T11:37:55.000Z", | ||||||
|  |   "emojis": [ | ||||||
|  |     { | ||||||
|  |       "shortcode": "rainbow", | ||||||
|  |       "url": "http://localhost:8080/fileserver/01AY6P665V14JJR0AFVRT7311Y/emoji/original/01F8MH9H8E4VG3KDYJR9EGPXCQ.png", | ||||||
|  |       "static_url": "http://localhost:8080/fileserver/01AY6P665V14JJR0AFVRT7311Y/emoji/static/01F8MH9H8E4VG3KDYJR9EGPXCQ.png", | ||||||
|  |       "visible_in_picker": true, | ||||||
|  |       "category": "reactions" | ||||||
|  |     } | ||||||
|  |   ], | ||||||
|  |   "fields": [], | ||||||
|  |   "enable_rss": true, | ||||||
|  |   "role": "user" | ||||||
|  | }`, string(b)) | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| func (suite *InternalToFrontendTestSuite) TestAccountToFrontendWithEmojiIDs() { | func (suite *InternalToFrontendTestSuite) TestAccountToFrontendWithEmojiIDs() { | ||||||
|  | @ -68,9 +120,39 @@ func (suite *InternalToFrontendTestSuite) TestAccountToFrontendWithEmojiIDs() { | ||||||
| 	suite.NoError(err) | 	suite.NoError(err) | ||||||
| 	suite.NotNil(apiAccount) | 	suite.NotNil(apiAccount) | ||||||
| 
 | 
 | ||||||
| 	b, err := json.Marshal(apiAccount) | 	b, err := json.MarshalIndent(apiAccount, "", "  ") | ||||||
| 	suite.NoError(err) | 	suite.NoError(err) | ||||||
| 	suite.Equal(`{"id":"01F8MH1H7YV1Z7D2C8K2730QBF","username":"the_mighty_zork","acct":"the_mighty_zork","display_name":"original zork (he/they)","locked":false,"bot":false,"created_at":"2022-05-20T11:09:18.000Z","note":"\u003cp\u003ehey yo this is my profile!\u003c/p\u003e","url":"http://localhost:8080/@the_mighty_zork","avatar":"http://localhost:8080/fileserver/01F8MH1H7YV1Z7D2C8K2730QBF/avatar/original/01F8MH58A357CV5K7R7TJMSH6S.jpg","avatar_static":"http://localhost:8080/fileserver/01F8MH1H7YV1Z7D2C8K2730QBF/avatar/small/01F8MH58A357CV5K7R7TJMSH6S.jpg","header":"http://localhost:8080/fileserver/01F8MH1H7YV1Z7D2C8K2730QBF/header/original/01PFPMWK2FF0D9WMHEJHR07C3Q.jpg","header_static":"http://localhost:8080/fileserver/01F8MH1H7YV1Z7D2C8K2730QBF/header/small/01PFPMWK2FF0D9WMHEJHR07C3Q.jpg","followers_count":2,"following_count":2,"statuses_count":5,"last_status_at":"2022-05-20T11:37:55.000Z","emojis":[{"shortcode":"rainbow","url":"http://localhost:8080/fileserver/01AY6P665V14JJR0AFVRT7311Y/emoji/original/01F8MH9H8E4VG3KDYJR9EGPXCQ.png","static_url":"http://localhost:8080/fileserver/01AY6P665V14JJR0AFVRT7311Y/emoji/static/01F8MH9H8E4VG3KDYJR9EGPXCQ.png","visible_in_picker":true,"category":"reactions"}],"fields":[],"enable_rss":true,"role":"user"}`, string(b)) | 	suite.Equal(`{ | ||||||
|  |   "id": "01F8MH1H7YV1Z7D2C8K2730QBF", | ||||||
|  |   "username": "the_mighty_zork", | ||||||
|  |   "acct": "the_mighty_zork", | ||||||
|  |   "display_name": "original zork (he/they)", | ||||||
|  |   "locked": false, | ||||||
|  |   "bot": false, | ||||||
|  |   "created_at": "2022-05-20T11:09:18.000Z", | ||||||
|  |   "note": "\u003cp\u003ehey yo this is my profile!\u003c/p\u003e", | ||||||
|  |   "url": "http://localhost:8080/@the_mighty_zork", | ||||||
|  |   "avatar": "http://localhost:8080/fileserver/01F8MH1H7YV1Z7D2C8K2730QBF/avatar/original/01F8MH58A357CV5K7R7TJMSH6S.jpg", | ||||||
|  |   "avatar_static": "http://localhost:8080/fileserver/01F8MH1H7YV1Z7D2C8K2730QBF/avatar/small/01F8MH58A357CV5K7R7TJMSH6S.jpg", | ||||||
|  |   "header": "http://localhost:8080/fileserver/01F8MH1H7YV1Z7D2C8K2730QBF/header/original/01PFPMWK2FF0D9WMHEJHR07C3Q.jpg", | ||||||
|  |   "header_static": "http://localhost:8080/fileserver/01F8MH1H7YV1Z7D2C8K2730QBF/header/small/01PFPMWK2FF0D9WMHEJHR07C3Q.jpg", | ||||||
|  |   "followers_count": 2, | ||||||
|  |   "following_count": 2, | ||||||
|  |   "statuses_count": 5, | ||||||
|  |   "last_status_at": "2022-05-20T11:37:55.000Z", | ||||||
|  |   "emojis": [ | ||||||
|  |     { | ||||||
|  |       "shortcode": "rainbow", | ||||||
|  |       "url": "http://localhost:8080/fileserver/01AY6P665V14JJR0AFVRT7311Y/emoji/original/01F8MH9H8E4VG3KDYJR9EGPXCQ.png", | ||||||
|  |       "static_url": "http://localhost:8080/fileserver/01AY6P665V14JJR0AFVRT7311Y/emoji/static/01F8MH9H8E4VG3KDYJR9EGPXCQ.png", | ||||||
|  |       "visible_in_picker": true, | ||||||
|  |       "category": "reactions" | ||||||
|  |     } | ||||||
|  |   ], | ||||||
|  |   "fields": [], | ||||||
|  |   "enable_rss": true, | ||||||
|  |   "role": "user" | ||||||
|  | }`, string(b)) | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| func (suite *InternalToFrontendTestSuite) TestAccountToFrontendSensitive() { | func (suite *InternalToFrontendTestSuite) TestAccountToFrontendSensitive() { | ||||||
|  | @ -79,9 +161,40 @@ func (suite *InternalToFrontendTestSuite) TestAccountToFrontendSensitive() { | ||||||
| 	suite.NoError(err) | 	suite.NoError(err) | ||||||
| 	suite.NotNil(apiAccount) | 	suite.NotNil(apiAccount) | ||||||
| 
 | 
 | ||||||
| 	b, err := json.Marshal(apiAccount) | 	b, err := json.MarshalIndent(apiAccount, "", "  ") | ||||||
| 	suite.NoError(err) | 	suite.NoError(err) | ||||||
| 	suite.Equal(`{"id":"01F8MH1H7YV1Z7D2C8K2730QBF","username":"the_mighty_zork","acct":"the_mighty_zork","display_name":"original zork (he/they)","locked":false,"bot":false,"created_at":"2022-05-20T11:09:18.000Z","note":"\u003cp\u003ehey yo this is my profile!\u003c/p\u003e","url":"http://localhost:8080/@the_mighty_zork","avatar":"http://localhost:8080/fileserver/01F8MH1H7YV1Z7D2C8K2730QBF/avatar/original/01F8MH58A357CV5K7R7TJMSH6S.jpg","avatar_static":"http://localhost:8080/fileserver/01F8MH1H7YV1Z7D2C8K2730QBF/avatar/small/01F8MH58A357CV5K7R7TJMSH6S.jpg","header":"http://localhost:8080/fileserver/01F8MH1H7YV1Z7D2C8K2730QBF/header/original/01PFPMWK2FF0D9WMHEJHR07C3Q.jpg","header_static":"http://localhost:8080/fileserver/01F8MH1H7YV1Z7D2C8K2730QBF/header/small/01PFPMWK2FF0D9WMHEJHR07C3Q.jpg","followers_count":2,"following_count":2,"statuses_count":5,"last_status_at":"2022-05-20T11:37:55.000Z","emojis":[],"fields":[],"source":{"privacy":"public","language":"en","status_format":"plain","note":"hey yo this is my profile!","fields":[]},"enable_rss":true,"role":"user"}`, string(b)) | 	suite.Equal(`{ | ||||||
|  |   "id": "01F8MH1H7YV1Z7D2C8K2730QBF", | ||||||
|  |   "username": "the_mighty_zork", | ||||||
|  |   "acct": "the_mighty_zork", | ||||||
|  |   "display_name": "original zork (he/they)", | ||||||
|  |   "locked": false, | ||||||
|  |   "bot": false, | ||||||
|  |   "created_at": "2022-05-20T11:09:18.000Z", | ||||||
|  |   "note": "\u003cp\u003ehey yo this is my profile!\u003c/p\u003e", | ||||||
|  |   "url": "http://localhost:8080/@the_mighty_zork", | ||||||
|  |   "avatar": "http://localhost:8080/fileserver/01F8MH1H7YV1Z7D2C8K2730QBF/avatar/original/01F8MH58A357CV5K7R7TJMSH6S.jpg", | ||||||
|  |   "avatar_static": "http://localhost:8080/fileserver/01F8MH1H7YV1Z7D2C8K2730QBF/avatar/small/01F8MH58A357CV5K7R7TJMSH6S.jpg", | ||||||
|  |   "header": "http://localhost:8080/fileserver/01F8MH1H7YV1Z7D2C8K2730QBF/header/original/01PFPMWK2FF0D9WMHEJHR07C3Q.jpg", | ||||||
|  |   "header_static": "http://localhost:8080/fileserver/01F8MH1H7YV1Z7D2C8K2730QBF/header/small/01PFPMWK2FF0D9WMHEJHR07C3Q.jpg", | ||||||
|  |   "followers_count": 2, | ||||||
|  |   "following_count": 2, | ||||||
|  |   "statuses_count": 5, | ||||||
|  |   "last_status_at": "2022-05-20T11:37:55.000Z", | ||||||
|  |   "emojis": [], | ||||||
|  |   "fields": [], | ||||||
|  |   "source": { | ||||||
|  |     "privacy": "public", | ||||||
|  |     "sensitive": false, | ||||||
|  |     "language": "en", | ||||||
|  |     "status_format": "plain", | ||||||
|  |     "note": "hey yo this is my profile!", | ||||||
|  |     "fields": [], | ||||||
|  |     "follow_requests_count": 0 | ||||||
|  |   }, | ||||||
|  |   "enable_rss": true, | ||||||
|  |   "role": "user" | ||||||
|  | }`, string(b)) | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| func (suite *InternalToFrontendTestSuite) TestStatusToFrontend() { | func (suite *InternalToFrontendTestSuite) TestStatusToFrontend() { | ||||||
|  | @ -90,10 +203,108 @@ func (suite *InternalToFrontendTestSuite) TestStatusToFrontend() { | ||||||
| 	apiStatus, err := suite.typeconverter.StatusToAPIStatus(context.Background(), testStatus, requestingAccount) | 	apiStatus, err := suite.typeconverter.StatusToAPIStatus(context.Background(), testStatus, requestingAccount) | ||||||
| 	suite.NoError(err) | 	suite.NoError(err) | ||||||
| 
 | 
 | ||||||
| 	b, err := json.Marshal(apiStatus) | 	b, err := json.MarshalIndent(apiStatus, "", "  ") | ||||||
| 	suite.NoError(err) | 	suite.NoError(err) | ||||||
| 
 | 
 | ||||||
| 	suite.Equal(`{"id":"01F8MH75CBF9JFX4ZAD54N0W0R","created_at":"2021-10-20T11:36:45.000Z","in_reply_to_id":null,"in_reply_to_account_id":null,"sensitive":false,"spoiler_text":"","visibility":"public","language":"en","uri":"http://localhost:8080/users/admin/statuses/01F8MH75CBF9JFX4ZAD54N0W0R","url":"http://localhost:8080/@admin/statuses/01F8MH75CBF9JFX4ZAD54N0W0R","replies_count":0,"reblogs_count":0,"favourites_count":1,"favourited":true,"reblogged":false,"muted":false,"bookmarked":true,"pinned":false,"content":"hello world! #welcome ! first post on the instance :rainbow: !","reblog":null,"application":{"name":"superseriousbusiness","website":"https://superserious.business"},"account":{"id":"01F8MH17FWEB39HZJ76B6VXSKF","username":"admin","acct":"admin","display_name":"","locked":false,"bot":false,"created_at":"2022-05-17T13:10:59.000Z","note":"","url":"http://localhost:8080/@admin","avatar":"","avatar_static":"","header":"http://localhost:8080/assets/default_header.png","header_static":"http://localhost:8080/assets/default_header.png","followers_count":1,"following_count":1,"statuses_count":4,"last_status_at":"2021-10-20T10:41:37.000Z","emojis":[],"fields":[],"enable_rss":true,"role":"admin"},"media_attachments":[{"id":"01F8MH6NEM8D7527KZAECTCR76","type":"image","url":"http://localhost:8080/fileserver/01F8MH17FWEB39HZJ76B6VXSKF/attachment/original/01F8MH6NEM8D7527KZAECTCR76.jpg","text_url":"http://localhost:8080/fileserver/01F8MH17FWEB39HZJ76B6VXSKF/attachment/original/01F8MH6NEM8D7527KZAECTCR76.jpg","preview_url":"http://localhost:8080/fileserver/01F8MH17FWEB39HZJ76B6VXSKF/attachment/small/01F8MH6NEM8D7527KZAECTCR76.jpg","remote_url":null,"preview_remote_url":null,"meta":{"original":{"width":1200,"height":630,"size":"1200x630","aspect":1.9047619},"small":{"width":256,"height":134,"size":"256x134","aspect":1.9104477},"focus":{"x":0,"y":0}},"description":"Black and white image of some 50's style text saying: Welcome On Board","blurhash":"LNJRdVM{00Rj%Mayt7j[4nWBofRj"}],"mentions":[],"tags":[{"name":"welcome","url":"http://localhost:8080/tags/welcome"}],"emojis":[{"shortcode":"rainbow","url":"http://localhost:8080/fileserver/01AY6P665V14JJR0AFVRT7311Y/emoji/original/01F8MH9H8E4VG3KDYJR9EGPXCQ.png","static_url":"http://localhost:8080/fileserver/01AY6P665V14JJR0AFVRT7311Y/emoji/static/01F8MH9H8E4VG3KDYJR9EGPXCQ.png","visible_in_picker":true,"category":"reactions"}],"card":null,"poll":null,"text":"hello world! #welcome ! first post on the instance :rainbow: !"}`, string(b)) | 	suite.Equal(`{ | ||||||
|  |   "id": "01F8MH75CBF9JFX4ZAD54N0W0R", | ||||||
|  |   "created_at": "2021-10-20T11:36:45.000Z", | ||||||
|  |   "in_reply_to_id": null, | ||||||
|  |   "in_reply_to_account_id": null, | ||||||
|  |   "sensitive": false, | ||||||
|  |   "spoiler_text": "", | ||||||
|  |   "visibility": "public", | ||||||
|  |   "language": "en", | ||||||
|  |   "uri": "http://localhost:8080/users/admin/statuses/01F8MH75CBF9JFX4ZAD54N0W0R", | ||||||
|  |   "url": "http://localhost:8080/@admin/statuses/01F8MH75CBF9JFX4ZAD54N0W0R", | ||||||
|  |   "replies_count": 0, | ||||||
|  |   "reblogs_count": 0, | ||||||
|  |   "favourites_count": 1, | ||||||
|  |   "favourited": true, | ||||||
|  |   "reblogged": false, | ||||||
|  |   "muted": false, | ||||||
|  |   "bookmarked": true, | ||||||
|  |   "pinned": false, | ||||||
|  |   "content": "hello world! #welcome ! first post on the instance :rainbow: !", | ||||||
|  |   "reblog": null, | ||||||
|  |   "application": { | ||||||
|  |     "name": "superseriousbusiness", | ||||||
|  |     "website": "https://superserious.business" | ||||||
|  |   }, | ||||||
|  |   "account": { | ||||||
|  |     "id": "01F8MH17FWEB39HZJ76B6VXSKF", | ||||||
|  |     "username": "admin", | ||||||
|  |     "acct": "admin", | ||||||
|  |     "display_name": "", | ||||||
|  |     "locked": false, | ||||||
|  |     "bot": false, | ||||||
|  |     "created_at": "2022-05-17T13:10:59.000Z", | ||||||
|  |     "note": "", | ||||||
|  |     "url": "http://localhost:8080/@admin", | ||||||
|  |     "avatar": "", | ||||||
|  |     "avatar_static": "", | ||||||
|  |     "header": "http://localhost:8080/assets/default_header.png", | ||||||
|  |     "header_static": "http://localhost:8080/assets/default_header.png", | ||||||
|  |     "followers_count": 1, | ||||||
|  |     "following_count": 1, | ||||||
|  |     "statuses_count": 4, | ||||||
|  |     "last_status_at": "2021-10-20T10:41:37.000Z", | ||||||
|  |     "emojis": [], | ||||||
|  |     "fields": [], | ||||||
|  |     "enable_rss": true, | ||||||
|  |     "role": "admin" | ||||||
|  |   }, | ||||||
|  |   "media_attachments": [ | ||||||
|  |     { | ||||||
|  |       "id": "01F8MH6NEM8D7527KZAECTCR76", | ||||||
|  |       "type": "image", | ||||||
|  |       "url": "http://localhost:8080/fileserver/01F8MH17FWEB39HZJ76B6VXSKF/attachment/original/01F8MH6NEM8D7527KZAECTCR76.jpg", | ||||||
|  |       "text_url": "http://localhost:8080/fileserver/01F8MH17FWEB39HZJ76B6VXSKF/attachment/original/01F8MH6NEM8D7527KZAECTCR76.jpg", | ||||||
|  |       "preview_url": "http://localhost:8080/fileserver/01F8MH17FWEB39HZJ76B6VXSKF/attachment/small/01F8MH6NEM8D7527KZAECTCR76.jpg", | ||||||
|  |       "remote_url": null, | ||||||
|  |       "preview_remote_url": null, | ||||||
|  |       "meta": { | ||||||
|  |         "original": { | ||||||
|  |           "width": 1200, | ||||||
|  |           "height": 630, | ||||||
|  |           "size": "1200x630", | ||||||
|  |           "aspect": 1.9047619 | ||||||
|  |         }, | ||||||
|  |         "small": { | ||||||
|  |           "width": 256, | ||||||
|  |           "height": 134, | ||||||
|  |           "size": "256x134", | ||||||
|  |           "aspect": 1.9104477 | ||||||
|  |         }, | ||||||
|  |         "focus": { | ||||||
|  |           "x": 0, | ||||||
|  |           "y": 0 | ||||||
|  |         } | ||||||
|  |       }, | ||||||
|  |       "description": "Black and white image of some 50's style text saying: Welcome On Board", | ||||||
|  |       "blurhash": "LNJRdVM{00Rj%Mayt7j[4nWBofRj" | ||||||
|  |     } | ||||||
|  |   ], | ||||||
|  |   "mentions": [], | ||||||
|  |   "tags": [ | ||||||
|  |     { | ||||||
|  |       "name": "welcome", | ||||||
|  |       "url": "http://localhost:8080/tags/welcome" | ||||||
|  |     } | ||||||
|  |   ], | ||||||
|  |   "emojis": [ | ||||||
|  |     { | ||||||
|  |       "shortcode": "rainbow", | ||||||
|  |       "url": "http://localhost:8080/fileserver/01AY6P665V14JJR0AFVRT7311Y/emoji/original/01F8MH9H8E4VG3KDYJR9EGPXCQ.png", | ||||||
|  |       "static_url": "http://localhost:8080/fileserver/01AY6P665V14JJR0AFVRT7311Y/emoji/static/01F8MH9H8E4VG3KDYJR9EGPXCQ.png", | ||||||
|  |       "visible_in_picker": true, | ||||||
|  |       "category": "reactions" | ||||||
|  |     } | ||||||
|  |   ], | ||||||
|  |   "card": null, | ||||||
|  |   "poll": null, | ||||||
|  |   "text": "hello world! #welcome ! first post on the instance :rainbow: !" | ||||||
|  | }`, string(b)) | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| func (suite *InternalToFrontendTestSuite) TestStatusToFrontendUnknownLanguage() { | func (suite *InternalToFrontendTestSuite) TestStatusToFrontendUnknownLanguage() { | ||||||
|  | @ -104,10 +315,108 @@ func (suite *InternalToFrontendTestSuite) TestStatusToFrontendUnknownLanguage() | ||||||
| 	apiStatus, err := suite.typeconverter.StatusToAPIStatus(context.Background(), testStatus, requestingAccount) | 	apiStatus, err := suite.typeconverter.StatusToAPIStatus(context.Background(), testStatus, requestingAccount) | ||||||
| 	suite.NoError(err) | 	suite.NoError(err) | ||||||
| 
 | 
 | ||||||
| 	b, err := json.Marshal(apiStatus) | 	b, err := json.MarshalIndent(apiStatus, "", "  ") | ||||||
| 	suite.NoError(err) | 	suite.NoError(err) | ||||||
| 
 | 
 | ||||||
| 	suite.Equal(`{"id":"01F8MH75CBF9JFX4ZAD54N0W0R","created_at":"2021-10-20T11:36:45.000Z","in_reply_to_id":null,"in_reply_to_account_id":null,"sensitive":false,"spoiler_text":"","visibility":"public","language":null,"uri":"http://localhost:8080/users/admin/statuses/01F8MH75CBF9JFX4ZAD54N0W0R","url":"http://localhost:8080/@admin/statuses/01F8MH75CBF9JFX4ZAD54N0W0R","replies_count":0,"reblogs_count":0,"favourites_count":1,"favourited":true,"reblogged":false,"muted":false,"bookmarked":true,"pinned":false,"content":"hello world! #welcome ! first post on the instance :rainbow: !","reblog":null,"application":{"name":"superseriousbusiness","website":"https://superserious.business"},"account":{"id":"01F8MH17FWEB39HZJ76B6VXSKF","username":"admin","acct":"admin","display_name":"","locked":false,"bot":false,"created_at":"2022-05-17T13:10:59.000Z","note":"","url":"http://localhost:8080/@admin","avatar":"","avatar_static":"","header":"http://localhost:8080/assets/default_header.png","header_static":"http://localhost:8080/assets/default_header.png","followers_count":1,"following_count":1,"statuses_count":4,"last_status_at":"2021-10-20T10:41:37.000Z","emojis":[],"fields":[],"enable_rss":true,"role":"admin"},"media_attachments":[{"id":"01F8MH6NEM8D7527KZAECTCR76","type":"image","url":"http://localhost:8080/fileserver/01F8MH17FWEB39HZJ76B6VXSKF/attachment/original/01F8MH6NEM8D7527KZAECTCR76.jpg","text_url":"http://localhost:8080/fileserver/01F8MH17FWEB39HZJ76B6VXSKF/attachment/original/01F8MH6NEM8D7527KZAECTCR76.jpg","preview_url":"http://localhost:8080/fileserver/01F8MH17FWEB39HZJ76B6VXSKF/attachment/small/01F8MH6NEM8D7527KZAECTCR76.jpg","remote_url":null,"preview_remote_url":null,"meta":{"original":{"width":1200,"height":630,"size":"1200x630","aspect":1.9047619},"small":{"width":256,"height":134,"size":"256x134","aspect":1.9104477},"focus":{"x":0,"y":0}},"description":"Black and white image of some 50's style text saying: Welcome On Board","blurhash":"LNJRdVM{00Rj%Mayt7j[4nWBofRj"}],"mentions":[],"tags":[{"name":"welcome","url":"http://localhost:8080/tags/welcome"}],"emojis":[{"shortcode":"rainbow","url":"http://localhost:8080/fileserver/01AY6P665V14JJR0AFVRT7311Y/emoji/original/01F8MH9H8E4VG3KDYJR9EGPXCQ.png","static_url":"http://localhost:8080/fileserver/01AY6P665V14JJR0AFVRT7311Y/emoji/static/01F8MH9H8E4VG3KDYJR9EGPXCQ.png","visible_in_picker":true,"category":"reactions"}],"card":null,"poll":null,"text":"hello world! #welcome ! first post on the instance :rainbow: !"}`, string(b)) | 	suite.Equal(`{ | ||||||
|  |   "id": "01F8MH75CBF9JFX4ZAD54N0W0R", | ||||||
|  |   "created_at": "2021-10-20T11:36:45.000Z", | ||||||
|  |   "in_reply_to_id": null, | ||||||
|  |   "in_reply_to_account_id": null, | ||||||
|  |   "sensitive": false, | ||||||
|  |   "spoiler_text": "", | ||||||
|  |   "visibility": "public", | ||||||
|  |   "language": null, | ||||||
|  |   "uri": "http://localhost:8080/users/admin/statuses/01F8MH75CBF9JFX4ZAD54N0W0R", | ||||||
|  |   "url": "http://localhost:8080/@admin/statuses/01F8MH75CBF9JFX4ZAD54N0W0R", | ||||||
|  |   "replies_count": 0, | ||||||
|  |   "reblogs_count": 0, | ||||||
|  |   "favourites_count": 1, | ||||||
|  |   "favourited": true, | ||||||
|  |   "reblogged": false, | ||||||
|  |   "muted": false, | ||||||
|  |   "bookmarked": true, | ||||||
|  |   "pinned": false, | ||||||
|  |   "content": "hello world! #welcome ! first post on the instance :rainbow: !", | ||||||
|  |   "reblog": null, | ||||||
|  |   "application": { | ||||||
|  |     "name": "superseriousbusiness", | ||||||
|  |     "website": "https://superserious.business" | ||||||
|  |   }, | ||||||
|  |   "account": { | ||||||
|  |     "id": "01F8MH17FWEB39HZJ76B6VXSKF", | ||||||
|  |     "username": "admin", | ||||||
|  |     "acct": "admin", | ||||||
|  |     "display_name": "", | ||||||
|  |     "locked": false, | ||||||
|  |     "bot": false, | ||||||
|  |     "created_at": "2022-05-17T13:10:59.000Z", | ||||||
|  |     "note": "", | ||||||
|  |     "url": "http://localhost:8080/@admin", | ||||||
|  |     "avatar": "", | ||||||
|  |     "avatar_static": "", | ||||||
|  |     "header": "http://localhost:8080/assets/default_header.png", | ||||||
|  |     "header_static": "http://localhost:8080/assets/default_header.png", | ||||||
|  |     "followers_count": 1, | ||||||
|  |     "following_count": 1, | ||||||
|  |     "statuses_count": 4, | ||||||
|  |     "last_status_at": "2021-10-20T10:41:37.000Z", | ||||||
|  |     "emojis": [], | ||||||
|  |     "fields": [], | ||||||
|  |     "enable_rss": true, | ||||||
|  |     "role": "admin" | ||||||
|  |   }, | ||||||
|  |   "media_attachments": [ | ||||||
|  |     { | ||||||
|  |       "id": "01F8MH6NEM8D7527KZAECTCR76", | ||||||
|  |       "type": "image", | ||||||
|  |       "url": "http://localhost:8080/fileserver/01F8MH17FWEB39HZJ76B6VXSKF/attachment/original/01F8MH6NEM8D7527KZAECTCR76.jpg", | ||||||
|  |       "text_url": "http://localhost:8080/fileserver/01F8MH17FWEB39HZJ76B6VXSKF/attachment/original/01F8MH6NEM8D7527KZAECTCR76.jpg", | ||||||
|  |       "preview_url": "http://localhost:8080/fileserver/01F8MH17FWEB39HZJ76B6VXSKF/attachment/small/01F8MH6NEM8D7527KZAECTCR76.jpg", | ||||||
|  |       "remote_url": null, | ||||||
|  |       "preview_remote_url": null, | ||||||
|  |       "meta": { | ||||||
|  |         "original": { | ||||||
|  |           "width": 1200, | ||||||
|  |           "height": 630, | ||||||
|  |           "size": "1200x630", | ||||||
|  |           "aspect": 1.9047619 | ||||||
|  |         }, | ||||||
|  |         "small": { | ||||||
|  |           "width": 256, | ||||||
|  |           "height": 134, | ||||||
|  |           "size": "256x134", | ||||||
|  |           "aspect": 1.9104477 | ||||||
|  |         }, | ||||||
|  |         "focus": { | ||||||
|  |           "x": 0, | ||||||
|  |           "y": 0 | ||||||
|  |         } | ||||||
|  |       }, | ||||||
|  |       "description": "Black and white image of some 50's style text saying: Welcome On Board", | ||||||
|  |       "blurhash": "LNJRdVM{00Rj%Mayt7j[4nWBofRj" | ||||||
|  |     } | ||||||
|  |   ], | ||||||
|  |   "mentions": [], | ||||||
|  |   "tags": [ | ||||||
|  |     { | ||||||
|  |       "name": "welcome", | ||||||
|  |       "url": "http://localhost:8080/tags/welcome" | ||||||
|  |     } | ||||||
|  |   ], | ||||||
|  |   "emojis": [ | ||||||
|  |     { | ||||||
|  |       "shortcode": "rainbow", | ||||||
|  |       "url": "http://localhost:8080/fileserver/01AY6P665V14JJR0AFVRT7311Y/emoji/original/01F8MH9H8E4VG3KDYJR9EGPXCQ.png", | ||||||
|  |       "static_url": "http://localhost:8080/fileserver/01AY6P665V14JJR0AFVRT7311Y/emoji/static/01F8MH9H8E4VG3KDYJR9EGPXCQ.png", | ||||||
|  |       "visible_in_picker": true, | ||||||
|  |       "category": "reactions" | ||||||
|  |     } | ||||||
|  |   ], | ||||||
|  |   "card": null, | ||||||
|  |   "poll": null, | ||||||
|  |   "text": "hello world! #welcome ! first post on the instance :rainbow: !" | ||||||
|  | }`, string(b)) | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| func (suite *InternalToFrontendTestSuite) TestVideoAttachmentToFrontend() { | func (suite *InternalToFrontendTestSuite) TestVideoAttachmentToFrontend() { | ||||||
|  | @ -115,10 +424,40 @@ func (suite *InternalToFrontendTestSuite) TestVideoAttachmentToFrontend() { | ||||||
| 	apiAttachment, err := suite.typeconverter.AttachmentToAPIAttachment(context.Background(), testAttachment) | 	apiAttachment, err := suite.typeconverter.AttachmentToAPIAttachment(context.Background(), testAttachment) | ||||||
| 	suite.NoError(err) | 	suite.NoError(err) | ||||||
| 
 | 
 | ||||||
| 	b, err := json.Marshal(apiAttachment) | 	b, err := json.MarshalIndent(apiAttachment, "", "  ") | ||||||
| 	suite.NoError(err) | 	suite.NoError(err) | ||||||
| 
 | 
 | ||||||
| 	suite.Equal(`{"id":"01CDR64G398ADCHXK08WWTHEZ5","type":"video","url":"http://localhost:8080/fileserver/01F8MH1H7YV1Z7D2C8K2730QBF/attachment/original/01CDR64G398ADCHXK08WWTHEZ5.mp4","text_url":"http://localhost:8080/fileserver/01F8MH1H7YV1Z7D2C8K2730QBF/attachment/original/01CDR64G398ADCHXK08WWTHEZ5.mp4","preview_url":"http://localhost:8080/fileserver/01F8MH1H7YV1Z7D2C8K2730QBF/attachment/small/01CDR64G398ADCHXK08WWTHEZ5.jpg","remote_url":null,"preview_remote_url":null,"meta":{"original":{"width":720,"height":404,"frame_rate":"30/1","duration":15.033334,"bitrate":1206522,"size":"720x404","aspect":1.7821782},"small":{"width":720,"height":404,"size":"720x404","aspect":1.7821782},"focus":{"x":0,"y":0}},"description":"A cow adorably licking another cow!"}`, string(b)) | 	suite.Equal(`{ | ||||||
|  |   "id": "01CDR64G398ADCHXK08WWTHEZ5", | ||||||
|  |   "type": "video", | ||||||
|  |   "url": "http://localhost:8080/fileserver/01F8MH1H7YV1Z7D2C8K2730QBF/attachment/original/01CDR64G398ADCHXK08WWTHEZ5.mp4", | ||||||
|  |   "text_url": "http://localhost:8080/fileserver/01F8MH1H7YV1Z7D2C8K2730QBF/attachment/original/01CDR64G398ADCHXK08WWTHEZ5.mp4", | ||||||
|  |   "preview_url": "http://localhost:8080/fileserver/01F8MH1H7YV1Z7D2C8K2730QBF/attachment/small/01CDR64G398ADCHXK08WWTHEZ5.jpg", | ||||||
|  |   "remote_url": null, | ||||||
|  |   "preview_remote_url": null, | ||||||
|  |   "meta": { | ||||||
|  |     "original": { | ||||||
|  |       "width": 720, | ||||||
|  |       "height": 404, | ||||||
|  |       "frame_rate": "30/1", | ||||||
|  |       "duration": 15.033334, | ||||||
|  |       "bitrate": 1206522, | ||||||
|  |       "size": "720x404", | ||||||
|  |       "aspect": 1.7821782 | ||||||
|  |     }, | ||||||
|  |     "small": { | ||||||
|  |       "width": 720, | ||||||
|  |       "height": 404, | ||||||
|  |       "size": "720x404", | ||||||
|  |       "aspect": 1.7821782 | ||||||
|  |     }, | ||||||
|  |     "focus": { | ||||||
|  |       "x": 0, | ||||||
|  |       "y": 0 | ||||||
|  |     } | ||||||
|  |   }, | ||||||
|  |   "description": "A cow adorably licking another cow!" | ||||||
|  | }`, string(b)) | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| func (suite *InternalToFrontendTestSuite) TestInstanceToFrontend() { | func (suite *InternalToFrontendTestSuite) TestInstanceToFrontend() { | ||||||
|  | @ -137,10 +476,22 @@ func (suite *InternalToFrontendTestSuite) TestInstanceToFrontend() { | ||||||
| 	apiInstance, err := suite.typeconverter.InstanceToAPIInstance(context.Background(), testInstance) | 	apiInstance, err := suite.typeconverter.InstanceToAPIInstance(context.Background(), testInstance) | ||||||
| 	suite.NoError(err) | 	suite.NoError(err) | ||||||
| 
 | 
 | ||||||
| 	b, err := json.Marshal(apiInstance) | 	b, err := json.MarshalIndent(apiInstance, "", "  ") | ||||||
| 	suite.NoError(err) | 	suite.NoError(err) | ||||||
| 
 | 
 | ||||||
| 	suite.Equal(`{"uri":"https://example.org","title":"example instance","description":"a much longer description","short_description":"a little description","email":"someone@example.org","version":"software-from-hell 0.666","registrations":false,"approval_required":false,"invites_enabled":false,"thumbnail":"","max_toot_chars":0}`, string(b)) | 	suite.Equal(`{ | ||||||
|  |   "uri": "https://example.org", | ||||||
|  |   "title": "example instance", | ||||||
|  |   "description": "a much longer description", | ||||||
|  |   "short_description": "a little description", | ||||||
|  |   "email": "someone@example.org", | ||||||
|  |   "version": "software-from-hell 0.666", | ||||||
|  |   "registrations": false, | ||||||
|  |   "approval_required": false, | ||||||
|  |   "invites_enabled": false, | ||||||
|  |   "thumbnail": "", | ||||||
|  |   "max_toot_chars": 0 | ||||||
|  | }`, string(b)) | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| func (suite *InternalToFrontendTestSuite) TestInstanceToFrontendWithAdminAccount() { | func (suite *InternalToFrontendTestSuite) TestInstanceToFrontendWithAdminAccount() { | ||||||
|  | @ -160,40 +511,103 @@ func (suite *InternalToFrontendTestSuite) TestInstanceToFrontendWithAdminAccount | ||||||
| 	apiInstance, err := suite.typeconverter.InstanceToAPIInstance(context.Background(), testInstance) | 	apiInstance, err := suite.typeconverter.InstanceToAPIInstance(context.Background(), testInstance) | ||||||
| 	suite.NoError(err) | 	suite.NoError(err) | ||||||
| 
 | 
 | ||||||
| 	b, err := json.Marshal(apiInstance) | 	b, err := json.MarshalIndent(apiInstance, "", "  ") | ||||||
| 	suite.NoError(err) | 	suite.NoError(err) | ||||||
| 
 | 
 | ||||||
| 	suite.Equal(`{"uri":"https://example.org","title":"example instance","description":"a much longer description","short_description":"a little description","email":"someone@example.org","version":"software-from-hell 0.666","registrations":false,"approval_required":false,"invites_enabled":false,"thumbnail":"","contact_account":{"id":"01FHMQX3GAABWSM0S2VZEC2SWC","username":"Some_User","acct":"Some_User@example.org","display_name":"some user","locked":true,"bot":false,"created_at":"2020-08-10T12:13:28.000Z","note":"i'm a real son of a gun","url":"http://example.org/@Some_User","avatar":"","avatar_static":"","header":"http://localhost:8080/assets/default_header.png","header_static":"http://localhost:8080/assets/default_header.png","followers_count":0,"following_count":0,"statuses_count":0,"last_status_at":null,"emojis":[],"fields":[]},"max_toot_chars":0}`, string(b)) | 	suite.Equal(`{ | ||||||
|  |   "uri": "https://example.org", | ||||||
|  |   "title": "example instance", | ||||||
|  |   "description": "a much longer description", | ||||||
|  |   "short_description": "a little description", | ||||||
|  |   "email": "someone@example.org", | ||||||
|  |   "version": "software-from-hell 0.666", | ||||||
|  |   "registrations": false, | ||||||
|  |   "approval_required": false, | ||||||
|  |   "invites_enabled": false, | ||||||
|  |   "thumbnail": "", | ||||||
|  |   "contact_account": { | ||||||
|  |     "id": "01FHMQX3GAABWSM0S2VZEC2SWC", | ||||||
|  |     "username": "Some_User", | ||||||
|  |     "acct": "Some_User@example.org", | ||||||
|  |     "display_name": "some user", | ||||||
|  |     "locked": true, | ||||||
|  |     "bot": false, | ||||||
|  |     "created_at": "2020-08-10T12:13:28.000Z", | ||||||
|  |     "note": "i'm a real son of a gun", | ||||||
|  |     "url": "http://example.org/@Some_User", | ||||||
|  |     "avatar": "", | ||||||
|  |     "avatar_static": "", | ||||||
|  |     "header": "http://localhost:8080/assets/default_header.png", | ||||||
|  |     "header_static": "http://localhost:8080/assets/default_header.png", | ||||||
|  |     "followers_count": 0, | ||||||
|  |     "following_count": 0, | ||||||
|  |     "statuses_count": 0, | ||||||
|  |     "last_status_at": null, | ||||||
|  |     "emojis": [], | ||||||
|  |     "fields": [] | ||||||
|  |   }, | ||||||
|  |   "max_toot_chars": 0 | ||||||
|  | }`, string(b)) | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| func (suite *InternalToFrontendTestSuite) TestEmojiToFrontend() { | func (suite *InternalToFrontendTestSuite) TestEmojiToFrontend() { | ||||||
| 	emoji, err := suite.typeconverter.EmojiToAPIEmoji(context.Background(), suite.testEmojis["rainbow"]) | 	emoji, err := suite.typeconverter.EmojiToAPIEmoji(context.Background(), suite.testEmojis["rainbow"]) | ||||||
| 	suite.NoError(err) | 	suite.NoError(err) | ||||||
| 
 | 
 | ||||||
| 	b, err := json.Marshal(emoji) | 	b, err := json.MarshalIndent(emoji, "", "  ") | ||||||
| 	suite.NoError(err) | 	suite.NoError(err) | ||||||
| 
 | 
 | ||||||
| 	suite.Equal(`{"shortcode":"rainbow","url":"http://localhost:8080/fileserver/01AY6P665V14JJR0AFVRT7311Y/emoji/original/01F8MH9H8E4VG3KDYJR9EGPXCQ.png","static_url":"http://localhost:8080/fileserver/01AY6P665V14JJR0AFVRT7311Y/emoji/static/01F8MH9H8E4VG3KDYJR9EGPXCQ.png","visible_in_picker":true,"category":"reactions"}`, string(b)) | 	suite.Equal(`{ | ||||||
|  |   "shortcode": "rainbow", | ||||||
|  |   "url": "http://localhost:8080/fileserver/01AY6P665V14JJR0AFVRT7311Y/emoji/original/01F8MH9H8E4VG3KDYJR9EGPXCQ.png", | ||||||
|  |   "static_url": "http://localhost:8080/fileserver/01AY6P665V14JJR0AFVRT7311Y/emoji/static/01F8MH9H8E4VG3KDYJR9EGPXCQ.png", | ||||||
|  |   "visible_in_picker": true, | ||||||
|  |   "category": "reactions" | ||||||
|  | }`, string(b)) | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| func (suite *InternalToFrontendTestSuite) TestEmojiToFrontendAdmin1() { | func (suite *InternalToFrontendTestSuite) TestEmojiToFrontendAdmin1() { | ||||||
| 	emoji, err := suite.typeconverter.EmojiToAdminAPIEmoji(context.Background(), suite.testEmojis["rainbow"]) | 	emoji, err := suite.typeconverter.EmojiToAdminAPIEmoji(context.Background(), suite.testEmojis["rainbow"]) | ||||||
| 	suite.NoError(err) | 	suite.NoError(err) | ||||||
| 
 | 
 | ||||||
| 	b, err := json.Marshal(emoji) | 	b, err := json.MarshalIndent(emoji, "", "  ") | ||||||
| 	suite.NoError(err) | 	suite.NoError(err) | ||||||
| 
 | 
 | ||||||
| 	suite.Equal(`{"shortcode":"rainbow","url":"http://localhost:8080/fileserver/01AY6P665V14JJR0AFVRT7311Y/emoji/original/01F8MH9H8E4VG3KDYJR9EGPXCQ.png","static_url":"http://localhost:8080/fileserver/01AY6P665V14JJR0AFVRT7311Y/emoji/static/01F8MH9H8E4VG3KDYJR9EGPXCQ.png","visible_in_picker":true,"category":"reactions","id":"01F8MH9H8E4VG3KDYJR9EGPXCQ","disabled":false,"updated_at":"2021-09-20T10:40:37.000Z","total_file_size":47115,"content_type":"image/png","uri":"http://localhost:8080/emoji/01F8MH9H8E4VG3KDYJR9EGPXCQ"}`, string(b)) | 	suite.Equal(`{ | ||||||
|  |   "shortcode": "rainbow", | ||||||
|  |   "url": "http://localhost:8080/fileserver/01AY6P665V14JJR0AFVRT7311Y/emoji/original/01F8MH9H8E4VG3KDYJR9EGPXCQ.png", | ||||||
|  |   "static_url": "http://localhost:8080/fileserver/01AY6P665V14JJR0AFVRT7311Y/emoji/static/01F8MH9H8E4VG3KDYJR9EGPXCQ.png", | ||||||
|  |   "visible_in_picker": true, | ||||||
|  |   "category": "reactions", | ||||||
|  |   "id": "01F8MH9H8E4VG3KDYJR9EGPXCQ", | ||||||
|  |   "disabled": false, | ||||||
|  |   "updated_at": "2021-09-20T10:40:37.000Z", | ||||||
|  |   "total_file_size": 47115, | ||||||
|  |   "content_type": "image/png", | ||||||
|  |   "uri": "http://localhost:8080/emoji/01F8MH9H8E4VG3KDYJR9EGPXCQ" | ||||||
|  | }`, string(b)) | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| func (suite *InternalToFrontendTestSuite) TestEmojiToFrontendAdmin2() { | func (suite *InternalToFrontendTestSuite) TestEmojiToFrontendAdmin2() { | ||||||
| 	emoji, err := suite.typeconverter.EmojiToAdminAPIEmoji(context.Background(), suite.testEmojis["yell"]) | 	emoji, err := suite.typeconverter.EmojiToAdminAPIEmoji(context.Background(), suite.testEmojis["yell"]) | ||||||
| 	suite.NoError(err) | 	suite.NoError(err) | ||||||
| 
 | 
 | ||||||
| 	b, err := json.Marshal(emoji) | 	b, err := json.MarshalIndent(emoji, "", "  ") | ||||||
| 	suite.NoError(err) | 	suite.NoError(err) | ||||||
| 
 | 
 | ||||||
| 	suite.Equal(`{"shortcode":"yell","url":"http://localhost:8080/fileserver/01AY6P665V14JJR0AFVRT7311Y/emoji/original/01GD5KP5CQEE1R3X43Y1EHS2CW.png","static_url":"http://localhost:8080/fileserver/01AY6P665V14JJR0AFVRT7311Y/emoji/static/01GD5KP5CQEE1R3X43Y1EHS2CW.png","visible_in_picker":false,"id":"01GD5KP5CQEE1R3X43Y1EHS2CW","disabled":false,"domain":"fossbros-anonymous.io","updated_at":"2020-03-18T12:12:00.000Z","total_file_size":21697,"content_type":"image/png","uri":"http://fossbros-anonymous.io/emoji/01GD5KP5CQEE1R3X43Y1EHS2CW"}`, string(b)) | 	suite.Equal(`{ | ||||||
|  |   "shortcode": "yell", | ||||||
|  |   "url": "http://localhost:8080/fileserver/01AY6P665V14JJR0AFVRT7311Y/emoji/original/01GD5KP5CQEE1R3X43Y1EHS2CW.png", | ||||||
|  |   "static_url": "http://localhost:8080/fileserver/01AY6P665V14JJR0AFVRT7311Y/emoji/static/01GD5KP5CQEE1R3X43Y1EHS2CW.png", | ||||||
|  |   "visible_in_picker": false, | ||||||
|  |   "id": "01GD5KP5CQEE1R3X43Y1EHS2CW", | ||||||
|  |   "disabled": false, | ||||||
|  |   "domain": "fossbros-anonymous.io", | ||||||
|  |   "updated_at": "2020-03-18T12:12:00.000Z", | ||||||
|  |   "total_file_size": 21697, | ||||||
|  |   "content_type": "image/png", | ||||||
|  |   "uri": "http://fossbros-anonymous.io/emoji/01GD5KP5CQEE1R3X43Y1EHS2CW" | ||||||
|  | }`, string(b)) | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| func TestInternalToFrontendTestSuite(t *testing.T) { | func TestInternalToFrontendTestSuite(t *testing.T) { | ||||||
|  |  | ||||||
|  | @ -44,10 +44,19 @@ func (suite *WrapTestSuite) TestWrapNoteInCreateIRIOnly() { | ||||||
| 	createI, err := streams.Serialize(create) | 	createI, err := streams.Serialize(create) | ||||||
| 	suite.NoError(err) | 	suite.NoError(err) | ||||||
| 
 | 
 | ||||||
| 	bytes, err := json.Marshal(createI) | 	bytes, err := json.MarshalIndent(createI, "", "  ") | ||||||
| 	suite.NoError(err) | 	suite.NoError(err) | ||||||
| 
 | 
 | ||||||
| 	suite.Equal(`{"@context":"https://www.w3.org/ns/activitystreams","actor":"http://localhost:8080/users/the_mighty_zork","cc":"http://localhost:8080/users/the_mighty_zork/followers","id":"http://localhost:8080/users/the_mighty_zork/statuses/01F8MHAMCHF6Y650WCRSCP4WMY/activity","object":"http://localhost:8080/users/the_mighty_zork/statuses/01F8MHAMCHF6Y650WCRSCP4WMY","published":"2021-10-20T12:40:37+02:00","to":"https://www.w3.org/ns/activitystreams#Public","type":"Create"}`, string(bytes)) | 	suite.Equal(`{ | ||||||
|  |   "@context": "https://www.w3.org/ns/activitystreams", | ||||||
|  |   "actor": "http://localhost:8080/users/the_mighty_zork", | ||||||
|  |   "cc": "http://localhost:8080/users/the_mighty_zork/followers", | ||||||
|  |   "id": "http://localhost:8080/users/the_mighty_zork/statuses/01F8MHAMCHF6Y650WCRSCP4WMY/activity", | ||||||
|  |   "object": "http://localhost:8080/users/the_mighty_zork/statuses/01F8MHAMCHF6Y650WCRSCP4WMY", | ||||||
|  |   "published": "2021-10-20T12:40:37+02:00", | ||||||
|  |   "to": "https://www.w3.org/ns/activitystreams#Public", | ||||||
|  |   "type": "Create" | ||||||
|  | }`, string(bytes)) | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| func (suite *WrapTestSuite) TestWrapNoteInCreate() { | func (suite *WrapTestSuite) TestWrapNoteInCreate() { | ||||||
|  | @ -63,10 +72,42 @@ func (suite *WrapTestSuite) TestWrapNoteInCreate() { | ||||||
| 	createI, err := streams.Serialize(create) | 	createI, err := streams.Serialize(create) | ||||||
| 	suite.NoError(err) | 	suite.NoError(err) | ||||||
| 
 | 
 | ||||||
| 	bytes, err := json.Marshal(createI) | 	bytes, err := json.MarshalIndent(createI, "", "  ") | ||||||
| 	suite.NoError(err) | 	suite.NoError(err) | ||||||
| 
 | 
 | ||||||
| 	suite.Equal(`{"@context":"https://www.w3.org/ns/activitystreams","actor":"http://localhost:8080/users/the_mighty_zork","cc":"http://localhost:8080/users/the_mighty_zork/followers","id":"http://localhost:8080/users/the_mighty_zork/statuses/01F8MHAMCHF6Y650WCRSCP4WMY/activity","object":{"attachment":[],"attributedTo":"http://localhost:8080/users/the_mighty_zork","cc":"http://localhost:8080/users/the_mighty_zork/followers","content":"hello everyone!","id":"http://localhost:8080/users/the_mighty_zork/statuses/01F8MHAMCHF6Y650WCRSCP4WMY","published":"2021-10-20T12:40:37+02:00","replies":{"first":{"id":"http://localhost:8080/users/the_mighty_zork/statuses/01F8MHAMCHF6Y650WCRSCP4WMY/replies?page=true","next":"http://localhost:8080/users/the_mighty_zork/statuses/01F8MHAMCHF6Y650WCRSCP4WMY/replies?only_other_accounts=false\u0026page=true","partOf":"http://localhost:8080/users/the_mighty_zork/statuses/01F8MHAMCHF6Y650WCRSCP4WMY/replies","type":"CollectionPage"},"id":"http://localhost:8080/users/the_mighty_zork/statuses/01F8MHAMCHF6Y650WCRSCP4WMY/replies","type":"Collection"},"sensitive":true,"summary":"introduction post","tag":[],"to":"https://www.w3.org/ns/activitystreams#Public","type":"Note","url":"http://localhost:8080/@the_mighty_zork/statuses/01F8MHAMCHF6Y650WCRSCP4WMY"},"published":"2021-10-20T12:40:37+02:00","to":"https://www.w3.org/ns/activitystreams#Public","type":"Create"}`, string(bytes)) | 	suite.Equal(`{ | ||||||
|  |   "@context": "https://www.w3.org/ns/activitystreams", | ||||||
|  |   "actor": "http://localhost:8080/users/the_mighty_zork", | ||||||
|  |   "cc": "http://localhost:8080/users/the_mighty_zork/followers", | ||||||
|  |   "id": "http://localhost:8080/users/the_mighty_zork/statuses/01F8MHAMCHF6Y650WCRSCP4WMY/activity", | ||||||
|  |   "object": { | ||||||
|  |     "attachment": [], | ||||||
|  |     "attributedTo": "http://localhost:8080/users/the_mighty_zork", | ||||||
|  |     "cc": "http://localhost:8080/users/the_mighty_zork/followers", | ||||||
|  |     "content": "hello everyone!", | ||||||
|  |     "id": "http://localhost:8080/users/the_mighty_zork/statuses/01F8MHAMCHF6Y650WCRSCP4WMY", | ||||||
|  |     "published": "2021-10-20T12:40:37+02:00", | ||||||
|  |     "replies": { | ||||||
|  |       "first": { | ||||||
|  |         "id": "http://localhost:8080/users/the_mighty_zork/statuses/01F8MHAMCHF6Y650WCRSCP4WMY/replies?page=true", | ||||||
|  |         "next": "http://localhost:8080/users/the_mighty_zork/statuses/01F8MHAMCHF6Y650WCRSCP4WMY/replies?only_other_accounts=false\u0026page=true", | ||||||
|  |         "partOf": "http://localhost:8080/users/the_mighty_zork/statuses/01F8MHAMCHF6Y650WCRSCP4WMY/replies", | ||||||
|  |         "type": "CollectionPage" | ||||||
|  |       }, | ||||||
|  |       "id": "http://localhost:8080/users/the_mighty_zork/statuses/01F8MHAMCHF6Y650WCRSCP4WMY/replies", | ||||||
|  |       "type": "Collection" | ||||||
|  |     }, | ||||||
|  |     "sensitive": true, | ||||||
|  |     "summary": "introduction post", | ||||||
|  |     "tag": [], | ||||||
|  |     "to": "https://www.w3.org/ns/activitystreams#Public", | ||||||
|  |     "type": "Note", | ||||||
|  |     "url": "http://localhost:8080/@the_mighty_zork/statuses/01F8MHAMCHF6Y650WCRSCP4WMY" | ||||||
|  |   }, | ||||||
|  |   "published": "2021-10-20T12:40:37+02:00", | ||||||
|  |   "to": "https://www.w3.org/ns/activitystreams#Public", | ||||||
|  |   "type": "Create" | ||||||
|  | }`, string(bytes)) | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| func TestWrapTestSuite(t *testing.T) { | func TestWrapTestSuite(t *testing.T) { | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue