mirror of
https://github.com/selfxyz/self.git
synced 2026-02-19 02:24:25 -05:00
Feat/test api (#223)
This commit is contained in:
2
sdk/tests/api-server/.env.sample
Normal file
2
sdk/tests/api-server/.env.sample
Normal file
@@ -0,0 +1,2 @@
|
||||
RPC_URL=https://forno.celo.org
|
||||
SCOPE=test-scope
|
||||
44
sdk/tests/api-server/.gitignore
vendored
Normal file
44
sdk/tests/api-server/.gitignore
vendored
Normal file
@@ -0,0 +1,44 @@
|
||||
# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
|
||||
|
||||
# dependencies
|
||||
/node_modules
|
||||
/.pnp
|
||||
.pnp.js
|
||||
|
||||
# testing
|
||||
/coverage
|
||||
|
||||
# next.js
|
||||
/.next/
|
||||
/out/
|
||||
|
||||
# production
|
||||
/build
|
||||
|
||||
# misc
|
||||
.DS_Store
|
||||
*.pem
|
||||
|
||||
# debug
|
||||
npm-debug.log*
|
||||
yarn-debug.log*
|
||||
yarn-error.log*
|
||||
|
||||
# local env files
|
||||
.env.local
|
||||
.env.development.local
|
||||
.env.test.local
|
||||
.env.production.local
|
||||
|
||||
# vercel
|
||||
.vercel
|
||||
|
||||
**/*.trace
|
||||
**/*.zip
|
||||
**/*.tar.gz
|
||||
**/*.tgz
|
||||
**/*.log
|
||||
package-lock.json
|
||||
**/*.bun
|
||||
|
||||
.env
|
||||
15
sdk/tests/api-server/README.md
Normal file
15
sdk/tests/api-server/README.md
Normal file
@@ -0,0 +1,15 @@
|
||||
# Elysia with Bun runtime
|
||||
|
||||
## Getting Started
|
||||
To get started with this template, simply paste this command into your terminal:
|
||||
```bash
|
||||
bun create elysia ./elysia-example
|
||||
```
|
||||
|
||||
## Development
|
||||
To start the development server run:
|
||||
```bash
|
||||
bun run dev
|
||||
```
|
||||
|
||||
Open http://localhost:3000/ with your browser to see the result.
|
||||
BIN
sdk/tests/api-server/bun.lockb
Executable file
BIN
sdk/tests/api-server/bun.lockb
Executable file
Binary file not shown.
30
sdk/tests/api-server/package.json
Normal file
30
sdk/tests/api-server/package.json
Normal file
@@ -0,0 +1,30 @@
|
||||
{
|
||||
"name": "backend-api",
|
||||
"version": "1.0.50",
|
||||
"scripts": {
|
||||
"test": "echo \"Error: no test specified\" && exit 1",
|
||||
"dev": "bun run --watch src/app.ts",
|
||||
"init": "bash scripts/copy_abi.sh && bash scripts/copy_deployedAddress.sh",
|
||||
"start:daemon": "bun run src/app.ts > app.log 2>&1 &",
|
||||
"stop:daemon": "pkill -f 'bun run src/app.ts'"
|
||||
},
|
||||
"dependencies": {
|
||||
"@elysiajs/swagger": "^1.2.0",
|
||||
"@selfxyz/core": "^0.0.3",
|
||||
"@openpassport/zk-kit-imt": "^0.0.5",
|
||||
"@openpassport/zk-kit-lean-imt": "^0.0.6",
|
||||
"dotenv": "^16.4.7",
|
||||
"elysia": "latest",
|
||||
"logixlysia": "^4.1.1",
|
||||
"pg": "^8.13.1",
|
||||
"poseidon-lite": "^0.3.0",
|
||||
"snarkjs": "^0.7.5",
|
||||
"swagger": "^0.7.5",
|
||||
"viem": "^2.22.23"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/pg": "^8.11.11",
|
||||
"bun-types": "latest"
|
||||
},
|
||||
"module": "index.ts"
|
||||
}
|
||||
8
sdk/tests/api-server/src/app.routes.ts
Normal file
8
sdk/tests/api-server/src/app.routes.ts
Normal file
@@ -0,0 +1,8 @@
|
||||
import Elysia from 'elysia';
|
||||
|
||||
import { ContractsController } from './contracts/infrastructure/contracts.controller';
|
||||
|
||||
const routes = new Elysia({ prefix: 'api/v1' })
|
||||
.use(ContractsController);
|
||||
|
||||
export { routes as AppRoutes };
|
||||
31
sdk/tests/api-server/src/app.ts
Normal file
31
sdk/tests/api-server/src/app.ts
Normal file
@@ -0,0 +1,31 @@
|
||||
import { Elysia } from "elysia";
|
||||
import swagger from "@elysiajs/swagger";
|
||||
import logger from "logixlysia";
|
||||
import { AppRoutes } from "./app.routes.js";
|
||||
import dotenv from "dotenv";
|
||||
|
||||
dotenv.config();
|
||||
|
||||
const app = new Elysia()
|
||||
.use(logger())
|
||||
.use(
|
||||
swagger({
|
||||
exclude: ['/swagger'],
|
||||
autoDarkMode: true,
|
||||
documentation: {
|
||||
info: {
|
||||
title: 'backend-api',
|
||||
description:
|
||||
'backend api to interact with the contracts',
|
||||
version: '1.0.0',
|
||||
},
|
||||
},
|
||||
}),
|
||||
)
|
||||
.use(AppRoutes);
|
||||
|
||||
app.listen({ port: process.env.PORT });
|
||||
|
||||
console.log(
|
||||
`🦊 Elysia is running at ${app.server?.hostname}:${app.server?.port}`,
|
||||
);
|
||||
@@ -0,0 +1,54 @@
|
||||
import Elysia, { t } from 'elysia';
|
||||
// import { SelfBackendVerifier } from "@selfxyz/core";
|
||||
import { SelfBackendVerifier } from "../../../../../core/src/SelfBackendVerifier";
|
||||
|
||||
export const ContractsController = new Elysia()
|
||||
.post(
|
||||
'verify-vc-and-disclose-proof',
|
||||
async (request: any) => {
|
||||
try {
|
||||
const selfBackendVerifier = new SelfBackendVerifier(
|
||||
process.env.RPC_URL as string,
|
||||
process.env.SCOPE as string,
|
||||
);
|
||||
|
||||
const result = await selfBackendVerifier.verify(
|
||||
request.body.proof,
|
||||
request.body.publicSignals
|
||||
);
|
||||
console.log(result);
|
||||
|
||||
return {
|
||||
status: "success",
|
||||
result: result.isValid,
|
||||
};
|
||||
} catch (error) {
|
||||
return {
|
||||
status: "error",
|
||||
message: error instanceof Error ? error.message : "Unknown error",
|
||||
};
|
||||
}
|
||||
},
|
||||
{
|
||||
body: t.Object({
|
||||
proof: t.Any(),
|
||||
publicSignals: t.Any(),
|
||||
}),
|
||||
response: {
|
||||
200: t.Object({
|
||||
status: t.String(),
|
||||
result: t.Boolean(),
|
||||
}),
|
||||
500: t.Object({
|
||||
status: t.String(),
|
||||
message: t.String(),
|
||||
}),
|
||||
},
|
||||
detail: {
|
||||
tags: ['Contracts'],
|
||||
summary: 'Verify a VC and disclose a proof',
|
||||
description: 'Verify a VC and disclose a proof',
|
||||
},
|
||||
},
|
||||
);
|
||||
|
||||
15
sdk/tests/api-server/tsconfig.json
Normal file
15
sdk/tests/api-server/tsconfig.json
Normal file
@@ -0,0 +1,15 @@
|
||||
{
|
||||
"compilerOptions": {
|
||||
"target": "ES2021",
|
||||
"module": "ES2022",
|
||||
"moduleResolution": "node",
|
||||
"types": [
|
||||
"bun-types"
|
||||
],
|
||||
"esModuleInterop": true,
|
||||
"forceConsistentCasingInFileNames": true,
|
||||
"strict": true,
|
||||
"skipLibCheck": true,
|
||||
"resolveJsonModule": true
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user