github.com/qiwihui/DBShield@v0.0.0-20171107092910-fb8553bed8ef/dbshield/dbms/mssql_test.go (about)

     1  package dbms_test
     2  
     3  import (
     4  	"bytes"
     5  	"errors"
     6  	"io"
     7  	"testing"
     8  
     9  	"github.com/nim4/DBShield/dbshield/dbms"
    10  	"github.com/nim4/mock"
    11  )
    12  
    13  var sampleMSSQL = [...][]byte{
    14  	{
    15  		0x12, 0x01, 0x00, 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x00,
    16  		0x06, 0x01, 0x00, 0x1b, 0x00, 0x01, 0x02, 0x00, 0x1c, 0x00, 0x01, 0x03,
    17  		0x00, 0x1d, 0x00, 0x04, 0xff, 0x08, 0x00, 0x01, 0x55, 0x00, 0x00, 0x00,
    18  		0x00, 0x33, 0x00, 0x00, 0x00,
    19  	}, //Client
    20  	{
    21  		0x04, 0x01, 0x00, 0x25, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x15, 0x00,
    22  		0x06, 0x01, 0x00, 0x1b, 0x00, 0x01, 0x02, 0x00, 0x1c, 0x00, 0x01, 0x03,
    23  		0x00, 0x1d, 0x00, 0x00, 0xff, 0x0e, 0x00, 0x01, 0x95, 0x00, 0x00, 0x00,
    24  		0x00,
    25  	},
    26  	{
    27  		0x12, 0x01, 0x00, 0x8a, 0x00, 0x00, 0x00, 0x00, 0x16, 0x03, 0x01, 0x00,
    28  		0x7d, 0x01, 0x00, 0x00, 0x79, 0x03, 0x01, 0x58, 0xe0, 0x1c, 0x92, 0x11,
    29  		0xd8, 0x8b, 0x54, 0x35, 0x61, 0x51, 0x35, 0x9c, 0xd9, 0x67, 0x01, 0xd3,
    30  		0xae, 0xfd, 0x61, 0xfb, 0x8e, 0x46, 0xf1, 0x4a, 0x05, 0x34, 0x91, 0xf0,
    31  		0xde, 0xa8, 0x25, 0x00, 0x00, 0x20, 0xc0, 0x0a, 0xc0, 0x09, 0xc0, 0x08,
    32  		0xc0, 0x14, 0xc0, 0x13, 0xc0, 0x12, 0x00, 0x35, 0x00, 0x84, 0x00, 0x2f,
    33  		0x00, 0x41, 0x00, 0x0a, 0x00, 0x39, 0x00, 0x88, 0x00, 0x33, 0x00, 0x45,
    34  		0x00, 0x16, 0x01, 0x00, 0x00, 0x30, 0x00, 0x17, 0x00, 0x00, 0x00, 0x16,
    35  		0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x01, 0x00, 0x00, 0x00, 0x00, 0xff,
    36  		0x01, 0x00, 0x01, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x0c,
    37  		0x00, 0x0a, 0x00, 0x17, 0x00, 0x18, 0x00, 0x19, 0x00, 0x15, 0x00, 0x13,
    38  		0x00, 0x0b, 0x00, 0x02, 0x01, 0x00,
    39  	},
    40  	{
    41  		0x12, 0x01, 0x04, 0xbd, 0x00, 0x00, 0x00, 0x00, 0x16, 0x03, 0x01, 0x04,
    42  		0xb0, 0x02, 0x00, 0x00, 0x51, 0x03, 0x01, 0x58, 0xe0, 0x1c, 0xbb, 0x62,
    43  		0x3c, 0x46, 0x84, 0x07, 0x4c, 0x72, 0xf5, 0x7c, 0x94, 0xaa, 0xeb, 0x3e,
    44  		0x21, 0xe8, 0x60, 0x2f, 0x65, 0x61, 0xa0, 0x36, 0x46, 0x8a, 0x54, 0x04,
    45  		0x81, 0xc9, 0xcf, 0x20, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    46  		0x47, 0x3c, 0x79, 0x6e, 0xca, 0x05, 0xa3, 0xe6, 0xea, 0x4d, 0x34, 0x3a,
    47  		0x54, 0x71, 0xbf, 0x5b, 0x3e, 0x08, 0xc3, 0x1f, 0x1f, 0xb5, 0xbc, 0x72,
    48  		0xc0, 0x14, 0x00, 0x00, 0x09, 0x00, 0x17, 0x00, 0x00, 0xff, 0x01, 0x00,
    49  		0x01, 0x00, 0x0b, 0x00, 0x03, 0x08, 0x00, 0x03, 0x05, 0x00, 0x03, 0x02,
    50  		0x30, 0x82, 0x02, 0xfe, 0x30, 0x82, 0x01, 0xe6, 0xa0, 0x03, 0x02, 0x01,
    51  		0x02, 0x02, 0x10, 0x55, 0xf6, 0x58, 0xc8, 0x57, 0x53, 0x61, 0xb4, 0x4c,
    52  		0xe4, 0x1e, 0xbb, 0xb9, 0x6e, 0x4b, 0x0a, 0x30, 0x0d, 0x06, 0x09, 0x2a,
    53  		0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b, 0x05, 0x00, 0x30, 0x3b,
    54  		0x31, 0x39, 0x30, 0x37, 0x06, 0x03, 0x55, 0x04, 0x03, 0x1e, 0x30, 0x00,
    55  		0x53, 0x00, 0x53, 0x00, 0x4c, 0x00, 0x5f, 0x00, 0x53, 0x00, 0x65, 0x00,
    56  		0x6c, 0x00, 0x66, 0x00, 0x5f, 0x00, 0x53, 0x00, 0x69, 0x00, 0x67, 0x00,
    57  		0x6e, 0x00, 0x65, 0x00, 0x64, 0x00, 0x5f, 0x00, 0x46, 0x00, 0x61, 0x00,
    58  		0x6c, 0x00, 0x6c, 0x00, 0x62, 0x00, 0x61, 0x00, 0x63, 0x00, 0x6b, 0x30,
    59  		0x1e, 0x17, 0x0d, 0x31, 0x37, 0x30, 0x34, 0x30, 0x31, 0x31, 0x37, 0x33,
    60  		0x35, 0x31, 0x30, 0x5a, 0x17, 0x0d, 0x34, 0x37, 0x30, 0x34, 0x30, 0x31,
    61  		0x31, 0x37, 0x33, 0x35, 0x31, 0x30, 0x5a, 0x30, 0x3b, 0x31, 0x39, 0x30,
    62  		0x37, 0x06, 0x03, 0x55, 0x04, 0x03, 0x1e, 0x30, 0x00, 0x53, 0x00, 0x53,
    63  		0x00, 0x4c, 0x00, 0x5f, 0x00, 0x53, 0x00, 0x65, 0x00, 0x6c, 0x00, 0x66,
    64  		0x00, 0x5f, 0x00, 0x53, 0x00, 0x69, 0x00, 0x67, 0x00, 0x6e, 0x00, 0x65,
    65  		0x00, 0x64, 0x00, 0x5f, 0x00, 0x46, 0x00, 0x61, 0x00, 0x6c, 0x00, 0x6c,
    66  		0x00, 0x62, 0x00, 0x61, 0x00, 0x63, 0x00, 0x6b, 0x30, 0x82, 0x01, 0x22,
    67  		0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01,
    68  		0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a,
    69  		0x02, 0x82, 0x01, 0x01, 0x00, 0xda, 0x2b, 0xf1, 0xd1, 0xc1, 0xd2, 0x17,
    70  		0x23, 0xe1, 0xff, 0xa0, 0xdd, 0x91, 0x3d, 0xfb, 0x80, 0x8e, 0xec, 0x67,
    71  		0x45, 0x49, 0x03, 0x6b, 0xea, 0x4b, 0xbf, 0x4f, 0x5e, 0x77, 0xc1, 0x8e,
    72  		0x1e, 0xdc, 0xd8, 0x7f, 0x64, 0x03, 0xc3, 0x1d, 0xd3, 0x43, 0xe8, 0x6e,
    73  		0x7b, 0x1c, 0x9c, 0x08, 0x2d, 0x6b, 0x02, 0x7a, 0xc2, 0xed, 0x03, 0xb4,
    74  		0xab, 0x6e, 0x96, 0x18, 0xb3, 0x91, 0x48, 0xe0, 0xb4, 0xb6, 0x41, 0x00,
    75  		0xd6, 0x73, 0xc3, 0xa8, 0xe1, 0x98, 0xf0, 0x8b, 0xda, 0xfc, 0xf0, 0x50,
    76  		0x2b, 0xe5, 0x11, 0xb5, 0xef, 0xf3, 0xa5, 0xe3, 0x24, 0xc2, 0xeb, 0x1b,
    77  		0x3f, 0x96, 0x36, 0x3d, 0x18, 0x45, 0xfc, 0x22, 0x64, 0x77, 0x7d, 0x02,
    78  		0x1e, 0xe2, 0x98, 0xb7, 0xd1, 0x2f, 0x16, 0xe6, 0x0e, 0xa3, 0x45, 0x33,
    79  		0x7d, 0x43, 0x54, 0x3c, 0x2c, 0xa0, 0xfb, 0x78, 0x71, 0x9d, 0x8e, 0xde,
    80  		0x87, 0x59, 0x5a, 0x2c, 0xc8, 0xcc, 0x30, 0x4d, 0xb3, 0x87, 0xb0, 0xab,
    81  		0x72, 0xb1, 0x24, 0x37, 0x57, 0xc0, 0xd7, 0x20, 0x4a, 0x77, 0xa5, 0xe2,
    82  		0x93, 0xa6, 0x43, 0x98, 0x58, 0xeb, 0x51, 0x45, 0x19, 0x4e, 0x86, 0x9b,
    83  		0xa5, 0x7a, 0x2e, 0xc5, 0xe4, 0x91, 0xa2, 0x51, 0x20, 0xe3, 0x29, 0x82,
    84  		0xb7, 0x75, 0x7e, 0x4c, 0xa8, 0x6d, 0x64, 0x7a, 0x60, 0x4d, 0xb4, 0x8c,
    85  		0xed, 0x52, 0x37, 0xb6, 0x75, 0x07, 0x7f, 0x4e, 0xca, 0x2a, 0x58, 0x1d,
    86  		0xfa, 0xad, 0xc3, 0x99, 0x65, 0x04, 0x6f, 0x25, 0x43, 0x3c, 0xc2, 0x3e,
    87  		0x06, 0xc0, 0x7e, 0x87, 0xd6, 0x1e, 0x3a, 0x55, 0x1f, 0x70, 0xd3, 0x65,
    88  		0xe3, 0xfc, 0xfe, 0x0b, 0x42, 0xb8, 0x02, 0x71, 0x13, 0x86, 0x1f, 0xe0,
    89  		0xdd, 0x13, 0xb9, 0x60, 0xc7, 0xdb, 0x96, 0x45, 0xe0, 0x12, 0xe3, 0xcd,
    90  		0xf5, 0x41, 0x20, 0x68, 0x56, 0xd1, 0x9d, 0x95, 0x01, 0x02, 0x03, 0x01,
    91  		0x00, 0x01, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d,
    92  		0x01, 0x01, 0x0b, 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0x21, 0x2d,
    93  		0x3d, 0x77, 0x60, 0xed, 0x8d, 0x95, 0xb4, 0x73, 0xb6, 0x3e, 0xcb, 0x80,
    94  		0x40, 0x17, 0x1c, 0xd5, 0x5c, 0xf0, 0x7b, 0x92, 0x85, 0x17, 0xb3, 0x50,
    95  		0x79, 0x87, 0xe3, 0x36, 0xfc, 0x1d, 0xfd, 0x45, 0x5f, 0x59, 0x3f, 0xc2,
    96  		0xd2, 0x21, 0x6b, 0x32, 0xfd, 0xc9, 0xfc, 0x53, 0x22, 0x41, 0xed, 0x0a,
    97  		0xfb, 0xdb, 0xdb, 0x26, 0xef, 0xe9, 0x52, 0x53, 0xed, 0xff, 0x10, 0xf8,
    98  		0xd6, 0xaf, 0x43, 0x33, 0x5a, 0xf8, 0xe4, 0xd3, 0x70, 0x56, 0x00, 0x14,
    99  		0xca, 0xce, 0xe3, 0x9e, 0xf8, 0xe9, 0x60, 0xdd, 0xc1, 0x4b, 0x8e, 0x29,
   100  		0x14, 0x53, 0x96, 0xbd, 0x96, 0x15, 0x52, 0xf1, 0x2f, 0xb9, 0x02, 0xb1,
   101  		0x21, 0xe0, 0x0e, 0x61, 0xb7, 0xcd, 0x41, 0x6c, 0x68, 0x38, 0x79, 0xea,
   102  		0x4a, 0x16, 0x59, 0x5a, 0x1b, 0xaa, 0x8e, 0x32, 0x54, 0xae, 0xe3, 0x06,
   103  		0xa3, 0xe2, 0x58, 0x8b, 0xba, 0xda, 0xad, 0x6b, 0xf6, 0xdc, 0x94, 0x47,
   104  		0x64, 0x53, 0xf5, 0x94, 0x0a, 0x6e, 0x39, 0xc5, 0x61, 0xd2, 0xeb, 0xc5,
   105  		0xbe, 0x42, 0x77, 0x9a, 0xf1, 0x89, 0x25, 0x11, 0x5d, 0x23, 0x9c, 0xc2,
   106  		0x7e, 0xe0, 0x57, 0xee, 0xa6, 0x85, 0x86, 0x90, 0x1d, 0x95, 0x1b, 0x80,
   107  		0x05, 0xee, 0xc9, 0x9a, 0xed, 0xbc, 0x2d, 0x3d, 0x89, 0xf8, 0xde, 0x2b,
   108  		0x99, 0x0a, 0x87, 0xa8, 0x63, 0x8b, 0xe5, 0xbf, 0x57, 0xf1, 0xf4, 0x3c,
   109  		0xe6, 0xaa, 0xbf, 0xe8, 0x6a, 0xe3, 0xa7, 0x82, 0x79, 0x99, 0x8e, 0x76,
   110  		0xa3, 0x32, 0x66, 0xb0, 0xfd, 0x05, 0xca, 0xeb, 0x13, 0x56, 0x50, 0xb5,
   111  		0x33, 0x84, 0x93, 0xe0, 0x99, 0x53, 0x37, 0xa0, 0x30, 0x42, 0xc7, 0xf2,
   112  		0xe2, 0x61, 0xe6, 0xc6, 0xbd, 0xbf, 0xdd, 0xbd, 0x14, 0xd3, 0x21, 0x8e,
   113  		0x28, 0xb1, 0xc5, 0xfe, 0xf5, 0x9c, 0x3c, 0x2a, 0x6d, 0x26, 0xe8, 0x03,
   114  		0x4b, 0xf0, 0x0c, 0x00, 0x01, 0x47, 0x03, 0x00, 0x17, 0x41, 0x04, 0xc4,
   115  		0x12, 0x3b, 0x5a, 0x3d, 0x6e, 0x3a, 0xac, 0x10, 0xd5, 0xee, 0xff, 0x13,
   116  		0xad, 0x8d, 0xdf, 0x90, 0x34, 0x0d, 0x40, 0xe5, 0x54, 0x98, 0x39, 0x3b,
   117  		0xd5, 0xab, 0xe8, 0x47, 0x64, 0xb9, 0x47, 0xad, 0x85, 0x9e, 0x42, 0x8e,
   118  		0x77, 0xec, 0x25, 0x90, 0xed, 0x88, 0x87, 0x02, 0x80, 0x46, 0x3b, 0x18,
   119  		0x5f, 0xf1, 0xa0, 0xde, 0x1b, 0x4c, 0x9d, 0xb8, 0x7d, 0x3c, 0x5a, 0x55,
   120  		0x95, 0x14, 0xf9, 0x01, 0x00, 0x3c, 0x28, 0x0e, 0xbf, 0x03, 0x0f, 0x2e,
   121  		0x44, 0x41, 0x7c, 0x20, 0xa0, 0xd0, 0xf2, 0x42, 0xaf, 0x6b, 0x0b, 0x1d,
   122  		0x9f, 0xa4, 0x7b, 0xce, 0x4e, 0xfa, 0x19, 0x68, 0x08, 0x95, 0x8d, 0x34,
   123  		0x1d, 0x9a, 0x63, 0x05, 0x22, 0xa4, 0xb0, 0x2e, 0x59, 0xaa, 0x45, 0x22,
   124  		0x55, 0x68, 0x62, 0x6a, 0xab, 0xeb, 0x9a, 0xa6, 0x37, 0xb8, 0x41, 0x2a,
   125  		0x12, 0xd8, 0xa3, 0x87, 0x86, 0x06, 0x9d, 0xb5, 0x16, 0x13, 0xa9, 0x92,
   126  		0xb8, 0x0d, 0xc2, 0x06, 0x5b, 0xa0, 0xde, 0x4d, 0x64, 0x93, 0x97, 0xab,
   127  		0x23, 0x59, 0xd5, 0x2e, 0xb9, 0x31, 0xe0, 0xf7, 0x99, 0x71, 0x93, 0xc3,
   128  		0xce, 0xb8, 0xa1, 0x9f, 0xd7, 0x0a, 0xb0, 0x0e, 0x1d, 0xd8, 0xae, 0xea,
   129  		0xb7, 0x15, 0xfd, 0xde, 0x57, 0xb8, 0xc2, 0x92, 0x89, 0x15, 0xed, 0xf8,
   130  		0x30, 0x57, 0x7b, 0x74, 0x8b, 0xdf, 0xfb, 0x8f, 0xc8, 0xf5, 0x95, 0x82,
   131  		0x12, 0x77, 0x7a, 0x0f, 0xe3, 0x78, 0x47, 0x0b, 0x25, 0x87, 0xc8, 0xcd,
   132  		0xbf, 0x3d, 0xd1, 0x1f, 0x5b, 0xc4, 0x7f, 0x18, 0x67, 0x12, 0x38, 0x8d,
   133  		0x77, 0xb5, 0x60, 0xbb, 0xde, 0x78, 0x1c, 0x59, 0xc3, 0x00, 0x0b, 0x39,
   134  		0x15, 0x4a, 0x2e, 0xdf, 0x15, 0x6a, 0x97, 0x24, 0x63, 0x80, 0xc3, 0xa1,
   135  		0xae, 0x37, 0x66, 0x46, 0xc2, 0xc0, 0x73, 0xe5, 0xb8, 0x70, 0x7a, 0x83,
   136  		0x81, 0x06, 0xc5, 0x81, 0xd3, 0x1e, 0xe0, 0xcc, 0x84, 0x25, 0x6e, 0x9e,
   137  		0xb9, 0x54, 0x9b, 0x4e, 0x3b, 0x07, 0x1d, 0xd5, 0x6e, 0xd1, 0x59, 0xd8,
   138  		0xed, 0x9d, 0xce, 0x86, 0xe0, 0x08, 0xdb, 0xbb, 0xb7, 0x9c, 0x79, 0x7b,
   139  		0xb0, 0x9c, 0x26, 0x0a, 0x9a, 0x21, 0xce, 0x45, 0x6d, 0x74, 0x42, 0x3d,
   140  		0x34, 0x85, 0x5f, 0x6c, 0x1f, 0x3d, 0x1b, 0x4d, 0x2a, 0xaf, 0x02, 0x19,
   141  		0xe4, 0xc5, 0x76, 0x28, 0x8d, 0x2d, 0xe4, 0xf5, 0x77, 0x0e, 0x00, 0x00,
   142  		0x00,
   143  	},
   144  	{
   145  		0x12, 0x01, 0x00, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x16, 0x03, 0x01, 0x00,
   146  		0x46, 0x10, 0x00, 0x00, 0x42, 0x41, 0x04, 0x50, 0xf1, 0xf7, 0x5d, 0x67,
   147  		0x4b, 0xb1, 0x87, 0x38, 0x6c, 0x5d, 0x67, 0x17, 0xdf, 0x8f, 0x84, 0x26,
   148  		0xab, 0x23, 0x4d, 0x09, 0x9c, 0xe7, 0x7a, 0x00, 0xc3, 0x67, 0x9f, 0xfb,
   149  		0x37, 0x71, 0xe7, 0x73, 0xbf, 0x96, 0x6e, 0x12, 0x21, 0x56, 0x3f, 0xfc,
   150  		0xb2, 0xc2, 0xff, 0xb9, 0x59, 0x18, 0x52, 0x40, 0x3d, 0xf9, 0x04, 0x95,
   151  		0xdd, 0xbb, 0x1a, 0xe4, 0xd9, 0x3b, 0xe2, 0x93, 0xf6, 0xe9, 0xbb, 0x14,
   152  		0x03, 0x01, 0x00, 0x01, 0x01, 0x16, 0x03, 0x01, 0x00, 0x30, 0xd6, 0xbf,
   153  		0x92, 0x46, 0xed, 0x89, 0xd3, 0x01, 0x60, 0x47, 0xae, 0xad, 0xfb, 0x36,
   154  		0x29, 0xe9, 0xf3, 0x82, 0x81, 0xc0, 0x0c, 0x25, 0xb9, 0x6a, 0x82, 0xa4,
   155  		0x72, 0xbc, 0x64, 0xde, 0xa4, 0x0f, 0x42, 0x02, 0x52, 0x69, 0x44, 0x95,
   156  		0xa4, 0x9e, 0x83, 0xba, 0xcd, 0xf9, 0xd9, 0x28, 0xa1, 0x89,
   157  	},
   158  	{
   159  		0x12, 0x01, 0x00, 0x43, 0x00, 0x00, 0x00, 0x00, 0x14, 0x03, 0x01, 0x00,
   160  		0x01, 0x01, 0x16, 0x03, 0x01, 0x00, 0x30, 0x41, 0x48, 0xea, 0x44, 0xcb,
   161  		0xed, 0x85, 0x85, 0xeb, 0x1e, 0xa8, 0x2e, 0xf5, 0xec, 0xf3, 0xfe, 0x2c,
   162  		0xb7, 0x3b, 0x2c, 0x1e, 0xed, 0xac, 0xd8, 0x66, 0x8e, 0x12, 0x01, 0x57,
   163  		0x00, 0xcc, 0x13, 0xe5, 0xa1, 0xb1, 0x9d, 0x7c, 0x7c, 0x56, 0x25, 0x7d,
   164  		0x39, 0x7e, 0x11, 0x09, 0x84, 0x9a, 0x33,
   165  	},
   166  	{
   167  		0x17, 0x03, 0x01, 0x00, 0xd0, 0x7e, 0x3a, 0xf5, 0xc4, 0x5b, 0x67, 0x81,
   168  		0x8f, 0xee, 0xd0, 0x67, 0x72, 0x9a, 0x1b, 0xfa, 0xc5, 0x2a, 0x13, 0x6f,
   169  		0x3e, 0x61, 0xe5, 0x8c, 0x3d, 0xd4, 0x32, 0x81, 0x70, 0xc3, 0xc8, 0x3c,
   170  		0x68, 0x90, 0x71, 0x9c, 0xf1, 0xc9, 0x8f, 0x62, 0x6d, 0xb4, 0xb3, 0xff,
   171  		0x8a, 0x18, 0x99, 0x72, 0x3b, 0x10, 0x8e, 0x80, 0xaf, 0x5e, 0xe6, 0xe9,
   172  		0x67, 0x96, 0x4c, 0x2f, 0xfe, 0x69, 0xb0, 0x1c, 0xa8, 0xd9, 0x89, 0xb7,
   173  		0x78, 0x2c, 0x82, 0xb5, 0x4e, 0x39, 0x17, 0x1d, 0x4b, 0x28, 0xe8, 0x05,
   174  		0x09, 0x18, 0x8d, 0x1f, 0xaa, 0xf7, 0x7e, 0x25, 0xf6, 0x2e, 0xc2, 0x8c,
   175  		0x2e, 0x16, 0xd8, 0xfe, 0xe0, 0x78, 0x70, 0x17, 0x74, 0x6b, 0x9b, 0x29,
   176  		0x14, 0xae, 0xbd, 0x82, 0x7d, 0x13, 0x78, 0x90, 0x28, 0x31, 0xf5, 0x9c,
   177  		0x37, 0x66, 0xb4, 0x1b, 0x2f, 0x9a, 0x9f, 0xe7, 0xe0, 0x7c, 0x39, 0x79,
   178  		0x5b, 0x71, 0xa3, 0xa1, 0x21, 0xbd, 0xbb, 0x69, 0xd8, 0x59, 0x6c, 0x56,
   179  		0x5a, 0x5d, 0xea, 0x88, 0x30, 0xf3, 0x39, 0xe2, 0x8a, 0x44, 0x62, 0x7a,
   180  		0x43, 0xb3, 0x06, 0xc6, 0x88, 0x49, 0x80, 0x5c, 0x30, 0x0c, 0xe5, 0xc8,
   181  		0x44, 0xd6, 0x89, 0x08, 0x41, 0x8c, 0x2a, 0x1b, 0x73, 0x12, 0xe7, 0x97,
   182  		0xbb, 0x1a, 0x08, 0x6b, 0xbf, 0xd6, 0x6e, 0xde, 0x70, 0xc2, 0x60, 0x9f,
   183  		0x1c, 0x56, 0xda, 0xca, 0x59, 0x44, 0xfb, 0xb5, 0xc5, 0x92, 0xa4, 0x5e,
   184  		0x37, 0x5e, 0x55, 0x11, 0x7f, 0x74, 0x87, 0x5a, 0x83,
   185  	},
   186  	{
   187  		0x04, 0x01, 0x01, 0x89, 0x00, 0x33, 0x01, 0x00, 0xe3, 0x1b, 0x00, 0x01,
   188  		0x06, 0x6d, 0x00, 0x61, 0x00, 0x73, 0x00, 0x74, 0x00, 0x65, 0x00, 0x72,
   189  		0x00, 0x06, 0x6d, 0x00, 0x61, 0x00, 0x73, 0x00, 0x74, 0x00, 0x65, 0x00,
   190  		0x72, 0x00, 0xab, 0x6e, 0x00, 0x45, 0x16, 0x00, 0x00, 0x02, 0x00, 0x25,
   191  		0x00, 0x43, 0x00, 0x68, 0x00, 0x61, 0x00, 0x6e, 0x00, 0x67, 0x00, 0x65,
   192  		0x00, 0x64, 0x00, 0x20, 0x00, 0x64, 0x00, 0x61, 0x00, 0x74, 0x00, 0x61,
   193  		0x00, 0x62, 0x00, 0x61, 0x00, 0x73, 0x00, 0x65, 0x00, 0x20, 0x00, 0x63,
   194  		0x00, 0x6f, 0x00, 0x6e, 0x00, 0x74, 0x00, 0x65, 0x00, 0x78, 0x00, 0x74,
   195  		0x00, 0x20, 0x00, 0x74, 0x00, 0x6f, 0x00, 0x20, 0x00, 0x27, 0x00, 0x6d,
   196  		0x00, 0x61, 0x00, 0x73, 0x00, 0x74, 0x00, 0x65, 0x00, 0x72, 0x00, 0x27,
   197  		0x00, 0x2e, 0x00, 0x0c, 0x39, 0x00, 0x31, 0x00, 0x66, 0x00, 0x63, 0x00,
   198  		0x30, 0x00, 0x35, 0x00, 0x62, 0x00, 0x30, 0x00, 0x33, 0x00, 0x66, 0x00,
   199  		0x63, 0x00, 0x31, 0x00, 0x00, 0x01, 0x00, 0xe3, 0x08, 0x00, 0x07, 0x05,
   200  		0x09, 0x04, 0xd0, 0x00, 0x34, 0x00, 0xe3, 0x17, 0x00, 0x02, 0x0a, 0x75,
   201  		0x00, 0x73, 0x00, 0x5f, 0x00, 0x65, 0x00, 0x6e, 0x00, 0x67, 0x00, 0x6c,
   202  		0x00, 0x69, 0x00, 0x73, 0x00, 0x68, 0x00, 0x00, 0xab, 0x72, 0x00, 0x47,
   203  		0x16, 0x00, 0x00, 0x01, 0x00, 0x27, 0x00, 0x43, 0x00, 0x68, 0x00, 0x61,
   204  		0x00, 0x6e, 0x00, 0x67, 0x00, 0x65, 0x00, 0x64, 0x00, 0x20, 0x00, 0x6c,
   205  		0x00, 0x61, 0x00, 0x6e, 0x00, 0x67, 0x00, 0x75, 0x00, 0x61, 0x00, 0x67,
   206  		0x00, 0x65, 0x00, 0x20, 0x00, 0x73, 0x00, 0x65, 0x00, 0x74, 0x00, 0x74,
   207  		0x00, 0x69, 0x00, 0x6e, 0x00, 0x67, 0x00, 0x20, 0x00, 0x74, 0x00, 0x6f,
   208  		0x00, 0x20, 0x00, 0x75, 0x00, 0x73, 0x00, 0x5f, 0x00, 0x65, 0x00, 0x6e,
   209  		0x00, 0x67, 0x00, 0x6c, 0x00, 0x69, 0x00, 0x73, 0x00, 0x68, 0x00, 0x2e,
   210  		0x00, 0x0c, 0x39, 0x00, 0x31, 0x00, 0x66, 0x00, 0x63, 0x00, 0x30, 0x00,
   211  		0x35, 0x00, 0x62, 0x00, 0x30, 0x00, 0x33, 0x00, 0x66, 0x00, 0x63, 0x00,
   212  		0x31, 0x00, 0x00, 0x01, 0x00, 0xad, 0x36, 0x00, 0x01, 0x71, 0x00, 0x00,
   213  		0x01, 0x16, 0x4d, 0x00, 0x69, 0x00, 0x63, 0x00, 0x72, 0x00, 0x6f, 0x00,
   214  		0x73, 0x00, 0x6f, 0x00, 0x66, 0x00, 0x74, 0x00, 0x20, 0x00, 0x53, 0x00,
   215  		0x51, 0x00, 0x4c, 0x00, 0x20, 0x00, 0x53, 0x00, 0x65, 0x00, 0x72, 0x00,
   216  		0x76, 0x00, 0x65, 0x00, 0x72, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00,
   217  		0x01, 0x95, 0xe3, 0x13, 0x00, 0x04, 0x04, 0x34, 0x00, 0x30, 0x00, 0x39,
   218  		0x00, 0x36, 0x00, 0x04, 0x34, 0x00, 0x30, 0x00, 0x39, 0x00, 0x36, 0x00,
   219  		0xfd, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   220  	},
   221  	{
   222  		0x01, 0x01, 0x00, 0x18, 0x00, 0x00, 0x01, 0x00, 0x53, 0x00, 0x45, 0x00,
   223  		0x4c, 0x00, 0x45, 0x00, 0x43, 0x00, 0x54, 0x00, 0x20, 0x00, 0x31, 0x00,
   224  	},
   225  	{
   226  		0x04, 0x01, 0x00, 0x1f, 0x00, 0x33, 0x01, 0x00, 0x81, 0x01, 0x00, 0x00,
   227  		0x00, 0x20, 0x00, 0x38, 0x00, 0xd1, 0x01, 0x00, 0x00, 0x00, 0xfd, 0x10,
   228  		0x00, 0xc1, 0x00, 0x01, 0x00, 0x00, 0x00,
   229  	},
   230  }
   231  
   232  var mssqlCount int
   233  
   234  func mssqlDummyReader(c io.Reader) (buf []byte, err error) {
   235  	if mssqlCount < len(sampleMSSQL) {
   236  		buf = sampleMSSQL[mssqlCount]
   237  		mssqlCount++
   238  	} else {
   239  		err = errors.New("EOF")
   240  	}
   241  	return
   242  }
   243  
   244  func TestMSSQL(t *testing.T) {
   245  	mssqlCount = 0
   246  	var m = dbms.MSSQL{}
   247  	port := m.DefaultPort()
   248  	if m.DefaultPort() != 1433 {
   249  		t.Error("Expected 1433, got ", port)
   250  	}
   251  	err := m.SetCertificate("", "")
   252  	if err == nil {
   253  		t.Error("Expected error")
   254  	}
   255  	m.SetReader(mssqlDummyReader)
   256  	var s mock.ConnMock
   257  	m.SetSockets(&s, &s)
   258  	err = m.Handler()
   259  	if err != nil && err.Error() != "EOF" {
   260  		t.Error("Got error", err)
   261  	}
   262  	m.Close()
   263  }
   264  
   265  func BenchmarkMSSQL(b *testing.B) {
   266  	b.ReportAllocs()
   267  	b.ResetTimer()
   268  	var s mock.ConnMock
   269  	var m = dbms.MSSQL{}
   270  	m.SetReader(mssqlDummyReader)
   271  	m.SetSockets(&s, &s)
   272  	for i := 0; i < b.N; i++ {
   273  		mssqlCount = 0
   274  		err := m.Handler()
   275  		if err != nil {
   276  			b.Fatal(err)
   277  		}
   278  		m.Close()
   279  	}
   280  }
   281  
   282  // func TestMSSQLGetUsernameDB(t *testing.T) {
   283  //
   284  // 	u, d := dbms.MSSQLGetUsernameDB([]byte{
   285  // 		5, 162, 43, 0, 1, 0, 0, 0, 45, 0, 0, 0,
   286  // 		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
   287  // 		0, 0, 0, 0, 119, 112, 0, 20, 220, 242, 53, 124, 75, 14, 62, 51,
   288  // 		39, 210, 196, 162, 213, 205, 209, 232, 229, 71, 70, 62, 109, 121, 115, 113,
   289  // 		108, 95, 110, 97, 116, 105, 118, 101, 95, 112, 97, 115, 115, 119, 111, 114,
   290  // 		100, 0,
   291  // 	})
   292  // 	if string(u) != "wp" {
   293  // 		t.Error("Expected 'wp' username got", string(u))
   294  // 	}
   295  // 	if len(d) != 0 {
   296  // 		t.Error("Expected empty db name got", string(d))
   297  // 	}
   298  //
   299  // 	u, d = dbms.MSSQLGetUsernameDB([]byte{
   300  // 		13, 162, 43, 0, 1, 0, 0, 0, 45, 0, 0, 0,
   301  // 		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
   302  // 		0, 0, 0, 0, 119, 112, 0, 20, 0, 205, 124, 7, 125, 243, 111, 168,
   303  // 		162, 10, 54, 115, 147, 159, 57, 126, 109, 123, 162, 138, 119, 112, 0, 109,
   304  // 		121, 115, 113, 108, 95, 110, 97, 116, 105, 118, 101, 95, 112, 97, 115, 115,
   305  // 		119, 111, 114, 100, 0,
   306  // 	})
   307  //
   308  // 	if string(u) != "wp" {
   309  // 		t.Error("Expected 'wp' username got", string(u))
   310  // 	}
   311  // 	if string(u) != "wp" {
   312  // 		t.Error("Expected 'wp' db name", string(d))
   313  // 	}
   314  //
   315  // 	u, d = dbms.MSSQLGetUsernameDB([]byte{
   316  // 		13, 162, 43, 0, 1, 0, 0, 0, 45, 0, 0, 0,
   317  // 		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
   318  // 		0, 0, 0, 0,
   319  // 	})
   320  //
   321  // 	if len(u) != 0 || len(d) != 0 {
   322  // 		t.Error("Expected empty username & db name got", string(u), string(d))
   323  // 	}
   324  // }
   325  
   326  func TestMSSQLReadPacket(t *testing.T) {
   327  	const maxPayloadLen = 1<<24 - 1
   328  	var buf [maxPayloadLen]byte
   329  	reader := bytes.NewReader(buf[:])
   330  	b, err := dbms.MSSQLReadPacket(reader)
   331  	if err != nil {
   332  		t.Error("Got error", err)
   333  	}
   334  	if bytes.Compare(b, buf[:]) != 0 {
   335  		t.Error("Unexpected output")
   336  	}
   337  	var eofReader bytes.Buffer
   338  	_, err = dbms.MSSQLReadPacket(&eofReader)
   339  	if err != nil {
   340  		t.Error("Got error", err)
   341  	}
   342  }
   343  
   344  func BenchmarkMSSQLReadPacket(b *testing.B) {
   345  	var buf [1024]byte
   346  	for i := 0; i < b.N; i++ {
   347  		s := bytes.NewReader(buf[:])
   348  		dbms.MSSQLReadPacket(s)
   349  	}
   350  }