From c9b130a79237fa2b5dd3fd14a52d98bc97732581 Mon Sep 17 00:00:00 2001 From: MaineK00n Date: Thu, 15 Oct 2020 09:34:07 +0900 Subject: [PATCH] add Test_updatePortStatus --- scan/base_test.go | 80 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 80 insertions(+) diff --git a/scan/base_test.go b/scan/base_test.go index 633d5910..6db9d524 100644 --- a/scan/base_test.go +++ b/scan/base_test.go @@ -363,6 +363,86 @@ func Test_detectScanDest(t *testing.T) { } } +func Test_updatePortStatus(t *testing.T) { + type args struct { + l base + open []string + } + tests := []struct { + name string + args args + expect models.Packages + }{ + {name: "nil_affected_procs", + args: args{ + l: base{osPackages: osPackages{ + Packages: models.Packages{"libc-bin": models.Package{Name: "libc-bin"}}, + }}, + open: []string{"127.0.0.1:22"}}, + expect: models.Packages{"libc-bin": models.Package{Name: "libc-bin"}}}, + {name: "nil_listen_ports", + args: args{ + l: base{osPackages: osPackages{ + Packages: models.Packages{"bash": models.Package{Name: "bash", AffectedProcs: []models.AffectedProcess{{PID: "1", Name: "bash"}}}}, + }}, + open: []string{"127.0.0.1:22"}}, + expect: models.Packages{"bash": models.Package{Name: "bash", AffectedProcs: []models.AffectedProcess{{PID: "1", Name: "bash"}}}}}, + {name: "update_match_single_address", + args: args{ + l: base{osPackages: osPackages{ + Packages: models.Packages{"libc6": models.Package{Name: "libc6", AffectedProcs: []models.AffectedProcess{{PID: "1", Name: "bash"}, {PID: "75", Name: "sshd", ListenPorts: []models.ListenPorts{{Address: "127.0.0.1", Port: "22"}}}}}}, + }}, + open: []string{"127.0.0.1:22"}}, + expect: models.Packages{"libc6": models.Package{Name: "libc6", AffectedProcs: []models.AffectedProcess{{PID: "1", Name: "bash"}, {PID: "75", Name: "sshd", ListenPorts: []models.ListenPorts{{Address: "127.0.0.1", Port: "22", PortScanSuccessOn: []string{"127.0.0.1"}}}}}}}}, + {name: "update_match_multi_address", + args: args{ + l: base{osPackages: osPackages{ + Packages: models.Packages{"libc6": models.Package{Name: "libc6", AffectedProcs: []models.AffectedProcess{{PID: "1", Name: "bash"}, {PID: "75", Name: "sshd", ListenPorts: []models.ListenPorts{{Address: "127.0.0.1", Port: "22"}, {Address: "192.168.1.1", Port: "22"}}}}}}, + }}, + open: []string{"127.0.0.1:22", "192.168.1.1:22"}}, + expect: models.Packages{"libc6": models.Package{Name: "libc6", AffectedProcs: []models.AffectedProcess{{PID: "1", Name: "bash"}, {PID: "75", Name: "sshd", ListenPorts: []models.ListenPorts{ + {Address: "127.0.0.1", Port: "22", PortScanSuccessOn: []string{"127.0.0.1"}}, + {Address: "192.168.1.1", Port: "22", PortScanSuccessOn: []string{"192.168.1.1"}}, + }}}}}}, + {name: "update_match_asterisk", + args: args{ + l: base{osPackages: osPackages{ + Packages: models.Packages{"libc6": models.Package{Name: "libc6", AffectedProcs: []models.AffectedProcess{{PID: "1", Name: "bash"}, {PID: "75", Name: "sshd", ListenPorts: []models.ListenPorts{{Address: "*", Port: "22"}}}}}}, + }}, + open: []string{"127.0.0.1:22", "127.0.0.1:80", "192.168.1.1:22"}}, + expect: models.Packages{"libc6": models.Package{Name: "libc6", AffectedProcs: []models.AffectedProcess{{PID: "1", Name: "bash"}, {PID: "75", Name: "sshd", ListenPorts: []models.ListenPorts{ + {Address: "*", Port: "22", PortScanSuccessOn: []string{"127.0.0.1", "192.168.1.1"}}, + }}}}}}, + {name: "update_multi_packages", + args: args{ + l: base{osPackages: osPackages{ + Packages: models.Packages{ + "packa": models.Package{Name: "packa", AffectedProcs: []models.AffectedProcess{{PID: "75", Name: "sshd", ListenPorts: []models.ListenPorts{{Address: "127.0.0.1", Port: "80"}}}}}, + "packb": models.Package{Name: "packb", AffectedProcs: []models.AffectedProcess{{PID: "75", Name: "sshd", ListenPorts: []models.ListenPorts{{Address: "127.0.0.1", Port: "22"}}}}}, + "packc": models.Package{Name: "packc", AffectedProcs: []models.AffectedProcess{{PID: "75", Name: "sshd", ListenPorts: []models.ListenPorts{{Address: "127.0.0.1", Port: "22"}, {Address: "192.168.1.1", Port: "22"}}}}}, + "packd": models.Package{Name: "packd", AffectedProcs: []models.AffectedProcess{{PID: "75", Name: "sshd", ListenPorts: []models.ListenPorts{{Address: "*", Port: "22"}}}}}, + }, + }}, + open: []string{"127.0.0.1:22", "192.168.1.1:22"}}, + expect: models.Packages{ + "packa": models.Package{Name: "packa", AffectedProcs: []models.AffectedProcess{{PID: "75", Name: "sshd", ListenPorts: []models.ListenPorts{{Address: "127.0.0.1", Port: "80", PortScanSuccessOn: []string{}}}}}}, + "packb": models.Package{Name: "packb", AffectedProcs: []models.AffectedProcess{{PID: "75", Name: "sshd", ListenPorts: []models.ListenPorts{{Address: "127.0.0.1", Port: "22", PortScanSuccessOn: []string{"127.0.0.1"}}}}}}, + "packc": models.Package{Name: "packc", AffectedProcs: []models.AffectedProcess{{PID: "75", Name: "sshd", ListenPorts: []models.ListenPorts{{Address: "127.0.0.1", Port: "22", PortScanSuccessOn: []string{"127.0.0.1"}}, {Address: "192.168.1.1", Port: "22", PortScanSuccessOn: []string{"192.168.1.1"}}}}}}, + "packd": models.Package{Name: "packd", AffectedProcs: []models.AffectedProcess{{PID: "75", Name: "sshd", ListenPorts: []models.ListenPorts{{Address: "*", Port: "22", PortScanSuccessOn: []string{"127.0.0.1", "192.168.1.1"}}}}}}, + }, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + tt.args.l.updatePortStatus(tt.args.open) + if !reflect.DeepEqual(tt.args.l.osPackages.Packages, tt.expect) { + t.Errorf("l.updatePortStatus() = %v, want %v", tt.args.l.osPackages.Packages, tt.expect) + } + }) + } +} + func Test_matchListenPorts(t *testing.T) { type args struct { open []string