This commit adds an API endpoint for notifying the preview server about PR updates (`/pr-updated`). According to the update, the preview server can take several actions. Currently, it will only check and (if necessary) update the PR's preview visibility (but more actions could be supported in the future). The API can be used with an automatic trigger (e.g. a GitHub webhook) to instantly update a PR's preview visibility when it changes. Fixes #16526
39 lines
1.5 KiB
TypeScript
39 lines
1.5 KiB
TypeScript
// Imports
|
|
import {GithubPullRequests} from '../common/github-pull-requests';
|
|
import {BUILD_VERIFICATION_STATUS, BuildVerifier} from '../upload-server/build-verifier';
|
|
import {UploadError} from '../upload-server/upload-error';
|
|
import * as c from './constants';
|
|
|
|
// Run
|
|
// TODO(gkalpak): Add e2e tests to cover these interactions as well.
|
|
GithubPullRequests.prototype.addComment = () => Promise.resolve();
|
|
BuildVerifier.prototype.getPrIsTrusted = (pr: number) => {
|
|
switch (pr) {
|
|
case c.BV_getPrIsTrusted_error:
|
|
// For e2e tests, fake an error.
|
|
return Promise.reject('Test');
|
|
case c.BV_getPrIsTrusted_notTrusted:
|
|
// For e2e tests, fake an untrusted PR (`false`).
|
|
return Promise.resolve(false);
|
|
default:
|
|
// For e2e tests, default to trusted PRs (`true`).
|
|
return Promise.resolve(true);
|
|
}
|
|
};
|
|
BuildVerifier.prototype.verify = (expectedPr: number, authHeader: string) => {
|
|
switch (authHeader) {
|
|
case c.BV_verify_error:
|
|
// For e2e tests, fake a verification error.
|
|
return Promise.reject(new UploadError(403, `Error while verifying upload for PR ${expectedPr}: Test`));
|
|
case c.BV_verify_verifiedNotTrusted:
|
|
// For e2e tests, fake a `verifiedNotTrusted` verification status.
|
|
return Promise.resolve(BUILD_VERIFICATION_STATUS.verifiedNotTrusted);
|
|
default:
|
|
// For e2e tests, default to `verifiedAndTrusted` verification status.
|
|
return Promise.resolve(BUILD_VERIFICATION_STATUS.verifiedAndTrusted);
|
|
}
|
|
};
|
|
|
|
// tslint:disable-next-line: no-var-requires
|
|
require('../upload-server/index');
|