-
Notifications
You must be signed in to change notification settings - Fork 2.3k
/
BoltAuthDocTest.java
110 lines (93 loc) · 3.65 KB
/
BoltAuthDocTest.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
/*
* Copyright (c) 2002-2016 "Neo Technology,"
* Network Engine for Objects in Lund AB [http://neotechnology.com]
*
* This file is part of Neo4j.
*
* Neo4j is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package org.neo4j.bolt.v1.docs;
import org.junit.Rule;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
import java.util.ArrayList;
import java.util.Collection;
import java.util.function.Supplier;
import org.neo4j.bolt.v1.messaging.message.FailureMessage;
import org.neo4j.bolt.v1.messaging.message.Message;
import org.neo4j.bolt.v1.transport.integration.Neo4jWithSocket;
import org.neo4j.bolt.v1.transport.socket.client.Connection;
import org.neo4j.bolt.v1.transport.socket.client.SecureSocketConnection;
import org.neo4j.bolt.v1.transport.socket.client.SecureWebSocketConnection;
import org.neo4j.graphdb.factory.GraphDatabaseSettings;
import org.neo4j.helpers.HostnamePort;
@RunWith( Parameterized.class )
public class BoltAuthDocTest extends BoltFullDocTest
{
//this is here to fake a unique identifier derived from the store id
private final static String UNIQUE_IDENTIFIER = "(ID:6CE05C78B721D6C5616EF00C808992DB327DF9E9FAEEA45288A7E0916B604DC9)";
@Rule
public Neo4jWithSocket server = new Neo4jWithSocket( settings -> settings.put( GraphDatabaseSettings.auth_enabled, "true" ) );
@Parameterized.Parameter( 0 )
public String testName;
@Parameterized.Parameter( 1 )
public DocExchangeExample example;
@Parameterized.Parameter( 2 )
public Supplier<Connection> client;
@Parameterized.Parameter( 3 )
public HostnamePort address;
@Parameterized.Parameters( name = "{0}" )
public static Collection<Object[]> documentedFullProtocolExamples()
{
Collection<Object[]> mappings = new ArrayList<>();
// Load the documented mappings
HostnamePort address = new HostnamePort( "localhost:7687" );
for ( DocExchangeExample ex : DocsRepository.docs().read(
"dev/examples.asciidoc",
"code[data-lang=\"bolt_auth\"]",
DocExchangeExample.exchange_example ) )
{
mappings.add( new Object[]{"Socket - " + ex.name(), ex,
(Supplier<Connection>) SecureSocketConnection::new, address});
mappings.add( new Object[]{"WebSocket - " + ex.name(), ex,
(Supplier<Connection>) SecureWebSocketConnection::new , address} );
}
return mappings;
}
@Override
protected Connection createClient()
{
return client.get();
}
@Override
protected HostnamePort address()
{
return address;
}
@Override
protected DocExchangeExample example()
{
return example;
}
@Override
protected Message trimMessage( Message message )
{
if (message instanceof FailureMessage)
{
FailureMessage failureMessage = (FailureMessage) message;
return new FailureMessage( failureMessage.status(), failureMessage.message().replaceAll( "\\(ID:.*\\)", UNIQUE_IDENTIFIER ) );
}
return message;
}
}