github.com/chanxuehong/wechat@v0.0.0-20230222024006-36f0325263cd/mp/core/server_test.go (about)

     1  package core
     2  
     3  import (
     4  	"encoding/xml"
     5  	"testing"
     6  )
     7  
     8  func TestXmlUnmarshal(t *testing.T) {
     9  	data := []byte(`<xml>
    10      <ToUserName><![CDATA[gh_b1eb3f8bd6c6]]></ToUserName>
    11      <Encrypt><![CDATA[DlCGq+lWQuyjNNK+vDaO0zUltpdUW3u4V00WCzsdNzmZGEhrU7TPxG52viOKCWYPwTMbCzgbCtakZHyNxr5hjoZJ7ORAUYoIAGQy/LDWtAnYgDO+ppKLp0rDq+67Dv3yt+vatMQTh99NII6x9SEGpY3O2h8RpG99+NYevQiOLVKqiQYzan21sX/jE4Y3wZaeudsb4QVjqzRAPaCJ5nS3T31uIR9fjSRgHTDRDOzjQ1cHchge+t6faUhniN5VQVTE+wIYtmnejc55BmHYPfBnTkYah9+cTYnI3diUPJRRiyVocJyHlb+XOZN22dsx9yzKHBAyagaoDIV8Yyb/PahcUbsqGv5wziOgLJQIa6z93/VY7d2Kq2C2oBS+Qb+FI9jLhgc3RvCi+Yno2X3cWoqbsRwoovYdyg6jme/H7nMZn77PSxOGRt/dYiWx2NuBAF7fNFigmbRiive3DyOumNCMvA==]]></Encrypt>
    12  </xml>`)
    13  
    14  	var x cipherRequestHttpBody
    15  	if err := xmlUnmarshal(data, &x); err != nil {
    16  		t.Error(err)
    17  		return
    18  	}
    19  	if x.ToUserName != "gh_b1eb3f8bd6c6" {
    20  		t.Errorf("ToUserName mismatch,\nhave: %s\nwant: %s\n", x.ToUserName, "gh_b1eb3f8bd6c6")
    21  		return
    22  	}
    23  	wantEncrypt := `DlCGq+lWQuyjNNK+vDaO0zUltpdUW3u4V00WCzsdNzmZGEhrU7TPxG52viOKCWYPwTMbCzgbCtakZHyNxr5hjoZJ7ORAUYoIAGQy/LDWtAnYgDO+ppKLp0rDq+67Dv3yt+vatMQTh99NII6x9SEGpY3O2h8RpG99+NYevQiOLVKqiQYzan21sX/jE4Y3wZaeudsb4QVjqzRAPaCJ5nS3T31uIR9fjSRgHTDRDOzjQ1cHchge+t6faUhniN5VQVTE+wIYtmnejc55BmHYPfBnTkYah9+cTYnI3diUPJRRiyVocJyHlb+XOZN22dsx9yzKHBAyagaoDIV8Yyb/PahcUbsqGv5wziOgLJQIa6z93/VY7d2Kq2C2oBS+Qb+FI9jLhgc3RvCi+Yno2X3cWoqbsRwoovYdyg6jme/H7nMZn77PSxOGRt/dYiWx2NuBAF7fNFigmbRiive3DyOumNCMvA==`
    24  	if string(x.Base64EncryptedMsg) != wantEncrypt {
    25  		t.Errorf("Encrypt mismatch,\nhave: %s\nwant: %s\n", x.Base64EncryptedMsg, wantEncrypt)
    26  		return
    27  	}
    28  }
    29  
    30  func BenchmarkXmlUnmarshal(b *testing.B) {
    31  	b.ReportAllocs()
    32  	b.ResetTimer()
    33  
    34  	data := []byte(`<xml>
    35      <ToUserName><![CDATA[gh_b1eb3f8bd6c6]]></ToUserName>
    36      <Encrypt><![CDATA[DlCGq+lWQuyjNNK+vDaO0zUltpdUW3u4V00WCzsdNzmZGEhrU7TPxG52viOKCWYPwTMbCzgbCtakZHyNxr5hjoZJ7ORAUYoIAGQy/LDWtAnYgDO+ppKLp0rDq+67Dv3yt+vatMQTh99NII6x9SEGpY3O2h8RpG99+NYevQiOLVKqiQYzan21sX/jE4Y3wZaeudsb4QVjqzRAPaCJ5nS3T31uIR9fjSRgHTDRDOzjQ1cHchge+t6faUhniN5VQVTE+wIYtmnejc55BmHYPfBnTkYah9+cTYnI3diUPJRRiyVocJyHlb+XOZN22dsx9yzKHBAyagaoDIV8Yyb/PahcUbsqGv5wziOgLJQIa6z93/VY7d2Kq2C2oBS+Qb+FI9jLhgc3RvCi+Yno2X3cWoqbsRwoovYdyg6jme/H7nMZn77PSxOGRt/dYiWx2NuBAF7fNFigmbRiive3DyOumNCMvA==]]></Encrypt>
    37  </xml>`)
    38  	var x cipherRequestHttpBody
    39  	for i := 0; i < b.N; i++ {
    40  		xmlUnmarshal(data, &x)
    41  	}
    42  }
    43  
    44  func BenchmarkStdXmlUnmarshal(b *testing.B) {
    45  	b.ReportAllocs()
    46  	b.ResetTimer()
    47  
    48  	data := []byte(`<xml>
    49      <ToUserName><![CDATA[gh_b1eb3f8bd6c6]]></ToUserName>
    50      <Encrypt><![CDATA[DlCGq+lWQuyjNNK+vDaO0zUltpdUW3u4V00WCzsdNzmZGEhrU7TPxG52viOKCWYPwTMbCzgbCtakZHyNxr5hjoZJ7ORAUYoIAGQy/LDWtAnYgDO+ppKLp0rDq+67Dv3yt+vatMQTh99NII6x9SEGpY3O2h8RpG99+NYevQiOLVKqiQYzan21sX/jE4Y3wZaeudsb4QVjqzRAPaCJ5nS3T31uIR9fjSRgHTDRDOzjQ1cHchge+t6faUhniN5VQVTE+wIYtmnejc55BmHYPfBnTkYah9+cTYnI3diUPJRRiyVocJyHlb+XOZN22dsx9yzKHBAyagaoDIV8Yyb/PahcUbsqGv5wziOgLJQIa6z93/VY7d2Kq2C2oBS+Qb+FI9jLhgc3RvCi+Yno2X3cWoqbsRwoovYdyg6jme/H7nMZn77PSxOGRt/dYiWx2NuBAF7fNFigmbRiive3DyOumNCMvA==]]></Encrypt>
    51  </xml>`)
    52  	var x cipherRequestHttpBody
    53  	for i := 0; i < b.N; i++ {
    54  		xml.Unmarshal(data, &x)
    55  	}
    56  }