Skip to content

Commit e52dbd2

Browse files
committed
testkit-backend: implements ResolverResolutionRequired message
1 parent 3e01468 commit e52dbd2

File tree

2 files changed

+36
-2
lines changed

2 files changed

+36
-2
lines changed

testkit-backend/src/context.js

+17
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ export default class Context {
44
this._drivers = {}
55
this._sessions = {}
66
this._txs = {}
7+
this._resolverRequests = {}
78
this._resultObservers = {}
89
this._errors = {}
910
}
@@ -35,6 +36,14 @@ export default class Context {
3536
return this._add(this._resultObservers, observer)
3637
}
3738

39+
addResolverRequest (resolve, reject) {
40+
const id = this._add(this._resolverRequests, {
41+
resolve,
42+
reject
43+
})
44+
return id
45+
}
46+
3847
getDriver (id) {
3948
return this._drivers[id]
4049
}
@@ -55,6 +64,10 @@ export default class Context {
5564
return this._errors[id]
5665
}
5766

67+
getResolverRequest (id) {
68+
return this._resolverRequests[id]
69+
}
70+
5871
removeDriver (id) {
5972
delete this._drivers[id]
6073
}
@@ -71,6 +84,10 @@ export default class Context {
7184
delete this._resultObservers[id]
7285
}
7386

87+
removeResolverRequest (id) {
88+
delete this._resolverRequests[id]
89+
}
90+
7491
getResultObserversBySessionId (sessionId) {
7592
return Object.values(this._resultObservers).filter(
7693
obs => obs.sessionId === sessionId

testkit-backend/src/request-handlers.js

+19-2
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,17 @@ export function NewDriver (context, data, { writeResponse }) {
66
const {
77
uri,
88
authorizationToken: { data: authToken },
9-
userAgent
9+
userAgent,
10+
resolverRegistered
1011
} = data
11-
const driver = neo4j.driver(uri, authToken, { userAgent, useBigInt: true })
12+
const resolver = resolverRegistered
13+
? address =>
14+
new Promise((resolve, reject) => {
15+
const id = context.addResolverRequest(resolve, reject)
16+
writeResponse('ResolverResolutionRequired', { id, address })
17+
})
18+
: undefined
19+
const driver = neo4j.driver(uri, authToken, { userAgent, resolver, useBigInt: true })
1220
const id = context.addDriver(driver)
1321
writeResponse('Driver', { id })
1422
}
@@ -255,3 +263,12 @@ export function CheckMultiDBSupport (context, { driverId }, wire) {
255263
)
256264
.catch(error => wire.writeError(error))
257265
}
266+
267+
export function ResolverResolutionCompleted (
268+
context,
269+
{ requestId, addresses },
270+
wire
271+
) {
272+
const request = context.getResolverRequest(requestId)
273+
request.resolve(addresses)
274+
}

0 commit comments

Comments
 (0)