mirror of
https://github.com/overleaf/overleaf.git
synced 2024-12-12 08:17:28 -05:00
Remove web /spelling/check endpoint (#21740)
GitOrigin-RevId: f10ebfec08ba1156eafce45078bc783ca934864d
This commit is contained in:
parent
5821dc7273
commit
a50d76f4ea
3 changed files with 0 additions and 171 deletions
|
@ -1,14 +1,6 @@
|
||||||
import request from 'request'
|
|
||||||
import Settings from '@overleaf/settings'
|
|
||||||
import logger from '@overleaf/logger'
|
|
||||||
import SessionManager from '../Authentication/SessionManager.js'
|
import SessionManager from '../Authentication/SessionManager.js'
|
||||||
import LearnedWordsManager from './LearnedWordsManager.js'
|
import LearnedWordsManager from './LearnedWordsManager.js'
|
||||||
|
|
||||||
const TEN_SECONDS = 1000 * 10
|
|
||||||
|
|
||||||
const languageCodeIsSupported = code =>
|
|
||||||
Settings.languages.some(lang => lang.code === code && lang.server !== false)
|
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
learn(req, res, next) {
|
learn(req, res, next) {
|
||||||
const { word } = req.body
|
const { word } = req.body
|
||||||
|
@ -27,36 +19,4 @@ export default {
|
||||||
res.sendStatus(204)
|
res.sendStatus(204)
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
|
|
||||||
proxyCheckRequestToSpellingApi(req, res) {
|
|
||||||
const { language } = req.body
|
|
||||||
|
|
||||||
if (!language) {
|
|
||||||
logger.error({}, '"language" field should be included for spell checking')
|
|
||||||
return res.status(422).json({ misspellings: [] })
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!languageCodeIsSupported(language)) {
|
|
||||||
// this log statement can be changed to 'error' once projects with
|
|
||||||
// unsupported languages are removed from the DB
|
|
||||||
logger.debug({ language }, 'language not supported')
|
|
||||||
return res.status(422).json({ misspellings: [] })
|
|
||||||
}
|
|
||||||
|
|
||||||
const userId = SessionManager.getLoggedInUserId(req.session)
|
|
||||||
const url = `${Settings.apis.spelling.url}/user/${userId}/check`
|
|
||||||
req.headers.Host = Settings.apis.spelling.host
|
|
||||||
return request({
|
|
||||||
url,
|
|
||||||
method: 'POST',
|
|
||||||
headers: req.headers,
|
|
||||||
json: req.body,
|
|
||||||
timeout: TEN_SECONDS,
|
|
||||||
})
|
|
||||||
.on('error', function (error) {
|
|
||||||
logger.error({ err: error }, 'Spelling Check API error')
|
|
||||||
return res.status(500).end()
|
|
||||||
})
|
|
||||||
.pipe(res)
|
|
||||||
},
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1110,11 +1110,6 @@ async function initialize(webRouter, privateApiRouter, publicApiRouter) {
|
||||||
TpdsController.deleteProjectContents
|
TpdsController.deleteProjectContents
|
||||||
)
|
)
|
||||||
|
|
||||||
webRouter.post(
|
|
||||||
'/spelling/check',
|
|
||||||
AuthenticationController.requireLogin(),
|
|
||||||
SpellingController.proxyCheckRequestToSpellingApi
|
|
||||||
)
|
|
||||||
webRouter.post(
|
webRouter.post(
|
||||||
'/spelling/learn',
|
'/spelling/learn',
|
||||||
validate({
|
validate({
|
||||||
|
|
|
@ -1,126 +0,0 @@
|
||||||
import esmock from 'esmock'
|
|
||||||
import sinon from 'sinon'
|
|
||||||
import MockResponse from '../helpers/MockResponse.js'
|
|
||||||
const modulePath = new URL(
|
|
||||||
'../../../../app/src/Features/Spelling/SpellingController.mjs',
|
|
||||||
import.meta.url
|
|
||||||
).pathname
|
|
||||||
|
|
||||||
const TEN_SECONDS = 1000 * 10
|
|
||||||
|
|
||||||
const SPELLING_HOST = 'http://spelling.service.test'
|
|
||||||
const SPELLING_URL = 'http://spelling.service.test'
|
|
||||||
|
|
||||||
describe('SpellingController', function () {
|
|
||||||
const userId = '123nd3ijdks'
|
|
||||||
|
|
||||||
beforeEach(async function () {
|
|
||||||
this.requestStreamPipe = sinon.stub()
|
|
||||||
this.requestStreamOn = sinon
|
|
||||||
.stub()
|
|
||||||
.returns({ pipe: this.requestStreamPipe })
|
|
||||||
this.request = sinon.stub().returns({
|
|
||||||
on: this.requestStreamOn,
|
|
||||||
})
|
|
||||||
|
|
||||||
this.AuthenticationController = {
|
|
||||||
getLoggedInUserId: req => req.session.user._id,
|
|
||||||
}
|
|
||||||
this.controller = await esmock.strict(modulePath, {
|
|
||||||
'../../../../app/src/Features/Spelling/LearnedWordsManager': {},
|
|
||||||
request: this.request,
|
|
||||||
'@overleaf/settings': {
|
|
||||||
languages: [
|
|
||||||
{ name: 'English', code: 'en' },
|
|
||||||
{ name: 'French', code: 'fr' },
|
|
||||||
],
|
|
||||||
apis: { spelling: { host: SPELLING_HOST, url: SPELLING_URL } },
|
|
||||||
},
|
|
||||||
'../../../../app/src/Features/Authentication/AuthenticationController':
|
|
||||||
this.AuthenticationController,
|
|
||||||
})
|
|
||||||
this.req = {
|
|
||||||
url: '/spelling/check',
|
|
||||||
method: 'POST',
|
|
||||||
params: {},
|
|
||||||
session: {
|
|
||||||
user: {
|
|
||||||
_id: userId,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
headers: { Host: SPELLING_HOST },
|
|
||||||
}
|
|
||||||
|
|
||||||
this.res = new MockResponse()
|
|
||||||
})
|
|
||||||
|
|
||||||
describe('proxyCheckRequestToSpellingApi', function () {
|
|
||||||
describe('on successful call', function () {
|
|
||||||
beforeEach(function () {
|
|
||||||
this.req.session.user._id = this.userId = 'user-id-123'
|
|
||||||
this.req.body = { language: 'en', words: ['blab'] }
|
|
||||||
this.controller.proxyCheckRequestToSpellingApi(this.req, this.res)
|
|
||||||
})
|
|
||||||
|
|
||||||
it('should send a request to the spelling host', function () {
|
|
||||||
this.request
|
|
||||||
.calledWith({
|
|
||||||
url: `${SPELLING_URL}/user/${this.userId}/check`,
|
|
||||||
method: this.req.method,
|
|
||||||
headers: this.req.headers,
|
|
||||||
json: this.req.body,
|
|
||||||
timeout: TEN_SECONDS,
|
|
||||||
})
|
|
||||||
.should.equal(true)
|
|
||||||
})
|
|
||||||
|
|
||||||
it('should stream the response to the request', function () {
|
|
||||||
this.requestStreamPipe.calledWith(this.res).should.equal(true)
|
|
||||||
})
|
|
||||||
|
|
||||||
it('should add an error callback to the request', function () {
|
|
||||||
this.requestStreamOn.calledWith('error').should.equal(true)
|
|
||||||
})
|
|
||||||
})
|
|
||||||
|
|
||||||
describe('when the requested language is not supported', function () {
|
|
||||||
beforeEach(function () {
|
|
||||||
this.req.session.user._id = this.userId = 'user-id-123'
|
|
||||||
this.req.body = { language: 'fi', words: ['blab'] }
|
|
||||||
this.controller.proxyCheckRequestToSpellingApi(this.req, this.res)
|
|
||||||
})
|
|
||||||
|
|
||||||
it('should not send a request to the spelling host', function () {
|
|
||||||
this.request.called.should.equal(false)
|
|
||||||
})
|
|
||||||
|
|
||||||
it('should return an empty misspellings array', function () {
|
|
||||||
this.res.json.calledWith({ misspellings: [] }).should.equal(true)
|
|
||||||
})
|
|
||||||
|
|
||||||
it('should return a 422 status', function () {
|
|
||||||
this.res.status.calledWith(422).should.equal(true)
|
|
||||||
})
|
|
||||||
})
|
|
||||||
|
|
||||||
describe('when no language is indicated', function () {
|
|
||||||
beforeEach(function () {
|
|
||||||
this.req.session.user._id = this.userId = 'user-id-123'
|
|
||||||
this.req.body = { words: ['blab'] }
|
|
||||||
this.controller.proxyCheckRequestToSpellingApi(this.req, this.res)
|
|
||||||
})
|
|
||||||
|
|
||||||
it('should not send a request to the spelling host', function () {
|
|
||||||
this.request.called.should.equal(false)
|
|
||||||
})
|
|
||||||
|
|
||||||
it('should return an empty misspellings array', function () {
|
|
||||||
this.res.json.calledWith({ misspellings: [] }).should.equal(true)
|
|
||||||
})
|
|
||||||
|
|
||||||
it('should return a 422 status', function () {
|
|
||||||
this.res.status.calledWith(422).should.equal(true)
|
|
||||||
})
|
|
||||||
})
|
|
||||||
})
|
|
||||||
})
|
|
Loading…
Reference in a new issue