1
1
/*
2
- * Copyright 2012-2020 the original author or authors.
2
+ * Copyright 2012-2021 the original author or authors.
3
3
*
4
4
* Licensed under the Apache License, Version 2.0 (the "License");
5
5
* you may not use this file except in compliance with the License.
17
17
package org .springframework .boot .actuate .trace .http .reactive ;
18
18
19
19
import java .security .Principal ;
20
- import java .time .Duration ;
21
20
import java .util .EnumSet ;
22
21
23
22
import org .junit .jupiter .api .Test ;
24
23
import reactor .core .publisher .Mono ;
24
+ import reactor .test .StepVerifier ;
25
25
26
26
import org .springframework .boot .actuate .trace .http .HttpExchangeTracer ;
27
27
import org .springframework .boot .actuate .trace .http .HttpTrace .Session ;
@@ -55,16 +55,15 @@ class HttpTraceWebFilterTests {
55
55
@ Test
56
56
void filterTracesExchange () {
57
57
executeFilter (MockServerWebExchange .from (MockServerHttpRequest .get ("https://api.example.com" )),
58
- (exchange ) -> Mono .empty ()). block ( Duration . ofSeconds ( 30 )) ;
58
+ (exchange ) -> Mono .empty ());
59
59
assertThat (this .repository .findAll ()).hasSize (1 );
60
60
}
61
61
62
62
@ Test
63
63
void filterCapturesSessionIdWhenSessionIsUsed () {
64
- executeFilter (MockServerWebExchange .from (MockServerHttpRequest .get ("https://api.example.com" )), (exchange ) -> {
65
- exchange .getSession ().block (Duration .ofSeconds (30 )).getAttributes ().put ("a" , "alpha" );
66
- return Mono .empty ();
67
- }).block (Duration .ofSeconds (30 ));
64
+ executeFilter (MockServerWebExchange .from (MockServerHttpRequest .get ("https://api.example.com" )),
65
+ (exchange ) -> exchange .getSession ().doOnNext ((session ) -> session .getAttributes ().put ("a" , "alpha" ))
66
+ .then ());
68
67
assertThat (this .repository .findAll ()).hasSize (1 );
69
68
Session session = this .repository .findAll ().get (0 ).getSession ();
70
69
assertThat (session ).isNotNull ();
@@ -73,10 +72,8 @@ void filterCapturesSessionIdWhenSessionIsUsed() {
73
72
74
73
@ Test
75
74
void filterDoesNotCaptureIdOfUnusedSession () {
76
- executeFilter (MockServerWebExchange .from (MockServerHttpRequest .get ("https://api.example.com" )), (exchange ) -> {
77
- exchange .getSession ().block (Duration .ofSeconds (30 ));
78
- return Mono .empty ();
79
- }).block (Duration .ofSeconds (30 ));
75
+ executeFilter (MockServerWebExchange .from (MockServerHttpRequest .get ("https://api.example.com" )),
76
+ (exchange ) -> exchange .getSession ().then ());
80
77
assertThat (this .repository .findAll ()).hasSize (1 );
81
78
Session session = this .repository .findAll ().get (0 ).getSession ();
82
79
assertThat (session ).isNull ();
@@ -95,19 +92,18 @@ public <T extends Principal> Mono<T> getPrincipal() {
95
92
return Mono .just ((T ) principal );
96
93
}
97
94
98
- }, (exchange ) -> {
99
- exchange .getSession ().block (Duration .ofSeconds (30 )).getAttributes ().put ("a" , "alpha" );
100
- return Mono .empty ();
101
- }).block (Duration .ofSeconds (30 ));
95
+ }, (exchange ) -> exchange .getSession ().doOnNext ((session ) -> session .getAttributes ().put ("a" , "alpha" )).then ());
102
96
assertThat (this .repository .findAll ()).hasSize (1 );
103
97
org .springframework .boot .actuate .trace .http .HttpTrace .Principal tracedPrincipal = this .repository .findAll ()
104
98
.get (0 ).getPrincipal ();
105
99
assertThat (tracedPrincipal ).isNotNull ();
106
100
assertThat (tracedPrincipal .getName ()).isEqualTo ("alice" );
107
101
}
108
102
109
- private Mono <Void > executeFilter (ServerWebExchange exchange , WebFilterChain chain ) {
110
- return this .filter .filter (exchange , chain ).then (Mono .defer (() -> exchange .getResponse ().setComplete ()));
103
+ private void executeFilter (ServerWebExchange exchange , WebFilterChain chain ) {
104
+ StepVerifier .create (
105
+ this .filter .filter (exchange , chain ).then (Mono .defer (() -> exchange .getResponse ().setComplete ())))
106
+ .verifyComplete ();
111
107
}
112
108
113
109
}
0 commit comments