66
77import com .azure .core .credential .AccessToken ;
88import com .azure .core .http .HttpClient ;
9+ import com .azure .core .http .netty .NettyAsyncHttpClientBuilder ;
910import com .azure .core .http .policy .HttpLogDetailLevel ;
1011import com .azure .core .http .policy .HttpLogOptions ;
12+ import com .azure .core .http .rest .Response ;
1113import com .azure .core .test .TestBase ;
1214import com .azure .core .test .TestMode ;
15+ import com .azure .core .util .BinaryData ;
1316import com .azure .core .util .Configuration ;
1417import com .azure .identity .AzureCliCredentialBuilder ;
1518import com .azure .identity .DefaultAzureCredentialBuilder ;
1619import com .azure .security .confidentialledger .certificate .ConfidentialLedgerCertificateClient ;
1720import com .azure .security .confidentialledger .certificate .ConfidentialLedgerCertificateClientBuilder ;
21+ import com .fasterxml .jackson .databind .JsonNode ;
22+ import com .fasterxml .jackson .databind .ObjectMapper ;
1823
24+ import io .netty .handler .ssl .SslContext ;
25+ import io .netty .handler .ssl .SslContextBuilder ;
1926import reactor .core .publisher .Mono ;
2027
28+ import java .io .ByteArrayInputStream ;
29+ import java .io .IOException ;
30+ import java .nio .charset .StandardCharsets ;
2131import java .time .OffsetDateTime ;
2232
33+ import javax .net .ssl .SSLException ;
34+
35+ import org .junit .jupiter .api .Assertions ;
36+
2337class ConfidentialLedgerClientTestBase extends TestBase {
2438 protected ConfidentialLedgerClient confidentialLedgerClient ;
2539 protected ConfidentialLedgerClientBuilder confidentialLedgerClientBuilder ;
@@ -29,8 +43,7 @@ class ConfidentialLedgerClientTestBase extends TestBase {
2943 protected void beforeTest () {
3044 try {
3145 ConfidentialLedgerCertificateClientBuilder confidentialLedgerCertificateClientBuilder = new ConfidentialLedgerCertificateClientBuilder ()
32- .certificateEndpoint (
33- Configuration .getGlobalConfiguration ().get ("IDENTITYSERVICEURI" , "https://identity.confidential-ledger.core.azure.com" ))
46+ .certificateEndpoint ("https://identity.confidential-ledger.core.azure.com" )
3447 .httpClient (HttpClient .createDefault ())
3548 .httpLogOptions (new HttpLogOptions ().setLogLevel (HttpLogDetailLevel .BASIC ));
3649 if (getTestMode () == TestMode .PLAYBACK ) {
@@ -47,10 +60,10 @@ protected void beforeTest() {
4760 confidentialLedgerCertificateClient = confidentialLedgerCertificateClientBuilder
4861 .buildClient ();
4962
50- String ledgerId = Configuration .getGlobalConfiguration ().get ("LEDGERID " , "emily- java-sdk-tests " );
63+ String ledgerId = Configuration .getGlobalConfiguration ().get ("LEDGER_NAME " , "java-sdk-test " );
5164
5265 confidentialLedgerClientBuilder = new ConfidentialLedgerClientBuilder ()
53- .ledgerEndpoint (Configuration .getGlobalConfiguration ().get ("LEDGERURI " , "https://emily-java-sdk-tests.confidential-ledger.azure.com" ))
66+ .ledgerEndpoint (Configuration .getGlobalConfiguration ().get ("LEDGER_URI " , "https://emily-java-sdk-tests.confidential-ledger.azure.com" ))
5467 .httpLogOptions (new HttpLogOptions ().setLogLevel (HttpLogDetailLevel .BASIC ));
5568 if (getTestMode () == TestMode .PLAYBACK ) {
5669 confidentialLedgerClientBuilder
@@ -66,6 +79,51 @@ protected void beforeTest() {
6679 } catch (Exception ex ) {
6780 System .out .println ("Error thrown from ConfidentialLedgerClientTestBase:" + ex );
6881 }
82+
83+ String ledgerId = Configuration .getGlobalConfiguration ().get ("LEDGER_NAME" , "emily-java-sdk-tests" );
84+ Response <BinaryData > ledgerIdentityWithResponse = confidentialLedgerCertificateClient
85+ .getLedgerIdentityWithResponse (ledgerId , null );
86+ BinaryData identityResponse = ledgerIdentityWithResponse .getValue ();
87+ ObjectMapper mapper = new ObjectMapper ();
88+
89+ JsonNode jsonNode = null ;
90+ try {
91+ jsonNode = mapper .readTree (identityResponse .toBytes ());
92+ } catch (IOException ex ) {
93+ System .out .println ("Caught exception " + ex );
94+ Assertions .assertTrue (false );
95+ }
96+ String ledgerTslCertificate = jsonNode .get ("ledgerTlsCertificate" ).asText ();
97+
98+ reactor .netty .http .client .HttpClient reactorClient = null ;
99+
100+ try {
101+ final SslContext sslContext = SslContextBuilder .forClient ().trustManager (new ByteArrayInputStream (ledgerTslCertificate .getBytes (StandardCharsets .UTF_8 ))).build ();
102+ reactorClient = reactor .netty .http .client .HttpClient .create ();
103+ reactorClient .secure (sslContextSpec -> sslContextSpec .sslContext (sslContext ));
104+ } catch (SSLException ex ) {
105+ System .out .println ("Caught exception " + ex );
106+ Assertions .assertTrue (false );
107+ }
108+
109+ HttpClient httpClient = new NettyAsyncHttpClientBuilder (reactorClient ).wiretap (true ).build ();
110+
111+ if (getTestMode () == TestMode .PLAYBACK ) {
112+ confidentialLedgerClientBuilder
113+ .httpClient (interceptorManager .getPlaybackClient ())
114+ .credential (request -> Mono .just (new AccessToken ("this_is_a_token" , OffsetDateTime .MAX )));
115+ } else if (getTestMode () == TestMode .RECORD ) {
116+ confidentialLedgerClientBuilder
117+ .addPolicy (interceptorManager .getRecordPolicy ())
118+ .httpClient (httpClient )
119+ .credential (new DefaultAzureCredentialBuilder ().build ());
120+ } else if (getTestMode () == TestMode .LIVE ) {
121+ confidentialLedgerClientBuilder
122+ .credential (new DefaultAzureCredentialBuilder ().build ())
123+ .httpClient (httpClient );
124+ }
125+
126+ confidentialLedgerClient = confidentialLedgerClientBuilder .buildClient ();
69127 }
70128
71129}
0 commit comments