67 lines
1.9 KiB
JavaScript
67 lines
1.9 KiB
JavaScript
|
|
#!/usr/bin/env node
|
||
|
|
import assert from 'node:assert/strict';
|
||
|
|
import express from 'express';
|
||
|
|
import { attachPortalSeoDiscoveryRoutes } from '../server/portal-seo-discovery-routes.mjs';
|
||
|
|
import { createMindspaceSeoDiscoveryService } from '../mindspace-seo-discovery-service.mjs';
|
||
|
|
|
||
|
|
const enabledConfig = {
|
||
|
|
seoGeo: {
|
||
|
|
enabled: true,
|
||
|
|
seo: { enabled: true, sitemap: true, robotsTxt: true },
|
||
|
|
geo: { enabled: true, llmsTxt: true, jsonLd: true },
|
||
|
|
},
|
||
|
|
};
|
||
|
|
|
||
|
|
const discovery = createMindspaceSeoDiscoveryService({
|
||
|
|
query: async () => [
|
||
|
|
[
|
||
|
|
{
|
||
|
|
id: 'pub-1',
|
||
|
|
page_id: 'page-1',
|
||
|
|
public_url: '/u/john/pages/demo',
|
||
|
|
access_mode: 'public',
|
||
|
|
status: 'online',
|
||
|
|
user_confirmed_at: Date.now(),
|
||
|
|
expires_at: null,
|
||
|
|
updated_at: Date.now(),
|
||
|
|
published_at: Date.now(),
|
||
|
|
title: 'Demo',
|
||
|
|
summary: '演示页面',
|
||
|
|
},
|
||
|
|
],
|
||
|
|
],
|
||
|
|
});
|
||
|
|
|
||
|
|
const app = express();
|
||
|
|
attachPortalSeoDiscoveryRoutes(app, {
|
||
|
|
getAuthPool: () => ({}),
|
||
|
|
getMindSpaceConfig: async () => enabledConfig,
|
||
|
|
getSeoDiscoveryService: () => discovery,
|
||
|
|
resolveRequestOrigin: () => 'https://m.tkmind.cn',
|
||
|
|
});
|
||
|
|
|
||
|
|
const server = app.listen(0);
|
||
|
|
try {
|
||
|
|
const { port } = server.address();
|
||
|
|
const base = `http://127.0.0.1:${port}`;
|
||
|
|
|
||
|
|
const robots = await fetch(`${base}/robots.txt`);
|
||
|
|
assert.equal(robots.status, 200);
|
||
|
|
const robotsBody = await robots.text();
|
||
|
|
assert.match(robotsBody, /Sitemap: https:\/\/m\.tkmind\.cn\/sitemap\.xml/);
|
||
|
|
|
||
|
|
const sitemap = await fetch(`${base}/sitemap.xml`);
|
||
|
|
assert.equal(sitemap.status, 200);
|
||
|
|
const sitemapBody = await sitemap.text();
|
||
|
|
assert.match(sitemapBody, /\/u\/john\/pages\/demo/);
|
||
|
|
|
||
|
|
const llms = await fetch(`${base}/llms.txt`);
|
||
|
|
assert.equal(llms.status, 200);
|
||
|
|
const llmsBody = await llms.text();
|
||
|
|
assert.match(llmsBody, /演示页面/);
|
||
|
|
|
||
|
|
console.log('verify-seo-discovery: ok');
|
||
|
|
} finally {
|
||
|
|
await new Promise((resolve, reject) => server.close((error) => (error ? reject(error) : resolve())));
|
||
|
|
}
|