diff options
Diffstat (limited to 'internal/processing/status')
| -rw-r--r-- | internal/processing/status/create.go | 20 | ||||
| -rw-r--r-- | internal/processing/status/create_test.go | 195 | 
2 files changed, 94 insertions, 121 deletions
| diff --git a/internal/processing/status/create.go b/internal/processing/status/create.go index 11dece87d..d5898ffe9 100644 --- a/internal/processing/status/create.go +++ b/internal/processing/status/create.go @@ -45,7 +45,7 @@ func (p *Processor) Create(  	ctx context.Context,  	requester *gtsmodel.Account,  	application *gtsmodel.Application, -	form *apimodel.AdvancedStatusCreateForm, +	form *apimodel.StatusCreateRequest,  ) (  	*apimodel.Status,  	gtserror.WithCode, @@ -290,7 +290,7 @@ func (p *Processor) processThreadID(ctx context.Context, status *gtsmodel.Status  	return nil  } -func (p *Processor) processMediaIDs(ctx context.Context, form *apimodel.AdvancedStatusCreateForm, thisAccountID string, status *gtsmodel.Status) gtserror.WithCode { +func (p *Processor) processMediaIDs(ctx context.Context, form *apimodel.StatusCreateRequest, thisAccountID string, status *gtsmodel.Status) gtserror.WithCode {  	if form.MediaIDs == nil {  		return nil  	} @@ -338,7 +338,7 @@ func (p *Processor) processMediaIDs(ctx context.Context, form *apimodel.Advanced  }  func processVisibility( -	form *apimodel.AdvancedStatusCreateForm, +	form *apimodel.StatusCreateRequest,  	accountDefaultVis gtsmodel.Visibility,  	status *gtsmodel.Status,  ) error { @@ -356,16 +356,16 @@ func processVisibility(  		status.Visibility = gtsmodel.VisibilityDefault  	} -	// Set federated flag to form value -	// if provided, or default to true. -	federated := util.PtrOrValue(form.Federated, true) -	status.Federated = &federated +	// Set federated according to "local_only" field, +	// assuming federated (ie., not local-only) by default. +	localOnly := util.PtrOrValue(form.LocalOnly, false) +	status.Federated = util.Ptr(!localOnly)  	return nil  }  func processInteractionPolicy( -	_ *apimodel.AdvancedStatusCreateForm, +	_ *apimodel.StatusCreateRequest,  	settings *gtsmodel.AccountSettings,  	status *gtsmodel.Status,  ) error { @@ -413,7 +413,7 @@ func processInteractionPolicy(  	return nil  } -func processLanguage(form *apimodel.AdvancedStatusCreateForm, accountDefaultLanguage string, status *gtsmodel.Status) error { +func processLanguage(form *apimodel.StatusCreateRequest, accountDefaultLanguage string, status *gtsmodel.Status) error {  	if form.Language != "" {  		status.Language = form.Language  	} else { @@ -425,7 +425,7 @@ func processLanguage(form *apimodel.AdvancedStatusCreateForm, accountDefaultLang  	return nil  } -func (p *Processor) processContent(ctx context.Context, parseMention gtsmodel.ParseMentionFunc, form *apimodel.AdvancedStatusCreateForm, status *gtsmodel.Status) error { +func (p *Processor) processContent(ctx context.Context, parseMention gtsmodel.ParseMentionFunc, form *apimodel.StatusCreateRequest, status *gtsmodel.Status) error {  	if form.ContentType == "" {  		// If content type wasn't specified, use the author's preferred content-type.  		contentType := apimodel.StatusContentType(status.Account.Settings.StatusContentType) diff --git a/internal/processing/status/create_test.go b/internal/processing/status/create_test.go index a8211d1c1..84168880e 100644 --- a/internal/processing/status/create_test.go +++ b/internal/processing/status/create_test.go @@ -26,6 +26,7 @@ import (  	"github.com/superseriousbusiness/gotosocial/internal/config"  	"github.com/superseriousbusiness/gotosocial/internal/db"  	"github.com/superseriousbusiness/gotosocial/internal/gtsmodel" +	"github.com/superseriousbusiness/gotosocial/internal/util"  )  type StatusCreateTestSuite struct { @@ -38,22 +39,18 @@ func (suite *StatusCreateTestSuite) TestProcessContentWarningWithQuotationMarks(  	creatingAccount := suite.testAccounts["local_account_1"]  	creatingApplication := suite.testApplications["application_1"] -	statusCreateForm := &apimodel.AdvancedStatusCreateForm{ -		StatusCreateRequest: apimodel.StatusCreateRequest{ -			Status:      "poopoo peepee", -			MediaIDs:    []string{}, -			Poll:        nil, -			InReplyToID: "", -			Sensitive:   false, -			SpoilerText: "\"test\"", // these should not be html-escaped when the final text is rendered -			Visibility:  apimodel.VisibilityPublic, -			ScheduledAt: "", -			Language:    "en", -			ContentType: apimodel.StatusContentTypePlain, -		}, -		AdvancedVisibilityFlagsForm: apimodel.AdvancedVisibilityFlagsForm{ -			Federated: nil, -		}, +	statusCreateForm := &apimodel.StatusCreateRequest{ +		Status:      "poopoo peepee", +		MediaIDs:    []string{}, +		Poll:        nil, +		InReplyToID: "", +		Sensitive:   false, +		SpoilerText: "\"test\"", // these should not be html-escaped when the final text is rendered +		Visibility:  apimodel.VisibilityPublic, +		LocalOnly:   util.Ptr(false), +		ScheduledAt: "", +		Language:    "en", +		ContentType: apimodel.StatusContentTypePlain,  	}  	apiStatus, err := suite.status.Create(ctx, creatingAccount, creatingApplication, statusCreateForm) @@ -69,22 +66,18 @@ func (suite *StatusCreateTestSuite) TestProcessContentWarningWithHTMLEscapedQuot  	creatingAccount := suite.testAccounts["local_account_1"]  	creatingApplication := suite.testApplications["application_1"] -	statusCreateForm := &apimodel.AdvancedStatusCreateForm{ -		StatusCreateRequest: apimodel.StatusCreateRequest{ -			Status:      "poopoo peepee", -			MediaIDs:    []string{}, -			Poll:        nil, -			InReplyToID: "", -			Sensitive:   false, -			SpoilerText: ""test"", // the html-escaped quotation marks should appear as normal quotation marks in the finished text -			Visibility:  apimodel.VisibilityPublic, -			ScheduledAt: "", -			Language:    "en", -			ContentType: apimodel.StatusContentTypePlain, -		}, -		AdvancedVisibilityFlagsForm: apimodel.AdvancedVisibilityFlagsForm{ -			Federated: nil, -		}, +	statusCreateForm := &apimodel.StatusCreateRequest{ +		Status:      "poopoo peepee", +		MediaIDs:    []string{}, +		Poll:        nil, +		InReplyToID: "", +		Sensitive:   false, +		SpoilerText: ""test"", // the html-escaped quotation marks should appear as normal quotation marks in the finished text +		Visibility:  apimodel.VisibilityPublic, +		LocalOnly:   util.Ptr(false), +		ScheduledAt: "", +		Language:    "en", +		ContentType: apimodel.StatusContentTypePlain,  	}  	apiStatus, err := suite.status.Create(ctx, creatingAccount, creatingApplication, statusCreateForm) @@ -105,21 +98,17 @@ func (suite *StatusCreateTestSuite) TestProcessStatusMarkdownWithUnderscoreEmoji  	creatingAccount := suite.testAccounts["local_account_1"]  	creatingApplication := suite.testApplications["application_1"] -	statusCreateForm := &apimodel.AdvancedStatusCreateForm{ -		StatusCreateRequest: apimodel.StatusCreateRequest{ -			Status:      "poopoo peepee :_rainbow_:", -			MediaIDs:    []string{}, -			Poll:        nil, -			InReplyToID: "", -			Sensitive:   false, -			Visibility:  apimodel.VisibilityPublic, -			ScheduledAt: "", -			Language:    "en", -			ContentType: apimodel.StatusContentTypeMarkdown, -		}, -		AdvancedVisibilityFlagsForm: apimodel.AdvancedVisibilityFlagsForm{ -			Federated: nil, -		}, +	statusCreateForm := &apimodel.StatusCreateRequest{ +		Status:      "poopoo peepee :_rainbow_:", +		MediaIDs:    []string{}, +		Poll:        nil, +		InReplyToID: "", +		Sensitive:   false, +		Visibility:  apimodel.VisibilityPublic, +		LocalOnly:   util.Ptr(false), +		ScheduledAt: "", +		Language:    "en", +		ContentType: apimodel.StatusContentTypeMarkdown,  	}  	apiStatus, err := suite.status.Create(ctx, creatingAccount, creatingApplication, statusCreateForm) @@ -135,22 +124,18 @@ func (suite *StatusCreateTestSuite) TestProcessStatusMarkdownWithSpoilerTextEmoj  	creatingAccount := suite.testAccounts["local_account_1"]  	creatingApplication := suite.testApplications["application_1"] -	statusCreateForm := &apimodel.AdvancedStatusCreateForm{ -		StatusCreateRequest: apimodel.StatusCreateRequest{ -			Status:      "poopoo peepee", -			SpoilerText: "testing something :rainbow:", -			MediaIDs:    []string{}, -			Poll:        nil, -			InReplyToID: "", -			Sensitive:   false, -			Visibility:  apimodel.VisibilityPublic, -			ScheduledAt: "", -			Language:    "en", -			ContentType: apimodel.StatusContentTypeMarkdown, -		}, -		AdvancedVisibilityFlagsForm: apimodel.AdvancedVisibilityFlagsForm{ -			Federated: nil, -		}, +	statusCreateForm := &apimodel.StatusCreateRequest{ +		Status:      "poopoo peepee", +		SpoilerText: "testing something :rainbow:", +		MediaIDs:    []string{}, +		Poll:        nil, +		InReplyToID: "", +		Sensitive:   false, +		Visibility:  apimodel.VisibilityPublic, +		LocalOnly:   util.Ptr(false), +		ScheduledAt: "", +		Language:    "en", +		ContentType: apimodel.StatusContentTypeMarkdown,  	}  	apiStatus, err := suite.status.Create(ctx, creatingAccount, creatingApplication, statusCreateForm) @@ -170,22 +155,18 @@ func (suite *StatusCreateTestSuite) TestProcessMediaDescriptionTooShort() {  	creatingAccount := suite.testAccounts["local_account_1"]  	creatingApplication := suite.testApplications["application_1"] -	statusCreateForm := &apimodel.AdvancedStatusCreateForm{ -		StatusCreateRequest: apimodel.StatusCreateRequest{ -			Status:      "poopoo peepee", -			MediaIDs:    []string{suite.testAttachments["local_account_1_unattached_1"].ID}, -			Poll:        nil, -			InReplyToID: "", -			Sensitive:   false, -			SpoilerText: "", -			Visibility:  apimodel.VisibilityPublic, -			ScheduledAt: "", -			Language:    "en", -			ContentType: apimodel.StatusContentTypePlain, -		}, -		AdvancedVisibilityFlagsForm: apimodel.AdvancedVisibilityFlagsForm{ -			Federated: nil, -		}, +	statusCreateForm := &apimodel.StatusCreateRequest{ +		Status:      "poopoo peepee", +		MediaIDs:    []string{suite.testAttachments["local_account_1_unattached_1"].ID}, +		Poll:        nil, +		InReplyToID: "", +		Sensitive:   false, +		SpoilerText: "", +		Visibility:  apimodel.VisibilityPublic, +		LocalOnly:   util.Ptr(false), +		ScheduledAt: "", +		Language:    "en", +		ContentType: apimodel.StatusContentTypePlain,  	}  	apiStatus, err := suite.status.Create(ctx, creatingAccount, creatingApplication, statusCreateForm) @@ -199,22 +180,18 @@ func (suite *StatusCreateTestSuite) TestProcessLanguageWithScriptPart() {  	creatingAccount := suite.testAccounts["local_account_1"]  	creatingApplication := suite.testApplications["application_1"] -	statusCreateForm := &apimodel.AdvancedStatusCreateForm{ -		StatusCreateRequest: apimodel.StatusCreateRequest{ -			Status:      "你好世界", // hello world -			MediaIDs:    []string{}, -			Poll:        nil, -			InReplyToID: "", -			Sensitive:   false, -			SpoilerText: "", -			Visibility:  apimodel.VisibilityPublic, -			ScheduledAt: "", -			Language:    "zh-Hans", -			ContentType: apimodel.StatusContentTypePlain, -		}, -		AdvancedVisibilityFlagsForm: apimodel.AdvancedVisibilityFlagsForm{ -			Federated: nil, -		}, +	statusCreateForm := &apimodel.StatusCreateRequest{ +		Status:      "你好世界", // hello world +		MediaIDs:    []string{}, +		Poll:        nil, +		InReplyToID: "", +		Sensitive:   false, +		SpoilerText: "", +		Visibility:  apimodel.VisibilityPublic, +		LocalOnly:   util.Ptr(false), +		ScheduledAt: "", +		Language:    "zh-Hans", +		ContentType: apimodel.StatusContentTypePlain,  	}  	apiStatus, err := suite.status.Create(ctx, creatingAccount, creatingApplication, statusCreateForm) @@ -233,22 +210,18 @@ func (suite *StatusCreateTestSuite) TestProcessReplyToUnthreadedRemoteStatus() {  	// Reply to a remote status that  	// doesn't have a threadID set on it. -	statusCreateForm := &apimodel.AdvancedStatusCreateForm{ -		StatusCreateRequest: apimodel.StatusCreateRequest{ -			Status:      "boobies", -			MediaIDs:    []string{}, -			Poll:        nil, -			InReplyToID: inReplyTo.ID, -			Sensitive:   false, -			SpoilerText: "this is a reply", -			Visibility:  apimodel.VisibilityPublic, -			ScheduledAt: "", -			Language:    "en", -			ContentType: apimodel.StatusContentTypePlain, -		}, -		AdvancedVisibilityFlagsForm: apimodel.AdvancedVisibilityFlagsForm{ -			Federated: nil, -		}, +	statusCreateForm := &apimodel.StatusCreateRequest{ +		Status:      "boobies", +		MediaIDs:    []string{}, +		Poll:        nil, +		InReplyToID: inReplyTo.ID, +		Sensitive:   false, +		SpoilerText: "this is a reply", +		Visibility:  apimodel.VisibilityPublic, +		LocalOnly:   util.Ptr(false), +		ScheduledAt: "", +		Language:    "en", +		ContentType: apimodel.StatusContentTypePlain,  	}  	apiStatus, err := suite.status.Create(ctx, creatingAccount, creatingApplication, statusCreateForm) | 
