diff --git a/backend/app/rest/api/rest_private_test.go b/backend/app/rest/api/rest_private_test.go index 0e412863f9..d7f566b555 100644 --- a/backend/app/rest/api/rest_private_test.go +++ b/backend/app/rest/api/rest_private_test.go @@ -166,6 +166,26 @@ func TestRest_CreateWithRestrictedWord(t *testing.T) { assert.Equal(t, "invalid comment", c["details"]) } +func TestRest_CreateURLWithoutChange(t *testing.T) { + ts, _, teardown := startupT(t) + defer teardown() + + // check that it's not possible to click insert URL button and not alter the URL in it (which is `url` by default) + textWithoutChangedURL := `{"text": "here is a link without URL: [google.com](url)", "locator":{"url": "https://radio-t.com/blah1", "site": "remark42"}}` + + resp, err := post(t, ts.URL+"/api/v1/comment", textWithoutChangedURL) + assert.NoError(t, err) + assert.Equal(t, http.StatusBadRequest, resp.StatusCode) + b, err := io.ReadAll(resp.Body) + assert.NoError(t, err) + assert.NoError(t, resp.Body.Close()) + c := R.JSON{} + err = json.Unmarshal(b, &c) + assert.NoError(t, err) + assert.Equal(t, "please define link URL in the parentesis", c["error"]) + assert.Equal(t, "invalid comment", c["details"]) +} + func TestRest_CreateRejected(t *testing.T) { ts, _, teardown := startupT(t) defer teardown() diff --git a/backend/app/store/service/service.go b/backend/app/store/service/service.go index 102cdca9a5..9bc4288c58 100644 --- a/backend/app/store/service/service.go +++ b/backend/app/store/service/service.go @@ -642,6 +642,9 @@ func (s *DataStore) ValidateComment(c *store.Comment) error { if c.User.ID == "" || c.User.Name == "" { return fmt.Errorf("empty user info") } + if strings.Contains(c.Orig, "](url)") { + return fmt.Errorf("please define link URL in the parentesis") + } return nil } diff --git a/backend/app/store/service/service_test.go b/backend/app/store/service/service_test.go index e4ff08f7b6..41cbdf5594 100644 --- a/backend/app/store/service/service_test.go +++ b/backend/app/store/service/service_test.go @@ -786,6 +786,7 @@ func TestService_ValidateComment(t *testing.T) { {inp: store.Comment{Orig: "something blah", User: store.User{ID: "myid", Name: "name"}}, err: nil}, {inp: store.Comment{Orig: "something blah", User: store.User{ID: "myid"}}, err: fmt.Errorf("empty user info")}, {inp: store.Comment{Orig: longText, User: store.User{ID: "myid", Name: "name"}}, err: fmt.Errorf("comment text exceeded max allowed size 2000 (4000)")}, + {inp: store.Comment{Orig: "here is a link without URL: [google.com](url)", User: store.User{ID: "myid", Name: "name"}}, err: fmt.Errorf("please define link URL in the parentesis")}, } for n, tt := range tbl {