1
1
/*
2
- * Copyright 2017 the original author or authors.
2
+ * Copyright 2017-2018 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.
16
16
17
17
package org .springframework .integration .support .json ;
18
18
19
- import static org .hamcrest .CoreMatchers .containsString ;
20
- import static org .hamcrest .CoreMatchers .equalTo ;
21
- import static org .hamcrest .CoreMatchers .not ;
22
- import static org .junit .Assert .assertThat ;
19
+ import static org .assertj .core .api .Assertions .assertThat ;
23
20
24
21
import java .nio .ByteBuffer ;
25
22
import java .util .Collections ;
23
+ import java .util .Map ;
26
24
27
25
import org .junit .Test ;
28
26
29
27
import org .springframework .messaging .Message ;
28
+ import org .springframework .messaging .MessageHeaders ;
30
29
import org .springframework .messaging .support .GenericMessage ;
31
30
31
+ import com .fasterxml .jackson .core .type .TypeReference ;
32
+ import com .fasterxml .jackson .databind .ObjectMapper ;
33
+
32
34
/**
33
35
* @author Gary Russell
36
+ * @author Artem Bilan
37
+ *
34
38
* @since 5.0
35
39
*
36
40
*/
@@ -40,17 +44,31 @@ public class EmbeddedJsonHeadersMessageMapperTests {
40
44
public void testEmbedAll () throws Exception {
41
45
EmbeddedJsonHeadersMessageMapper mapper = new EmbeddedJsonHeadersMessageMapper ();
42
46
GenericMessage <String > message = new GenericMessage <>("foo" );
43
- assertThat (mapper .toMessage (mapper .fromMessage (message )), equalTo (message ));
44
-
47
+ assertThat (mapper .toMessage (mapper .fromMessage (message ))).isEqualTo (message );
45
48
}
46
49
47
50
@ Test
48
51
public void testEmbedSome () throws Exception {
49
- EmbeddedJsonHeadersMessageMapper mapper = new EmbeddedJsonHeadersMessageMapper ("id" );
52
+ EmbeddedJsonHeadersMessageMapper mapper = new EmbeddedJsonHeadersMessageMapper (MessageHeaders . ID );
50
53
GenericMessage <String > message = new GenericMessage <>("foo" );
51
- Message <?> decoded = mapper .toMessage (mapper .fromMessage (message ));
52
- assertThat (decoded .getPayload (), equalTo (message .getPayload ()));
53
- assertThat (decoded .getHeaders ().getId (), equalTo (message .getHeaders ().getId ()));
54
+ byte [] encodedMessage = mapper .fromMessage (message );
55
+ Message <?> decoded = mapper .toMessage (encodedMessage );
56
+ assertThat (decoded .getPayload ()).isEqualTo (message .getPayload ());
57
+ assertThat (decoded .getHeaders ().getTimestamp ()).isNotEqualTo (message .getHeaders ().getTimestamp ());
58
+
59
+ ObjectMapper objectMapper = new ObjectMapper ();
60
+ Map <String , Object > encodedMessageToCheck =
61
+ objectMapper .readValue (encodedMessage , new TypeReference <Map <String , Object >>() {
62
+
63
+ });
64
+
65
+ Object headers = encodedMessageToCheck .get ("headers" );
66
+ assertThat (headers ).isNotNull ();
67
+ assertThat (headers ).isInstanceOf (Map .class );
68
+
69
+ @ SuppressWarnings ("unchecked" )
70
+ Map <String , Object > headersToCheck = (Map <String , Object >) headers ;
71
+ assertThat (headersToCheck ).doesNotContainKey (MessageHeaders .TIMESTAMP );
54
72
}
55
73
56
74
@ Test
@@ -64,13 +82,13 @@ public void testBytesEmbedAll() throws Exception {
64
82
byte [] headerBytes = new byte [headerLen ];
65
83
bb .get (headerBytes );
66
84
String headers = new String (headerBytes );
67
- assertThat (headers , containsString (message .getHeaders ().getId ().toString () ));
68
- assertThat (headers , containsString (String .valueOf (message .getHeaders ().getTimestamp () )));
69
- assertThat (bb .getInt (), equalTo ( 3 ) );
70
- assertThat (bb .remaining (), equalTo ( 3 ) );
71
- assertThat ((char ) bb .get (), equalTo ('f' ) );
72
- assertThat ((char ) bb .get (), equalTo ('o' ) );
73
- assertThat ((char ) bb .get (), equalTo ('o' ) );
85
+ assertThat (headers ). contains (message .getHeaders ().getId ().toString ());
86
+ assertThat (headers ). contains (String .valueOf (message .getHeaders ().getTimestamp ()));
87
+ assertThat (bb .getInt ()). isEqualTo ( 3 );
88
+ assertThat (bb .remaining ()). isEqualTo ( 3 );
89
+ assertThat ((char ) bb .get ()). isEqualTo ('f' );
90
+ assertThat ((char ) bb .get ()). isEqualTo ('o' );
91
+ assertThat ((char ) bb .get ()). isEqualTo ('o' );
74
92
}
75
93
76
94
@ Test
@@ -83,13 +101,14 @@ public void testBytesEmbedSome() throws Exception {
83
101
byte [] headerBytes = new byte [headerLen ];
84
102
bb .get (headerBytes );
85
103
String headers = new String (headerBytes );
86
- assertThat (headers , containsString (message .getHeaders ().getId ().toString ()));
87
- assertThat (headers , not (containsString ("bar" )));
88
- assertThat (bb .getInt (), equalTo (3 ));
89
- assertThat (bb .remaining (), equalTo (3 ));
90
- assertThat ((char ) bb .get (), equalTo ('f' ));
91
- assertThat ((char ) bb .get (), equalTo ('o' ));
92
- assertThat ((char ) bb .get (), equalTo ('o' ));
104
+ assertThat (headers ).contains (message .getHeaders ().getId ().toString ());
105
+ assertThat (headers ).doesNotContain (MessageHeaders .TIMESTAMP );
106
+ assertThat (headers ).doesNotContain ("bar" );
107
+ assertThat (bb .getInt ()).isEqualTo (3 );
108
+ assertThat (bb .remaining ()).isEqualTo (3 );
109
+ assertThat ((char ) bb .get ()).isEqualTo ('f' );
110
+ assertThat ((char ) bb .get ()).isEqualTo ('o' );
111
+ assertThat ((char ) bb .get ()).isEqualTo ('o' );
93
112
}
94
113
95
114
@ Test
@@ -99,10 +118,10 @@ public void testBytesEmbedAllJson() throws Exception {
99
118
GenericMessage <byte []> message = new GenericMessage <>("foo" .getBytes ());
100
119
byte [] mappedBytes = mapper .fromMessage (message );
101
120
String mapped = new String (mappedBytes );
102
- assertThat (mapped , containsString ("[B\" ,\" Zm9v" ) );
121
+ assertThat (mapped ). contains ("[B\" ,\" Zm9v" );
103
122
@ SuppressWarnings ("unchecked" )
104
123
Message <byte []> decoded = (Message <byte []>) mapper .toMessage (mappedBytes );
105
- assertThat (new String (decoded .getPayload ()), equalTo ("foo" ) );
124
+ assertThat (new String (decoded .getPayload ())). isEqualTo ("foo" );
106
125
107
126
}
108
127
@@ -111,7 +130,35 @@ public void testBytesDecodeAll() throws Exception {
111
130
EmbeddedJsonHeadersMessageMapper mapper = new EmbeddedJsonHeadersMessageMapper ();
112
131
GenericMessage <byte []> message = new GenericMessage <>("foo" .getBytes ());
113
132
Message <?> decoded = mapper .toMessage (mapper .fromMessage (message ));
114
- assertThat (decoded , equalTo (message ));
133
+ assertThat (decoded ).isEqualTo (message );
134
+ }
135
+
136
+ @ Test
137
+ public void testDontMapIdButOthers () throws Exception {
138
+ EmbeddedJsonHeadersMessageMapper mapper = new EmbeddedJsonHeadersMessageMapper ("!" + MessageHeaders .ID , "*" );
139
+ GenericMessage <String > message = new GenericMessage <>("foo" , Collections .singletonMap ("bar" , "baz" ));
140
+ byte [] encodedMessage = mapper .fromMessage (message );
141
+
142
+ ObjectMapper objectMapper = new ObjectMapper ();
143
+ Map <String , Object > encodedMessageToCheck =
144
+ objectMapper .readValue (encodedMessage , new TypeReference <Map <String , Object >>() {
145
+
146
+ });
147
+
148
+ Object headers = encodedMessageToCheck .get ("headers" );
149
+ assertThat (headers ).isNotNull ();
150
+ assertThat (headers ).isInstanceOf (Map .class );
151
+
152
+ @ SuppressWarnings ("unchecked" )
153
+ Map <String , Object > headersToCheck = (Map <String , Object >) headers ;
154
+ assertThat (headersToCheck ).doesNotContainKey (MessageHeaders .ID );
155
+ assertThat (headersToCheck ).containsKey (MessageHeaders .TIMESTAMP );
156
+ assertThat (headersToCheck ).containsKey ("bar" );
157
+
158
+ Message <?> decoded = mapper .toMessage (mapper .fromMessage (message ));
159
+ assertThat (decoded .getHeaders ().getTimestamp ()).isEqualTo (message .getHeaders ().getTimestamp ());
160
+ assertThat (decoded .getHeaders ().getId ()).isNotEqualTo (message .getHeaders ().getId ());
161
+ assertThat (decoded .getHeaders ().get ("bar" )).isEqualTo ("baz" );
115
162
}
116
163
117
164
}
0 commit comments