mirror of
https://github.com/bilawalsidhu/gods-eye-view.git
synced 2026-11-04 02:14:01 +00:00
81 lines
2.9 KiB
JavaScript
81 lines
2.9 KiB
JavaScript
import test from 'node:test';
|
|
import assert from 'node:assert/strict';
|
|
import { readFileSync } from 'node:fs';
|
|
import { createBrowserViteConfig } from '../../build/vite.js';
|
|
import standaloneConfig, * as compatibility from '../../vite.config.js';
|
|
import * as providers from '../../server/providers/local.js';
|
|
|
|
test('explicit build inputs preserve browser-only defines, plugin order and loopback protections', () => {
|
|
const plugin = { name: 'fixture-provider' };
|
|
const config = createBrowserViteConfig({
|
|
plugins: [plugin],
|
|
googleApiKey: 'browser-fixture',
|
|
cesiumToken: 'ion-fixture',
|
|
});
|
|
assert.equal(config.plugins[2], plugin);
|
|
assert.equal(config.server.host, 'localhost');
|
|
assert.equal(config.server.port, 4173);
|
|
assert.deepEqual(config.server.allowedHosts, [
|
|
'localhost',
|
|
'127.0.0.1',
|
|
'.local',
|
|
]);
|
|
assert.ok(config.server.fs.deny.includes('**/ENVIRONMENT'));
|
|
assert.ok(config.server.fs.deny.includes('.env.*'));
|
|
assert.equal(config.server.headers['X-Frame-Options'], 'DENY');
|
|
assert.equal(
|
|
config.server.headers['Content-Security-Policy'],
|
|
"frame-ancestors 'none'",
|
|
);
|
|
assert.deepEqual(config.define, {
|
|
'import.meta.env.GOOGLE_MAPS_API_KEY': '"browser-fixture"',
|
|
'import.meta.env.CESIUM_ION_TOKEN': '"ion-fixture"',
|
|
});
|
|
assert.equal(
|
|
createBrowserViteConfig({ host: '0.0.0.0', port: '4800' }).server
|
|
.allowedHosts,
|
|
true,
|
|
);
|
|
assert.equal(
|
|
createBrowserViteConfig({ host: '::', port: '4800' }).server.port,
|
|
4800,
|
|
);
|
|
});
|
|
|
|
test('build helper does not discover environment values or construct local providers', () => {
|
|
const before = process.env.GOOGLE_MAPS_API_KEY;
|
|
process.env.GOOGLE_MAPS_API_KEY = 'environment-fixture';
|
|
try {
|
|
const config = createBrowserViteConfig();
|
|
assert.equal(
|
|
config.define['import.meta.env.GOOGLE_MAPS_API_KEY'],
|
|
undefined,
|
|
);
|
|
assert.equal(config.plugins.length, 2);
|
|
} finally {
|
|
if (before === undefined) delete process.env.GOOGLE_MAPS_API_KEY;
|
|
else process.env.GOOGLE_MAPS_API_KEY = before;
|
|
}
|
|
});
|
|
|
|
test('root config retains existing named exports and standalone provider order', () => {
|
|
for (const [name, value] of Object.entries(providers))
|
|
assert.equal(compatibility[name], value, name);
|
|
const config = standaloneConfig({ mode: 'test' });
|
|
assert.deepEqual(
|
|
config.plugins.slice(2, -1).map((plugin) => plugin.name),
|
|
providers.localProviderPlugins().map((plugin) => plugin.name),
|
|
);
|
|
assert.equal(config.plugins.at(-2).name, 'gev-key-setup');
|
|
assert.equal(config.plugins.at(-1).name, 'api-not-found');
|
|
});
|
|
|
|
test('build export resolves in Node and has no browser fallback', async () => {
|
|
const exported = await import('gods-eye-view/build/vite');
|
|
assert.equal(exported.createBrowserViteConfig, createBrowserViteConfig);
|
|
const pkg = JSON.parse(
|
|
readFileSync(new URL('../../package.json', import.meta.url)),
|
|
);
|
|
assert.deepEqual(pkg.exports['./build/vite'], { node: './build/vite.js' });
|
|
});
|