github.com/danil/iso8583@v0.21.0/codec8583/mastercard_hash256_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 MastercardHash256FormatTestCases = []struct {
    13  	decoded iso8583Msg
    14  	hashed  iso8583Msg
    15  	line    int
    16  }{
    17  	{
    18  		decoded: 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"},
    19  		hashed:  iso8583Msg{MTIMessageTypeIndicator: "0100", PANPrimaryAccountNumber2: "7a51d064a1a216a692f753fcdab276e4ff201a01d8b66f56d50d4d719fd0dc87", 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: "9a903b0d368e7fb03ee7bc44d84a621526eb03947f51f400ad858598ec9a4497", 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  		line:    func() int { _, _, l, _ := runtime.Caller(1); return l }(),
    21  	},
    22  	{
    23  		decoded: iso8583Msg{MTIMessageTypeIndicator: "0100", PANPrimaryAccountNumber2: "1234567890123456"},
    24  		hashed:  iso8583Msg{MTIMessageTypeIndicator: "0100", PANPrimaryAccountNumber2: "7a51d064a1a216a692f753fcdab276e4ff201a01d8b66f56d50d4d719fd0dc87"},
    25  		line:    func() int { _, _, l, _ := runtime.Caller(1); return l }(),
    26  	},
    27  }
    28  
    29  func TestMastercardHash256Format(t *testing.T) {
    30  	_, testFile, _, _ := runtime.Caller(0)
    31  	for _, tc := range MastercardHash256FormatTestCases {
    32  		tc := tc
    33  		t.Run(strconv.Itoa(tc.line), func(t *testing.T) {
    34  			t.Parallel()
    35  			linkToExample := fmt.Sprintf("%s:%d", testFile, tc.line)
    36  			enc, err := codec8583.MastercardMarshaler.Marshal(&tc.decoded)
    37  			if err != nil {
    38  				t.Fatalf("unexpected error: %#v - %s", err, linkToExample)
    39  			}
    40  			dec := iso8583Msg{}
    41  			err = codec8583.MastercardUnmarshalerHasher256.Unmarshal(enc, &dec)
    42  			if err != nil {
    43  				t.Fatalf("unexpected error: %#v - %s", err, linkToExample)
    44  			}
    45  			if dec != tc.hashed {
    46  				t.Errorf("[hashed message] expected: %#v, received: %#v - %s", tc.hashed, dec, linkToExample)
    47  			}
    48  			enc, err = codec8583.MastercardHashed256Marshaler.Marshal(&dec)
    49  			if err != nil {
    50  				t.Fatalf("unexpected error: %#v - %s", err, linkToExample)
    51  			}
    52  			dec = iso8583Msg{}
    53  			err = codec8583.MastercardHashed256Unmarshaler.Unmarshal(enc, &dec)
    54  			if err != nil {
    55  				t.Fatalf("unexpected error: %#v - %s", err, linkToExample)
    56  			}
    57  			if dec != tc.hashed {
    58  				t.Errorf("[hashed message] expected: %#v, received: %#v - %s", tc.hashed, dec, linkToExample)
    59  			}
    60  		})
    61  	}
    62  }
    63  
    64  func BenchmarkMastercardUnmarshalerHasher256Unmarshal(b *testing.B) {
    65  	dec := iso8583Msg{}
    66  	err := codec8583.MastercardUnmarshalerHasher256.Unmarshal(iso8583Bytes[0], &dec)
    67  	if err != nil {
    68  		fmt.Println(err)
    69  	}
    70  }