@@ -27,6 +27,72 @@ import {
2727import { ServerVersion , VERSION_4_0_0 } from '../src/internal/server-version'
2828import testUtils from './internal/test-utils'
2929
30+ // As long as driver creation doesn't touch the network it's fine to run
31+ // this as a unit test.
32+ describe ( '#unit driver' , ( ) => {
33+ let driver
34+
35+ afterEach ( async ( ) => {
36+ if ( driver ) {
37+ await driver . close ( )
38+ }
39+ } )
40+
41+ it ( 'should create an unencrypted, non-routed driver for scheme: bolt' , ( ) => {
42+ driver = neo4j . driver ( 'bolt://localhost' , sharedNeo4j . authToken )
43+ expect ( driver . _isEncrypted ( ) ) . toBeFalsy ( )
44+ expect ( driver . _supportsRouting ( ) ) . toBeFalsy ( )
45+ } )
46+
47+ it ( 'should create an encrypted, system CAs trusting, non-routed driver for scheme: bolt+s' , ( ) => {
48+ driver = neo4j . driver ( 'bolt+s://localhost' , sharedNeo4j . authToken )
49+ expect ( driver . _isEncrypted ( ) ) . toBeTruthy ( )
50+ expect ( driver . _getTrust ( ) ) . toEqual ( 'TRUST_SYSTEM_CA_SIGNED_CERTIFICATES' )
51+ expect ( driver . _supportsRouting ( ) ) . toBeFalsy ( )
52+ } )
53+
54+ it ( 'should create an encrypted, all trusting, non-routed driver for scheme: bolt+ssc' , ( ) => {
55+ driver = neo4j . driver ( 'bolt+ssc://localhost' , sharedNeo4j . authToken )
56+ expect ( driver . _isEncrypted ( ) ) . toBeTruthy ( )
57+ expect ( driver . _getTrust ( ) ) . toEqual ( 'TRUST_ALL_CERTIFICATES' )
58+ expect ( driver . _supportsRouting ( ) ) . toBeFalsy ( )
59+ } )
60+
61+ it ( 'should create an unencrypted, routed driver for scheme: neo4j' , ( ) => {
62+ driver = neo4j . driver ( 'neo4j://localhost' , sharedNeo4j . authToken )
63+ expect ( driver . _isEncrypted ( ) ) . toBeFalsy ( )
64+ expect ( driver . _supportsRouting ( ) ) . toBeTruthy ( )
65+ } )
66+
67+ it ( 'should create an encrypted, system CAs trusting, routed driver for scheme: neo4j+s' , ( ) => {
68+ driver = neo4j . driver ( 'neo4j+s://localhost' , sharedNeo4j . authToken )
69+ expect ( driver . _isEncrypted ( ) ) . toBeTruthy ( )
70+ expect ( driver . _getTrust ( ) ) . toEqual ( 'TRUST_SYSTEM_CA_SIGNED_CERTIFICATES' )
71+ expect ( driver . _supportsRouting ( ) ) . toBeTruthy ( )
72+ } )
73+
74+ it ( 'should create an encrypted, all trusting, routed driver for scheme: neo4j+ssc' , ( ) => {
75+ driver = neo4j . driver ( 'neo4j+ssc://localhost' , sharedNeo4j . authToken )
76+ expect ( driver . _isEncrypted ( ) ) . toBeTruthy ( )
77+ expect ( driver . _getTrust ( ) ) . toEqual ( 'TRUST_ALL_CERTIFICATES' )
78+ expect ( driver . _supportsRouting ( ) ) . toBeTruthy ( )
79+ } )
80+
81+ it ( 'should throw when encryption in url AND in config' , ( ) => {
82+ expect ( ( ) =>
83+ neo4j . driver ( 'neo4j+ssc://localhost' , sharedNeo4j . authToken , {
84+ encrypted : 'ENCRYPTION_OFF'
85+ } )
86+ ) . toThrow ( )
87+ // Throw even in case where there is no conflict
88+ expect ( ( ) =>
89+ neo4j . driver ( 'neo4j+s://localhost' , sharedNeo4j . authToken , {
90+ encrypted : 'ENCRYPTION_ON'
91+ } )
92+ ) . toThrow ( )
93+ } )
94+ } )
95+
3096describe ( '#integration driver' , ( ) => {
3197 let driver
3298 let serverVersion
0 commit comments