ens-proxy/test/api.test.ts

144 lines
4.4 KiB
TypeScript

import addressApi from '../api/address'
import nameApi from '../api/name'
import profileApi from '../api/profile'
import ensTextApi from '../api/text'
import { createServer } from 'vercel-node-server'
import listen from 'test-listen'
// import express from 'express'
// import request from 'supertest'
import axios from 'axios'
// import type { VercelRequest, VercelResponse } from '@vercel/node'
import { assert } from 'chai'
let server: any
let url: string
const name = 'jellymcjellyfish.eth'
const accountId = '0x99840Df5Cb42faBE0Feb8811Aaa4BC99cA6C84e0'
const invalid = 'lkdfjslkdfjpeoijf3423'
describe('Testing ENS proxy API endpoints', function () {
this.timeout(25000)
it('Requesting address should return the expected response', async () => {
server = createServer(addressApi)
url = await listen(server)
const response = await axios.get(url, {
params: {
name
}
})
assert(response.status === 200)
assert(response.data.address === accountId)
})
it('Requesting ENS name should return the expected response', async () => {
server = createServer(nameApi)
url = await listen(server)
const response = await axios.get(url, {
params: {
accountId
}
})
assert(response.status === 200)
assert(response.data.name === name)
})
it('Requesting text records should return the expected response', async () => {
server = createServer(ensTextApi)
url = await listen(server)
const response = await axios.get(url, {
params: {
name
}
})
assert(response.status === 200)
assert(
response.data.records[0].value === 'https://oceanprotocol.com',
'Wrong URL'
)
assert(
response.data.records[1].value ===
'https://raw.githubusercontent.com/oceanprotocol/art/main/logo/favicon-white.png',
'Wrong avatar'
)
assert(response.data.records[2].value === 'oceanprotocol', 'Wrong link 1')
assert(response.data.records[3].value === 'oceanprotocol', 'wrong link 2')
assert(response.data.records[0].key === 'url', 'Wrong URL')
assert(response.data.records[1].key === 'avatar', 'Wrong avatar')
assert(response.data.records[2].key === 'com.twitter', 'Wrong link 1')
assert(response.data.records[3].key === 'com.github', 'wrong link 2')
})
it('Requesting user profile should return the expected response', async () => {
server = createServer(profileApi)
url = await listen(server)
const response = await axios.get(url, {
params: {
address: accountId
}
})
assert(response.status === 200)
assert(response.data.profile.name === name)
assert(
response.data.profile.avatar ===
'https://metadata.ens.domains/mainnet/avatar/jellymcjellyfish.eth'
)
assert(response.data.profile.links[0].value === 'https://oceanprotocol.com')
assert(response.data.profile.links[1].value === 'oceanprotocol')
assert(response.data.profile.links[2].value === 'oceanprotocol')
assert(response.data.profile.links[0].key === 'url')
assert(response.data.profile.links[1].key === 'com.twitter')
assert(response.data.profile.links[2].key === 'com.github')
})
// Tests with incorrect address or name
it('Requesting address should return status 200 with invalid name', async () => {
server = createServer(addressApi)
url = await listen(server)
const response = await axios.get(url, {
params: {
name: invalid
}
})
assert(response.status === 200)
})
it('Requesting name should return status 200 with invalid accountId', async () => {
server = createServer(nameApi)
url = await listen(server)
const response = await axios.get(url, {
params: {
accountId: invalid
}
})
assert(response.status === 200)
})
it('Requesting text records should return status 200 with invalid name', async () => {
server = createServer(ensTextApi)
url = await listen(server)
const response = await axios.get(url, {
params: {
name: invalid
}
})
assert(response.status === 200)
})
it('Requesting profile should return status 200 with invalid name', async () => {
server = createServer(profileApi)
url = await listen(server)
const response = await axios.get(url, {
params: {
address: invalid
}
})
assert(response.status === 200)
})
})
after(() => {
server.close()
})