mirror of
https://github.com/overleaf/overleaf.git
synced 2024-11-29 05:53:47 -05:00
[web] Move confirm_university_domain
to institutions module, and /api/clsi/compile/*
to publish-modal module (#19797)
* Move `/api/institutions/confirm_university_domain` to institutions module * Move `confirmDomain` to institutions module * Move `/api/clsi/compile/*` endpoints to `publish-modal` module * Move ApiClsiTests to publish-modal module * Revert move of MockClsiApi. It's still needed in the main acceptance tests GitOrigin-RevId: b59c2921e03b94546d72d21e60a688eb1ae1d05e
This commit is contained in:
parent
4bb4601d9d
commit
8736bee460
4 changed files with 0 additions and 207 deletions
|
@ -1,13 +0,0 @@
|
||||||
const InstitutionsManager = require('./InstitutionsManager')
|
|
||||||
|
|
||||||
module.exports = {
|
|
||||||
confirmDomain(req, res, next) {
|
|
||||||
const { hostname } = req.body
|
|
||||||
InstitutionsManager.confirmDomain(hostname, function (error) {
|
|
||||||
if (error) {
|
|
||||||
return next(error)
|
|
||||||
}
|
|
||||||
res.sendStatus(200)
|
|
||||||
})
|
|
||||||
},
|
|
||||||
}
|
|
|
@ -15,7 +15,6 @@ const NotificationsHandler = require('../Notifications/NotificationsHandler')
|
||||||
const SubscriptionLocator = require('../Subscription/SubscriptionLocator')
|
const SubscriptionLocator = require('../Subscription/SubscriptionLocator')
|
||||||
const { Institution } = require('../../models/Institution')
|
const { Institution } = require('../../models/Institution')
|
||||||
const { Subscription } = require('../../models/Subscription')
|
const { Subscription } = require('../../models/Subscription')
|
||||||
const Queues = require('../../infrastructure/Queues')
|
|
||||||
const OError = require('@overleaf/o-error')
|
const OError = require('@overleaf/o-error')
|
||||||
|
|
||||||
const ASYNC_LIMIT = parseInt(process.env.ASYNC_LIMIT, 10) || 5
|
const ASYNC_LIMIT = parseInt(process.env.ASYNC_LIMIT, 10) || 5
|
||||||
|
@ -255,14 +254,6 @@ const InstitutionsManager = {
|
||||||
)
|
)
|
||||||
},
|
},
|
||||||
|
|
||||||
/**
|
|
||||||
* Enqueue a job for adding affiliations for when a domain is confirmed
|
|
||||||
*/
|
|
||||||
async confirmDomain(hostname) {
|
|
||||||
const queue = Queues.getQueue('confirm-institution-domain')
|
|
||||||
await queue.add({ hostname })
|
|
||||||
},
|
|
||||||
|
|
||||||
async fetchV1Data(institution) {
|
async fetchV1Data(institution) {
|
||||||
const url = `${Settings.apis.v1.url}/universities/list/${institution.v1Id}`
|
const url = `${Settings.apis.v1.url}/universities/list/${institution.v1Id}`
|
||||||
try {
|
try {
|
||||||
|
|
|
@ -56,7 +56,6 @@ const TokenAccessRouter = require('./Features/TokenAccess/TokenAccessRouter')
|
||||||
const Features = require('./infrastructure/Features')
|
const Features = require('./infrastructure/Features')
|
||||||
const LinkedFilesRouter = require('./Features/LinkedFiles/LinkedFilesRouter')
|
const LinkedFilesRouter = require('./Features/LinkedFiles/LinkedFilesRouter')
|
||||||
const TemplatesRouter = require('./Features/Templates/TemplatesRouter')
|
const TemplatesRouter = require('./Features/Templates/TemplatesRouter')
|
||||||
const InstitutionsController = require('./Features/Institutions/InstitutionsController')
|
|
||||||
const UserMembershipRouter = require('./Features/UserMembership/UserMembershipRouter')
|
const UserMembershipRouter = require('./Features/UserMembership/UserMembershipRouter')
|
||||||
const SystemMessageController = require('./Features/SystemMessages/SystemMessageController')
|
const SystemMessageController = require('./Features/SystemMessages/SystemMessageController')
|
||||||
const AnalyticsRegistrationSourceMiddleware = require('./Features/Analytics/AnalyticsRegistrationSourceMiddleware')
|
const AnalyticsRegistrationSourceMiddleware = require('./Features/Analytics/AnalyticsRegistrationSourceMiddleware')
|
||||||
|
@ -1152,34 +1151,6 @@ function initialize(webRouter, privateApiRouter, publicApiRouter) {
|
||||||
BetaProgramController.optOut
|
BetaProgramController.optOut
|
||||||
)
|
)
|
||||||
|
|
||||||
// New "api" endpoints. Started as a way for v1 to call over to v2 (for
|
|
||||||
// long-term features, as opposed to the nominally temporary ones in the
|
|
||||||
// overleaf-integration module), but may expand beyond that role.
|
|
||||||
publicApiRouter.post(
|
|
||||||
'/api/clsi/compile/:submission_id',
|
|
||||||
AuthenticationController.requirePrivateApiAuth(),
|
|
||||||
CompileController.compileSubmission
|
|
||||||
)
|
|
||||||
publicApiRouter.get(
|
|
||||||
/^\/api\/clsi\/compile\/([^/]*)\/build\/([0-9a-f-]+)\/output\/(.*)$/,
|
|
||||||
function (req, res, next) {
|
|
||||||
const params = {
|
|
||||||
submission_id: req.params[0],
|
|
||||||
build_id: req.params[1],
|
|
||||||
file: req.params[2],
|
|
||||||
}
|
|
||||||
req.params = params
|
|
||||||
next()
|
|
||||||
},
|
|
||||||
AuthenticationController.requirePrivateApiAuth(),
|
|
||||||
CompileController.getFileFromClsiWithoutUser
|
|
||||||
)
|
|
||||||
publicApiRouter.post(
|
|
||||||
'/api/institutions/confirm_university_domain',
|
|
||||||
AuthenticationController.requirePrivateApiAuth(),
|
|
||||||
InstitutionsController.confirmDomain
|
|
||||||
)
|
|
||||||
|
|
||||||
webRouter.get('/chrome', function (req, res, next) {
|
webRouter.get('/chrome', function (req, res, next) {
|
||||||
// Match v1 behaviour - this is used for a Chrome web app
|
// Match v1 behaviour - this is used for a Chrome web app
|
||||||
if (SessionManager.isUserLoggedIn(req.session)) {
|
if (SessionManager.isUserLoggedIn(req.session)) {
|
||||||
|
|
|
@ -1,156 +0,0 @@
|
||||||
/* eslint-disable
|
|
||||||
max-len,
|
|
||||||
no-unused-vars,
|
|
||||||
n/no-deprecated-api,
|
|
||||||
*/
|
|
||||||
// TODO: This file was created by bulk-decaffeinate.
|
|
||||||
// Fix any style issues and re-enable lint.
|
|
||||||
/*
|
|
||||||
* decaffeinate suggestions:
|
|
||||||
* DS102: Remove unnecessary code created because of implicit returns
|
|
||||||
* DS207: Consider shorter variations of null checks
|
|
||||||
* Full docs: https://github.com/decaffeinate/decaffeinate/blob/master/docs/suggestions.md
|
|
||||||
*/
|
|
||||||
const { expect } = require('chai')
|
|
||||||
const request = require('./helpers/request')
|
|
||||||
const Settings = require('@overleaf/settings')
|
|
||||||
|
|
||||||
const auth = Buffer.from('overleaf:password').toString('base64')
|
|
||||||
const authedRequest = request.defaults({
|
|
||||||
headers: {
|
|
||||||
Authorization: `Basic ${auth}`,
|
|
||||||
},
|
|
||||||
})
|
|
||||||
|
|
||||||
describe('ApiClsiTests', function () {
|
|
||||||
describe('compile', function () {
|
|
||||||
beforeEach(function (done) {
|
|
||||||
this.compileSpec = {
|
|
||||||
compile: {
|
|
||||||
options: {
|
|
||||||
compiler: 'pdflatex',
|
|
||||||
timeout: 60,
|
|
||||||
},
|
|
||||||
rootResourcePath: 'main.tex',
|
|
||||||
resources: [
|
|
||||||
{
|
|
||||||
path: 'main/tex',
|
|
||||||
content:
|
|
||||||
'\\documentclass{article}\n\\begin{document}\nHello World\n\\end{document}',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
path: 'image.png',
|
|
||||||
url: 'www.example.com/image.png',
|
|
||||||
modified: 123456789,
|
|
||||||
},
|
|
||||||
],
|
|
||||||
},
|
|
||||||
}
|
|
||||||
return done()
|
|
||||||
})
|
|
||||||
|
|
||||||
describe('valid request', function () {
|
|
||||||
it('returns success and a list of output files', function (done) {
|
|
||||||
return authedRequest.post(
|
|
||||||
{
|
|
||||||
uri: '/api/clsi/compile/abcd',
|
|
||||||
json: this.compileSpec,
|
|
||||||
},
|
|
||||||
(error, response, body) => {
|
|
||||||
if (error != null) {
|
|
||||||
throw error
|
|
||||||
}
|
|
||||||
expect(response.statusCode).to.equal(200)
|
|
||||||
expect(response.body).to.deep.equal({
|
|
||||||
status: 'success',
|
|
||||||
outputFiles: [
|
|
||||||
{
|
|
||||||
path: 'project.pdf',
|
|
||||||
url: '/project/abcd/build/1234/output/project.pdf',
|
|
||||||
type: 'pdf',
|
|
||||||
build: 1234,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
path: 'project.log',
|
|
||||||
url: '/project/abcd/build/1234/output/project.log',
|
|
||||||
type: 'log',
|
|
||||||
build: 1234,
|
|
||||||
},
|
|
||||||
],
|
|
||||||
})
|
|
||||||
return done()
|
|
||||||
}
|
|
||||||
)
|
|
||||||
})
|
|
||||||
})
|
|
||||||
|
|
||||||
describe('unauthorized', function () {
|
|
||||||
it('returns 401', function (done) {
|
|
||||||
return request.post(
|
|
||||||
{
|
|
||||||
uri: '/api/clsi/compile/abcd',
|
|
||||||
json: this.compileSpec,
|
|
||||||
},
|
|
||||||
(error, response, body) => {
|
|
||||||
if (error != null) {
|
|
||||||
throw error
|
|
||||||
}
|
|
||||||
expect(response.statusCode).to.equal(401)
|
|
||||||
expect(response.body).to.equal('Unauthorized')
|
|
||||||
return done()
|
|
||||||
}
|
|
||||||
)
|
|
||||||
})
|
|
||||||
})
|
|
||||||
})
|
|
||||||
|
|
||||||
describe('get output', function () {
|
|
||||||
describe('valid file', function () {
|
|
||||||
it('returns the file', function (done) {
|
|
||||||
return authedRequest.get(
|
|
||||||
'/api/clsi/compile/abcd/build/1234/output/project.pdf',
|
|
||||||
(error, response, body) => {
|
|
||||||
if (error != null) {
|
|
||||||
throw error
|
|
||||||
}
|
|
||||||
expect(response.statusCode).to.equal(200)
|
|
||||||
expect(response.body).to.equal('mock-pdf')
|
|
||||||
return done()
|
|
||||||
}
|
|
||||||
)
|
|
||||||
})
|
|
||||||
})
|
|
||||||
|
|
||||||
describe('invalid file', function () {
|
|
||||||
it('returns 404', function (done) {
|
|
||||||
return authedRequest.get(
|
|
||||||
'/api/clsi/compile/abcd/build/1234/output/project.aux',
|
|
||||||
(error, response, body) => {
|
|
||||||
if (error != null) {
|
|
||||||
throw error
|
|
||||||
}
|
|
||||||
expect(response.statusCode).to.equal(404)
|
|
||||||
expect(response.body).to.not.equal('mock-pdf')
|
|
||||||
return done()
|
|
||||||
}
|
|
||||||
)
|
|
||||||
})
|
|
||||||
})
|
|
||||||
|
|
||||||
describe('unauthorized', function () {
|
|
||||||
it('returns 401', function (done) {
|
|
||||||
return request.get(
|
|
||||||
'/api/clsi/compile/abcd/build/1234/output/project.pdf',
|
|
||||||
(error, response, body) => {
|
|
||||||
if (error != null) {
|
|
||||||
throw error
|
|
||||||
}
|
|
||||||
expect(response.statusCode).to.equal(401)
|
|
||||||
expect(response.body).to.not.equal('mock-pdf')
|
|
||||||
return done()
|
|
||||||
}
|
|
||||||
)
|
|
||||||
})
|
|
||||||
})
|
|
||||||
})
|
|
||||||
})
|
|
Loading…
Reference in a new issue