github.com/danil/iso8583@v0.21.0/codec8583/mastercard_truncate_format_test.go (about)

     1  package codec8583_test
     2  
     3  import (
     4  	"fmt"
     5  	"runtime"
     6  	"strconv"
     7  	"testing"
     8  
     9  	"github.com/danil/iso8583/codec8583"
    10  )
    11  
    12  var MastercardTruncateFormatTestCases = []struct {
    13  	input     iso8583Msg
    14  	truncate  iso8583Msg
    15  	line      int
    16  	benchmark bool
    17  }{
    18  	{
    19  		input:     iso8583Msg{MTIMessageTypeIndicator: "0100", PANPrimaryAccountNumber2: "1234567890123456", ProcessingCode3: "000000", AmountTransaction4: "000000020126", AmountCardholderBilling6: "000000000310", TransmissionDateTime7: "1008053137", ConversionRateCardholderBilling10: "70154259", SystemTraceAuditNumber11: "196842", LocalTransactionTime12: "083137", LocalTransactionDate13: "1008", ExpirationDate14: "2312", SettlementDate15: "1008", CurrencyConversionDate16: "1008", MerchantTypeOrMerchantCategoryCode18: "5411", POSPointOfServiceEntryMode22: "071", ApplicationPANSequenceNumber23: "001", AcquiringInstitutionIdentificationCode32: "005037", ForwardingInstitutionIdentificationCode33: "200154", Track2Data35: "1234567890123456D99122011969100000377", RetrievalReferenceNumber37: "519939727023", CardAcceptorTerminalIdentification41: "10747007", CardAcceptorIdentificationCode42: "990000026622   ", CardAcceptorNameLocation43: "PYATEROCHKA 7904       Podolsk       RUS", AdditionalDataPrivate48: "2fLz8PLw8Pbx8PXw8PDw8Q==", CurrencyCodeTransaction49: "643", CurrencyCodeCardholderBilling51: "840", ICCData55: "XyoCBkOCAhmAhAegAAAABBAQlQUAAACAAJoDGRAInAEAnwIGAAAAAgEmnwMGAAAAAAAAnxASARCgQAMiAAAAAAAAAAAAAAD/nxoCBkOfJggCXxqRiyDckZ8nAYCfMwPgCMifNAMfAwCfNgIBYJ83BM8lmh8=", ReservedPrivate1_61: "0000010000300643142103", ReservedPrivate3_63: "TNWGAP405"},
    20  		truncate:  iso8583Msg{MTIMessageTypeIndicator: "0100", PANPrimaryAccountNumber2: "1234XXXXXXXX3456", ProcessingCode3: "000000", AmountTransaction4: "000000020126", AmountCardholderBilling6: "000000000310", TransmissionDateTime7: "1008053137", ConversionRateCardholderBilling10: "70154259", SystemTraceAuditNumber11: "196842", LocalTransactionTime12: "083137", LocalTransactionDate13: "1008", ExpirationDate14: "2312", SettlementDate15: "1008", CurrencyConversionDate16: "1008", MerchantTypeOrMerchantCategoryCode18: "5411", POSPointOfServiceEntryMode22: "071", ApplicationPANSequenceNumber23: "001", AcquiringInstitutionIdentificationCode32: "005037", ForwardingInstitutionIdentificationCode33: "200154", Track2Data35: "1234XXXXXXXX3456D99122011969100000377", RetrievalReferenceNumber37: "519939727023", CardAcceptorTerminalIdentification41: "10747007", CardAcceptorIdentificationCode42: "990000026622   ", CardAcceptorNameLocation43: "PYATEROCHKA 7904       Podolsk       RUS", AdditionalDataPrivate48: "2fLz8PLw8Pbx8PXw8PDw8Q==", CurrencyCodeTransaction49: "643", CurrencyCodeCardholderBilling51: "840", ICCData55: "XyoCBkOCAhmAhAegAAAABBAQlQUAAACAAJoDGRAInAEAnwIGAAAAAgEmnwMGAAAAAAAAnxASARCgQAMiAAAAAAAAAAAAAAD/nxoCBkOfJggCXxqRiyDckZ8nAYCfMwPgCMifNAMfAwCfNgIBYJ83BM8lmh8=", ReservedPrivate1_61: "0000010000300643142103", ReservedPrivate3_63: "TNWGAP405"},
    21  		line:      func() int { _, _, l, _ := runtime.Caller(1); return l }(),
    22  		benchmark: true,
    23  	},
    24  	{
    25  		input:    iso8583Msg{MTIMessageTypeIndicator: "0100", PANPrimaryAccountNumber2: "1234567890123456"},
    26  		truncate: iso8583Msg{MTIMessageTypeIndicator: "0100", PANPrimaryAccountNumber2: "1234XXXXXXXX3456"},
    27  		line:     func() int { _, _, l, _ := runtime.Caller(1); return l }(),
    28  	},
    29  }
    30  
    31  func TestMastercardTruncateFormat(t *testing.T) {
    32  	_, testFile, _, _ := runtime.Caller(0)
    33  	for _, tc := range MastercardTruncateFormatTestCases {
    34  		tc := tc
    35  		t.Run(strconv.Itoa(tc.line), func(t *testing.T) {
    36  			t.Parallel()
    37  			linkToExample := fmt.Sprintf("%s:%d", testFile, tc.line)
    38  			enc, err := codec8583.MastercardMarshaler.Marshal(&tc.input)
    39  			if err != nil {
    40  				t.Fatalf("unexpected error: %#v - %s", err, linkToExample)
    41  			}
    42  			dec := iso8583Msg{}
    43  			err = codec8583.MastercardUnmarshalerTruncator.Unmarshal(enc, &dec)
    44  			if err != nil {
    45  				t.Fatalf("unexpected error: %#v - %s", err, linkToExample)
    46  			}
    47  			if dec != tc.truncate {
    48  				t.Errorf("[truncate message] expected: %#v, received: %#v - %s", tc.truncate, dec, linkToExample)
    49  			}
    50  			enc, err = codec8583.MastercardMarshaler.Marshal(&dec)
    51  			if err != nil {
    52  				t.Fatalf("unexpected error: %#v - %s", err, linkToExample)
    53  			}
    54  			dec = iso8583Msg{}
    55  			err = codec8583.MastercardUnmarshalerTruncator.Unmarshal(enc, &dec)
    56  			if err != nil {
    57  				t.Fatalf("unexpected error: %#v - %s", err, linkToExample)
    58  			}
    59  			if dec != tc.truncate {
    60  				t.Errorf("[truncate message] expected: %#v, received: %#v - %s", tc.truncate, dec, linkToExample)
    61  			}
    62  		})
    63  	}
    64  }
    65  
    66  func BenchmarkMastercardUnmarshalerTruncatorUnmarshal(b *testing.B) {
    67  	dec := iso8583Msg{}
    68  	err := codec8583.MastercardUnmarshalerTruncator.Unmarshal(iso8583Bytes[0], &dec)
    69  	if err != nil {
    70  		fmt.Println(err)
    71  	}
    72  }