11/*
2- * Copyright 2017 the original author or authors.
2+ * Copyright 2017-2018 the original author or authors.
33 *
44 * Licensed under the Apache License, Version 2.0 (the "License");
55 * you may not use this file except in compliance with the License.
1616
1717package org .springframework .integration .support .json ;
1818
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 ;
2320
2421import java .nio .ByteBuffer ;
2522import java .util .Collections ;
23+ import java .util .Map ;
2624
2725import org .junit .Test ;
2826
2927import org .springframework .messaging .Message ;
28+ import org .springframework .messaging .MessageHeaders ;
3029import org .springframework .messaging .support .GenericMessage ;
3130
31+ import com .fasterxml .jackson .core .type .TypeReference ;
32+ import com .fasterxml .jackson .databind .ObjectMapper ;
33+
3234/**
3335 * @author Gary Russell
36+ * @author Artem Bilan
37+ *
3438 * @since 5.0
3539 *
3640 */
@@ -40,17 +44,31 @@ public class EmbeddedJsonHeadersMessageMapperTests {
4044 public void testEmbedAll () throws Exception {
4145 EmbeddedJsonHeadersMessageMapper mapper = new EmbeddedJsonHeadersMessageMapper ();
4246 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 );
4548 }
4649
4750 @ Test
4851 public void testEmbedSome () throws Exception {
49- EmbeddedJsonHeadersMessageMapper mapper = new EmbeddedJsonHeadersMessageMapper ("id" );
52+ EmbeddedJsonHeadersMessageMapper mapper = new EmbeddedJsonHeadersMessageMapper (MessageHeaders . ID );
5053 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 );
5472 }
5573
5674 @ Test
@@ -64,13 +82,13 @@ public void testBytesEmbedAll() throws Exception {
6482 byte [] headerBytes = new byte [headerLen ];
6583 bb .get (headerBytes );
6684 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' );
7492 }
7593
7694 @ Test
@@ -83,13 +101,14 @@ public void testBytesEmbedSome() throws Exception {
83101 byte [] headerBytes = new byte [headerLen ];
84102 bb .get (headerBytes );
85103 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' );
93112 }
94113
95114 @ Test
@@ -99,10 +118,10 @@ public void testBytesEmbedAllJson() throws Exception {
99118 GenericMessage <byte []> message = new GenericMessage <>("foo" .getBytes ());
100119 byte [] mappedBytes = mapper .fromMessage (message );
101120 String mapped = new String (mappedBytes );
102- assertThat (mapped , containsString ("[B\" ,\" Zm9v" ) );
121+ assertThat (mapped ). contains ("[B\" ,\" Zm9v" );
103122 @ SuppressWarnings ("unchecked" )
104123 Message <byte []> decoded = (Message <byte []>) mapper .toMessage (mappedBytes );
105- assertThat (new String (decoded .getPayload ()), equalTo ("foo" ) );
124+ assertThat (new String (decoded .getPayload ())). isEqualTo ("foo" );
106125
107126 }
108127
@@ -111,7 +130,35 @@ public void testBytesDecodeAll() throws Exception {
111130 EmbeddedJsonHeadersMessageMapper mapper = new EmbeddedJsonHeadersMessageMapper ();
112131 GenericMessage <byte []> message = new GenericMessage <>("foo" .getBytes ());
113132 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" );
115162 }
116163
117164}
0 commit comments