@@ -3,6 +3,7 @@ package examples
3
3
import (
4
4
"fmt"
5
5
"os"
6
+ "strings"
6
7
"testing"
7
8
"time"
8
9
@@ -151,16 +152,14 @@ func TestMessagePackingAndUnpacking(t *testing.T) {
151
152
// use time from our example
152
153
timeFromExample := "240812160140"
153
154
processingTime , err := time .Parse ("060102150405" , timeFromExample )
154
- require .NotEmpty (t , processingTime )
155
155
require .NoError (t , err )
156
156
157
157
// Set the message fields
158
158
err = requestMessage .Marshal (& AuthorizationRequest {
159
- MTI : "0100" ,
160
- PAN : "4242424242424242" ,
161
- Amount : 1000 ,
162
- // TransactionDatetime: processingTime.Format("060102150405"),
163
- TransactionDatetime : time .Now ().Format ("060102150405" ),
159
+ MTI : "0100" ,
160
+ PAN : "4242424242424242" ,
161
+ Amount : 1000 ,
162
+ TransactionDatetime : processingTime .Format ("060102150405" ),
164
163
Currency : "840" ,
165
164
CVV : "7890" ,
166
165
ExpirationDate : "2512" ,
@@ -192,7 +191,7 @@ func TestMessagePackingAndUnpacking(t *testing.T) {
192
191
require .Equal (t , "0100" , authorizationRequest .MTI )
193
192
require .Equal (t , "4242424242424242" , authorizationRequest .PAN )
194
193
require .Equal (t , int64 (1000 ), authorizationRequest .Amount )
195
- // require.Equal(t, timeFromExample, authorizationRequest.TransactionDatetime)
194
+ require .Equal (t , timeFromExample , authorizationRequest .TransactionDatetime )
196
195
require .Equal (t , "840" , authorizationRequest .Currency )
197
196
require .Equal (t , "7890" , authorizationRequest .CVV )
198
197
require .Equal (t , "2512" , authorizationRequest .ExpirationDate )
@@ -209,6 +208,17 @@ func TestMessagePackingAndUnpacking(t *testing.T) {
209
208
// using %X to convert the byte slice to a hex string in uppercase
210
209
require .Equal (t , examplePackedMessage , fmt .Sprintf ("%X" , packed ))
211
210
212
- err = iso8583 .Describe (requestMessage , os .Stdout )
211
+ // to make it right, let's filter the value of CVV field when we output it
212
+ filterCVV := iso8583 .FilterField ("8" , iso8583 .FilterFunc (func (in string , data field.Field ) string {
213
+ if len (in ) == 0 {
214
+ return in
215
+ }
216
+ return in [0 :1 ] + strings .Repeat ("*" , len (in )- 1 )
217
+ }))
218
+
219
+ // don't forget to apply default filter
220
+ filters := append (iso8583 .DefaultFilters (), filterCVV )
221
+
222
+ err = iso8583 .Describe (requestMessage , os .Stdout , filters ... )
213
223
require .NoError (t , err )
214
224
}
0 commit comments