Switch to new test harness
This commit is contained in:
@@ -1,7 +1,6 @@
|
||||
package protocol
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"testing"
|
||||
)
|
||||
|
||||
@@ -31,73 +30,124 @@ func TestDetectSSH(t *testing.T) {
|
||||
// 5. A simple HTTP request
|
||||
httpBanner := []byte("GET / HTTP/1.1\r\nHost: example.com\r\n\r\n")
|
||||
|
||||
t.Run("OpenSSH client", func(t *testing.T) {
|
||||
p, _, err := Detect(Server, openSSHBanner, 0, 22)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
return
|
||||
}
|
||||
t.Logf("detected %s version %s", p.Name, p.Version)
|
||||
if p.Name != ProtocolSSH {
|
||||
t.Fatalf("expected ssh protocol, got %s", p.Name)
|
||||
return
|
||||
}
|
||||
testRunner(t, []*testCase{
|
||||
{
|
||||
Name: "OpenSSH client",
|
||||
Direction: Client,
|
||||
Data: openSSHBanner,
|
||||
DstPort: 22,
|
||||
WantProto: ProtocolSSH,
|
||||
WantConfidence: .95,
|
||||
},
|
||||
{
|
||||
Name: "OpenSSH server",
|
||||
Direction: Server,
|
||||
Data: openSSHBanner,
|
||||
SrcPort: 22,
|
||||
WantProto: ProtocolSSH,
|
||||
WantConfidence: .95,
|
||||
},
|
||||
{
|
||||
Name: "OpenSSH server with banner",
|
||||
Direction: Server,
|
||||
Data: preBannerSSH,
|
||||
SrcPort: 22,
|
||||
WantProto: ProtocolSSH,
|
||||
WantConfidence: .95,
|
||||
},
|
||||
{
|
||||
Name: "Dropbear server",
|
||||
Direction: Server,
|
||||
Data: dropbearBanner,
|
||||
SrcPort: 22,
|
||||
WantProto: ProtocolSSH,
|
||||
WantConfidence: .95,
|
||||
},
|
||||
{
|
||||
Name: "Invalid MySQL",
|
||||
Direction: Server,
|
||||
Data: mysqlBanner,
|
||||
SrcPort: 3306,
|
||||
WantError: ErrUnknown,
|
||||
},
|
||||
{
|
||||
Name: "Invalid HTTP",
|
||||
Direction: Client,
|
||||
Data: httpBanner,
|
||||
DstPort: 80,
|
||||
WantError: ErrUnknown,
|
||||
},
|
||||
})
|
||||
|
||||
t.Run("OpenSSH server", func(t *testing.T) {
|
||||
p, _, err := Detect(Server, openSSHBanner, 0, 22)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
return
|
||||
}
|
||||
t.Logf("detected %s version %s", p.Name, p.Version)
|
||||
if p.Name != ProtocolSSH {
|
||||
t.Fatalf("expected ssh protocol, got %s", p.Name)
|
||||
return
|
||||
}
|
||||
})
|
||||
/*
|
||||
t.Run("OpenSSH client", func(t *testing.T) {
|
||||
p, c, err := Detect(Server, openSSHBanner, 0, 22)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
return
|
||||
}
|
||||
t.Logf("detected %s version %s confidence %g%%", p.Name, p.Version, c*100)
|
||||
if p.Name != ProtocolSSH {
|
||||
t.Fatalf("expected ssh protocol, got %s", p.Name)
|
||||
return
|
||||
}
|
||||
})
|
||||
|
||||
t.Run("OpenSSH server with banner", func(t *testing.T) {
|
||||
p, _, err := Detect(Server, preBannerSSH, 0, 22)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
return
|
||||
}
|
||||
t.Logf("detected %s version %s", p.Name, p.Version)
|
||||
if p.Name != ProtocolSSH {
|
||||
t.Fatalf("expected ssh protocol, got %s", p.Name)
|
||||
return
|
||||
}
|
||||
})
|
||||
t.Run("OpenSSH server", func(t *testing.T) {
|
||||
p, c, err := Detect(Server, openSSHBanner, 0, 22)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
return
|
||||
}
|
||||
t.Logf("detected %s version %s confidence %g%%", p.Name, p.Version, c*100)
|
||||
if p.Name != ProtocolSSH {
|
||||
t.Fatalf("expected ssh protocol, got %s", p.Name)
|
||||
return
|
||||
}
|
||||
})
|
||||
|
||||
t.Run("Dropbear server", func(t *testing.T) {
|
||||
p, _, err := Detect(Server, dropbearBanner, 0, 22)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
return
|
||||
}
|
||||
t.Logf("detected %s version %s", p.Name, p.Version)
|
||||
if p.Name != ProtocolSSH {
|
||||
t.Fatalf("expected ssh protocol, got %s", p.Name)
|
||||
return
|
||||
}
|
||||
})
|
||||
t.Run("OpenSSH server with banner", func(t *testing.T) {
|
||||
p, c, err := Detect(Server, preBannerSSH, 0, 22)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
return
|
||||
}
|
||||
t.Logf("detected %s version %s confidence %g%%", p.Name, p.Version, c*100)
|
||||
if p.Name != ProtocolSSH {
|
||||
t.Fatalf("expected ssh protocol, got %s", p.Name)
|
||||
return
|
||||
}
|
||||
})
|
||||
|
||||
t.Run("Invalid MySQL banner", func(t *testing.T) {
|
||||
_, _, err := Detect(Server, mysqlBanner, 0, 3306)
|
||||
if !errors.Is(err, ErrUnknown) {
|
||||
t.Fatalf("expected unknown format, got error %T: %q", err, err)
|
||||
} else {
|
||||
t.Logf("error %q, as expected", err)
|
||||
}
|
||||
})
|
||||
t.Run("Dropbear server", func(t *testing.T) {
|
||||
p, c, err := Detect(Server, dropbearBanner, 0, 22)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
return
|
||||
}
|
||||
t.Logf("detected %s version %s confidence %g%%", p.Name, p.Version, c*100)
|
||||
if p.Name != ProtocolSSH {
|
||||
t.Fatalf("expected ssh protocol, got %s", p.Name)
|
||||
return
|
||||
}
|
||||
})
|
||||
|
||||
t.Run("Invalid HTTP banner", func(t *testing.T) {
|
||||
_, _, err := Detect(Server, httpBanner, 0, 80)
|
||||
if !errors.Is(err, ErrUnknown) {
|
||||
t.Fatalf("expected unknown format, got error %T: %q", err, err)
|
||||
} else {
|
||||
t.Logf("error %q, as expected", err)
|
||||
}
|
||||
})
|
||||
t.Run("Invalid MySQL banner", func(t *testing.T) {
|
||||
_, _, err := Detect(Server, mysqlBanner, 0, 3306)
|
||||
if !errors.Is(err, ErrUnknown) {
|
||||
t.Fatalf("expected unknown format, got error %T: %q", err, err)
|
||||
} else {
|
||||
t.Logf("error %q, as expected", err)
|
||||
}
|
||||
})
|
||||
|
||||
t.Run("Invalid HTTP banner", func(t *testing.T) {
|
||||
_, _, err := Detect(Server, httpBanner, 0, 80)
|
||||
if !errors.Is(err, ErrUnknown) {
|
||||
t.Fatalf("expected unknown format, got error %T: %q", err, err)
|
||||
} else {
|
||||
t.Logf("error %q, as expected", err)
|
||||
}
|
||||
})
|
||||
*/
|
||||
}
|
||||
|
Reference in New Issue
Block a user