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 }