packagesmtpimport("bufio""bytes""log/slog""net""testing""time")funcTestSMTPHandleSessionTLSHandshake(t*testing.T){// Mock connectionclientConn,serverConn:=net.Pipe()deferclientConn.Close()deferserverConn.Close()h:=&smtpHoneypot{logger:slog.New(slog.NewJSONHandler(&bytes.Buffer{},nil)),}done:=make(chanbool)gofunc(){h.handleSession(serverConn,false)done<-true}()// Read bannerbannerReader:=bufio.NewReader(clientConn)_,err:=bannerReader.ReadString('\n')iferr!=nil{t.Fatalf("failed to read banner: %v",err)}// Send TLS Client HellotlsHandshake:=[]byte{0x16,0x03,0x01,0x00,0x61,0x01,0x00,0x00,0x5d,0x03,0x03}_,err=clientConn.Write(tlsHandshake)iferr!=nil{t.Fatalf("failed to write TLS handshake: %v",err)}// The session should terminateselect{case<-done:// Successcase<-time.After(1*time.Second):t.Fatal("session did not terminate after TLS handshake")}}funcTestPeekTLS(t*testing.T){tlsHandshake:=[]byte{0x16,0x03,0x01,0x00,0x61,0x01,0x00,0x00,0x5d,0x03,0x03}reader:=bufio.NewReader(bytes.NewReader(tlsHandshake))peek,err:=reader.Peek(1)iferr!=nil{t.Fatalf("peek failed: %v",err)}ifpeek[0]==0x16{t.Log("Successfully detected TLS handshake byte with Peek")}else{t.Fatalf("expected 0x16, got 0x%02x",peek[0])}}