1- import axios from 'axios' ;
2- import fetch from 'node-fetch' ;
1+ import request from 'supertest' ;
32import redis from '../../src/helpers/redis' ;
43import { KEY_PREFIX } from '../../src/addressResolvers/cache' ;
4+ import { createTestApp } from '../helpers/testServer' ;
55
6- const HOST = `http://localhost:${ process . env . PORT || 3003 } ` ;
6+ const app = createTestApp ( ) ;
7+ let server : any ;
78
89async function purge ( ) : Promise < void > {
910 if ( ! redis ) return ;
@@ -15,14 +16,26 @@ async function purge(): Promise<void> {
1516 transaction . exec ( ) ;
1617}
1718
18- async function imageToBase64 ( url : string ) {
19- const response = await fetch ( url ) ;
20- const buffer = await response . buffer ( ) ;
21-
22- return buffer . toString ( 'base64' ) ;
23- }
24-
2519describe ( 'E2E api' , ( ) => {
20+ beforeAll ( async ( ) => {
21+ server = app . listen ( 0 ) ; // Use port 0 to get a random available port
22+ } ) ;
23+
24+ afterAll ( async ( ) => {
25+ if ( server ) {
26+ // Force close all connections if available
27+ if ( server . closeAllConnections ) {
28+ server . closeAllConnections ( ) ;
29+ }
30+ await new Promise < void > ( ( resolve , reject ) => {
31+ server . close ( ( err : any ) => {
32+ if ( err ) reject ( err ) ;
33+ else resolve ( ) ;
34+ } ) ;
35+ } ) ;
36+ server = null ;
37+ }
38+ } ) ;
2639 describe ( 'GET type/TYPE/ID' , ( ) => {
2740 it . todo ( 'returns a 500 status on invalid query' ) ;
2841
@@ -32,45 +45,43 @@ describe('E2E api', () => {
3245 it . todo ( 'caches the resized image' ) ;
3346
3447 it ( 'returns same space avatar for snapshot legacy and non-legacy format' , async ( ) => {
35- expect ( await imageToBase64 ( `${ HOST } /space/ens.eth` ) ) . toEqual (
36- await imageToBase64 ( `${ HOST } /space/s:ens.eth` )
48+ const response1 = await request ( server ) . get ( '/space/ens.eth' ) ;
49+ const response2 = await request ( server ) . get ( '/space/s:ens.eth' ) ;
50+ expect ( response1 . body . toString ( 'base64' ) ) . toEqual ( response2 . body . toString ( 'base64' ) ) ;
51+
52+ const response3 = await request ( server ) . get (
53+ '/space/sn:0x07c251045154318a2376a3bb65be47d3c90df1740d8e35c9b9d943aa3f240e50'
3754 ) ;
38- expect (
39- await imageToBase64 (
40- `${ HOST } /space/sn:0x07c251045154318a2376a3bb65be47d3c90df1740d8e35c9b9d943aa3f240e50`
41- )
42- ) . toEqual (
43- await imageToBase64 (
44- `${ HOST } /space-sx/0x07c251045154318a2376a3bb65be47d3c90df1740d8e35c9b9d943aa3f240e50`
45- )
55+ const response4 = await request ( server ) . get (
56+ '/space-sx/0x07c251045154318a2376a3bb65be47d3c90df1740d8e35c9b9d943aa3f240e50'
4657 ) ;
58+ expect ( response3 . body . toString ( 'base64' ) ) . toEqual ( response4 . body . toString ( 'base64' ) ) ;
4759 } ) ;
4860
4961 it ( 'returns different space avatar for different network' , async ( ) => {
50- expect ( await imageToBase64 ( ` ${ HOST } /space/s:ens.eth` ) ) . not . toEqual (
51- await imageToBase64 ( ` ${ HOST } /space/s-tn:ens.eth` )
52- ) ;
62+ const response1 = await request ( server ) . get ( ' /space/s:ens.eth' ) ;
63+ const response2 = await request ( server ) . get ( ' /space/s-tn:ens.eth' ) ;
64+ expect ( response1 . body . toString ( 'base64' ) ) . not . toEqual ( response2 . body . toString ( 'base64' ) ) ;
5365 } ) ;
5466
5567 it ( 'returns same space cover for snapshot legacy and non-legacy format' , async ( ) => {
56- expect ( await imageToBase64 ( `${ HOST } /space-cover/test.wa0x6e.eth` ) ) . toEqual (
57- await imageToBase64 ( `${ HOST } /space-cover/s:test.wa0x6e.eth` )
68+ const response1 = await request ( server ) . get ( '/space-cover/test.wa0x6e.eth' ) ;
69+ const response2 = await request ( server ) . get ( '/space-cover/s:test.wa0x6e.eth' ) ;
70+ expect ( response1 . body . toString ( 'base64' ) ) . toEqual ( response2 . body . toString ( 'base64' ) ) ;
71+
72+ const response3 = await request ( server ) . get (
73+ '/space-cover/sn:0x07c251045154318a2376a3bb65be47d3c90df1740d8e35c9b9d943aa3f240e50'
5874 ) ;
59- expect (
60- await imageToBase64 (
61- `${ HOST } /space-cover/sn:0x07c251045154318a2376a3bb65be47d3c90df1740d8e35c9b9d943aa3f240e50`
62- )
63- ) . toEqual (
64- await imageToBase64 (
65- `${ HOST } /space-cover-sx/0x07c251045154318a2376a3bb65be47d3c90df1740d8e35c9b9d943aa3f240e50`
66- )
75+ const response4 = await request ( server ) . get (
76+ '/space-cover-sx/0x07c251045154318a2376a3bb65be47d3c90df1740d8e35c9b9d943aa3f240e50'
6777 ) ;
78+ expect ( response3 . body . toString ( 'base64' ) ) . toEqual ( response4 . body . toString ( 'base64' ) ) ;
6879 } ) ;
6980
7081 it ( 'returns different space cover for different network' , async ( ) => {
71- expect ( await imageToBase64 ( ` ${ HOST } /space-cover/s:test.wa0x6e.eth` ) ) . not . toEqual (
72- await imageToBase64 ( ` ${ HOST } /space-cover/s-tn:test.wa0x6e.eth` )
73- ) ;
82+ const response1 = await request ( server ) . get ( ' /space-cover/s:test.wa0x6e.eth' ) ;
83+ const response2 = await request ( server ) . get ( ' /space-cover/s-tn:test.wa0x6e.eth' ) ;
84+ expect ( response1 . body . toString ( 'base64' ) ) . not . toEqual ( response2 . body . toString ( 'base64' ) ) ;
7485 } ) ;
7586 } ) ;
7687
@@ -101,12 +112,9 @@ describe('E2E api', () => {
101112
102113 describe ( 'on lookup_addresses' , ( ) => {
103114 function fetchLookupAddresses ( params : any ) {
104- return axios ( {
105- url : HOST ,
106- method : 'POST' ,
107- responseType : 'json' ,
108- data : { method : 'lookup_addresses' , params }
109- } ) ;
115+ return request ( server )
116+ . post ( '/' )
117+ . send ( { method : 'lookup_addresses' , params } ) ;
110118 }
111119
112120 describe ( 'when not passing an array as params' , ( ) => {
@@ -119,8 +127,9 @@ describe('E2E api', () => {
119127 [ 'a boolean' , true ]
120128 ] ;
121129 // @ts -ignore
122- it . each ( tests ) ( 'returns an error when passing %s' , async ( title : string , params : any ) => {
123- expect ( fetchLookupAddresses ( params ) ) . rejects . toThrowError ( / s t a t u s c o d e 4 0 0 / ) ;
130+ it . each ( tests ) ( 'returns an error when passing %s' , async ( _ : string , params : any ) => {
131+ const response = await fetchLookupAddresses ( params ) ;
132+ expect ( response . status ) . toBe ( 400 ) ;
124133 } ) ;
125134 } ) ;
126135
@@ -133,7 +142,7 @@ describe('E2E api', () => {
133142 ] ) ;
134143
135144 expect ( response . status ) . toBe ( 200 ) ;
136- expect ( response . data . result ) . toEqual ( {
145+ expect ( response . body . result ) . toEqual ( {
137146 '0xE6D0Dd18C6C3a9Af8C2FaB57d6e6A38E29d513cC' : 'sdntestens.eth' ,
138147 '0xe6d0dd18c6c3a9af8c2fab57d6e6a38e29d513cc' : 'sdntestens.eth'
139148 } ) ;
@@ -149,7 +158,7 @@ describe('E2E api', () => {
149158 ] ) ;
150159
151160 expect ( response . status ) . toBe ( 200 ) ;
152- expect ( response . data . result ) . toEqual ( {
161+ expect ( response . body . result ) . toEqual ( {
153162 '0x07FF6B17F07C4D83236E3FC5F94259A19D1ED41BBCF1822397EA17882E9B038D' : 'Checkpoint' ,
154163 '0x07ff6b17f07c4d83236e3fc5f94259a19d1ed41bbcf1822397ea17882e9b038d' : 'Checkpoint'
155164 } ) ;
@@ -167,7 +176,7 @@ describe('E2E api', () => {
167176 ] ) ;
168177
169178 expect ( response . status ) . toBe ( 200 ) ;
170- expect ( response . data . result ) . toEqual ( {
179+ expect ( response . body . result ) . toEqual ( {
171180 '0x07FF6B17F07C4D83236E3FC5F94259A19D1ED41BBCF1822397EA17882E9B038D' : 'Checkpoint' ,
172181 '0x07ff6b17f07c4d83236e3fc5f94259a19d1ed41bbcf1822397ea17882e9b038d' : 'Checkpoint' ,
173182 '0xE6D0Dd18C6C3a9Af8C2FaB57d6e6A38E29d513cC' : 'sdntestens.eth' ,
0 commit comments