2023-06-13 20:34:44 +00:00
|
|
|
import { loadFixture, runCLI } from './test-utils.js';
|
|
|
|
import { expect } from 'chai';
|
|
|
|
import * as cheerio from 'cheerio';
|
|
|
|
import cloudflare from '../dist/index.js';
|
|
|
|
|
2023-09-11 18:04:44 +00:00
|
|
|
describe('Wrangler Cloudflare Runtime', () => {
|
2023-06-13 20:34:44 +00:00
|
|
|
/** @type {import('./test-utils').Fixture} */
|
|
|
|
let fixture;
|
2023-07-17 12:30:02 +00:00
|
|
|
/** @type {import('./test-utils').WranglerCLI} */
|
|
|
|
let cli;
|
2023-06-13 20:34:44 +00:00
|
|
|
|
2023-09-05 19:35:41 +00:00
|
|
|
before(async function () {
|
2023-06-13 20:34:44 +00:00
|
|
|
fixture = await loadFixture({
|
|
|
|
root: './fixtures/cf/',
|
|
|
|
output: 'server',
|
|
|
|
adapter: cloudflare(),
|
|
|
|
});
|
|
|
|
await fixture.build();
|
2023-07-17 12:30:02 +00:00
|
|
|
|
2023-09-22 14:58:00 +00:00
|
|
|
cli = await runCLI('./fixtures/cf/', {
|
|
|
|
silent: true,
|
|
|
|
onTimeout: (ex) => {
|
|
|
|
console.log(ex);
|
|
|
|
// if fail to start, skip for now as it's very flaky
|
|
|
|
this.skip();
|
|
|
|
},
|
2023-09-05 19:35:41 +00:00
|
|
|
});
|
2023-06-13 20:34:44 +00:00
|
|
|
});
|
|
|
|
|
2023-07-17 12:30:02 +00:00
|
|
|
after(async () => {
|
2023-09-22 14:58:00 +00:00
|
|
|
await cli?.stop();
|
2023-07-17 12:30:02 +00:00
|
|
|
});
|
2023-06-13 20:34:44 +00:00
|
|
|
|
2023-07-17 12:30:02 +00:00
|
|
|
it('Load cf and caches API', async () => {
|
2023-09-22 14:58:00 +00:00
|
|
|
let res = await fetch(`http://127.0.0.1:${cli.port}/`);
|
2023-07-17 12:30:02 +00:00
|
|
|
expect(res.status).to.equal(200);
|
|
|
|
let html = await res.text();
|
|
|
|
let $ = cheerio.load(html);
|
2023-08-15 17:10:51 +00:00
|
|
|
|
2023-08-16 18:28:57 +00:00
|
|
|
expect($('#hasRuntime').text()).to.equal('true');
|
2023-07-17 12:30:02 +00:00
|
|
|
expect($('#hasCache').text()).to.equal('true');
|
2023-06-13 20:34:44 +00:00
|
|
|
});
|
|
|
|
});
|
2023-09-11 18:04:44 +00:00
|
|
|
|
|
|
|
describe('Astro Cloudflare Runtime', () => {
|
|
|
|
/** @type {import('./test-utils').Fixture} */
|
|
|
|
let fixture;
|
|
|
|
let devServer;
|
|
|
|
|
|
|
|
before(async () => {
|
|
|
|
fixture = await loadFixture({
|
|
|
|
root: './fixtures/cf/',
|
|
|
|
output: 'server',
|
|
|
|
adapter: cloudflare({
|
|
|
|
runtime: 'local',
|
|
|
|
}),
|
|
|
|
});
|
|
|
|
process.chdir('./test/fixtures/cf');
|
|
|
|
devServer = await fixture.startDevServer();
|
|
|
|
});
|
|
|
|
|
|
|
|
after(async () => {
|
2023-09-22 14:58:00 +00:00
|
|
|
await devServer?.stop();
|
2023-09-11 18:04:44 +00:00
|
|
|
});
|
|
|
|
|
2023-10-02 14:04:57 +00:00
|
|
|
it('adds cf object', async () => {
|
2023-09-11 18:04:44 +00:00
|
|
|
let res = await fixture.fetch('/');
|
|
|
|
expect(res.status).to.equal(200);
|
|
|
|
let html = await res.text();
|
|
|
|
let $ = cheerio.load(html);
|
2023-10-02 14:04:57 +00:00
|
|
|
expect($('#hasCF').text()).to.equal('true');
|
|
|
|
});
|
|
|
|
|
|
|
|
it('adds cache mocking', async () => {
|
|
|
|
let res = await fixture.fetch('/caches');
|
|
|
|
expect(res.status).to.equal(200);
|
|
|
|
let html = await res.text();
|
|
|
|
let $ = cheerio.load(html);
|
|
|
|
expect($('#hasCACHE').text()).to.equal('true');
|
|
|
|
});
|
|
|
|
|
|
|
|
it('adds D1 mocking', async () => {
|
|
|
|
expect(await fixture.pathExists('../.mf/d1')).to.be.true;
|
|
|
|
|
|
|
|
let res = await fixture.fetch('/d1');
|
|
|
|
expect(res.status).to.equal(200);
|
|
|
|
let html = await res.text();
|
|
|
|
let $ = cheerio.load(html);
|
|
|
|
expect($('#hasDB').text()).to.equal('true');
|
|
|
|
expect($('#hasPRODDB').text()).to.equal('true');
|
|
|
|
expect($('#hasACCESS').text()).to.equal('true');
|
|
|
|
});
|
|
|
|
|
|
|
|
it('adds R2 mocking', async () => {
|
|
|
|
expect(await fixture.pathExists('../.mf/r2')).to.be.true;
|
|
|
|
|
|
|
|
let res = await fixture.fetch('/r2');
|
|
|
|
expect(res.status).to.equal(200);
|
|
|
|
let html = await res.text();
|
|
|
|
let $ = cheerio.load(html);
|
|
|
|
expect($('#hasBUCKET').text()).to.equal('true');
|
|
|
|
expect($('#hasPRODBUCKET').text()).to.equal('true');
|
|
|
|
expect($('#hasACCESS').text()).to.equal('true');
|
|
|
|
});
|
|
|
|
|
|
|
|
it('adds KV mocking', async () => {
|
|
|
|
expect(await fixture.pathExists('../.mf/kv')).to.be.true;
|
|
|
|
|
|
|
|
let res = await fixture.fetch('/kv');
|
|
|
|
expect(res.status).to.equal(200);
|
|
|
|
let html = await res.text();
|
|
|
|
let $ = cheerio.load(html);
|
|
|
|
expect($('#hasKV').text()).to.equal('true');
|
|
|
|
expect($('#hasPRODKV').text()).to.equal('true');
|
|
|
|
expect($('#hasACCESS').text()).to.equal('true');
|
|
|
|
});
|
|
|
|
|
|
|
|
it('adds DO mocking', async () => {
|
|
|
|
expect(await fixture.pathExists('../.mf/do')).to.be.true;
|
|
|
|
|
|
|
|
let res = await fixture.fetch('/do');
|
|
|
|
expect(res.status).to.equal(200);
|
|
|
|
let html = await res.text();
|
|
|
|
let $ = cheerio.load(html);
|
|
|
|
expect($('#hasDO').text()).to.equal('true');
|
2023-09-11 18:04:44 +00:00
|
|
|
});
|
|
|
|
});
|