Skip to content
This repository has been archived by the owner on Sep 17, 2024. It is now read-only.

feat(CI): Create CI for testing all modules based on a known-good engine commit #56

Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
42 changes: 42 additions & 0 deletions .github/workflows/test-all.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
name: Test all modules E2E
on:
- push

env:
CURRENT_WORKING_ENGINE_COMMIT: 920ac277dd0f5378cf8c3cc1ae414340dc6d76a6

jobs:
build:
runs-on: ubuntu-20.04
steps:
# Checkout registry repo
- name: Checkout registry Repo
uses: actions/checkout@v4
with:
path: opengb-registry

# Get engine repo to test against
- name: Fetch engine repo
uses: actions/checkout@v4
with:
repository: rivet-gg/opengb
ssh-key: ${{ secrets.GH_DEPLOY_KEY }}
path: opengb

# Get a version of the engine that we know works
- name: Checkout to working commit
run: cd opengb/ && git checkout $CURRENT_WORKING_ENGINE_COMMIT

# Install Deno to run OpenGB
- name: Install Deno
uses: denoland/setup-deno@v1
with:
deno-version: "1.41.1"

# Install OpenGB
- name: Install OpenGB
run: cd opengb/ && deno task cli:install

# Run tests on all modules in the registry
- name: Run Tests for all modules
run: cd ./opengb-registry/tests/basic && opengb test
14 changes: 7 additions & 7 deletions modules/tokens/tests/validate.ts
Original file line number Diff line number Diff line change
Expand Up @@ -34,23 +34,23 @@ test(
test(
"validate token expired",
async (ctx: TestContext) => {
const { token } = await ctx.call("tokens", "create", {
const { token } = await ctx.modules.tokens.create({
type: "test",
meta: { foo: "bar" },
expireAt: new Date(Date.now() + 100).toISOString(),
}) as any;
expireAt: new Date(Date.now() + 1000).toISOString(),
});

// Token should be valid
let validateRes = await ctx.call("tokens", "validate", {
const validateRes = await ctx.modules.tokens.validate({
token: token.token,
}) as any;
});
assertEquals(token.id, validateRes.token.id);

// Wait for token to expire
await new Promise((resolve) => setTimeout(resolve, 200));
await new Promise((resolve) => setTimeout(resolve, 1100));

const error = await assertRejects(async () => {
await ctx.call("tokens", "validate", { token: token.token }) as any;
await ctx.modules.tokens.validate({ token: token.token });
}, RuntimeError);
assertEquals(error.code, "TOKEN_EXPIRED");
},
Expand Down
10 changes: 10 additions & 0 deletions tests/basic/backend.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
registries:
default:
local:
directory: ../../modules
modules:
currency: {}
friends: {}
rate_limit: {}
tokens: {}
users: {}