package minecraft import ( "testing" "github.com/influxdata/telegraf/plugins/inputs/minecraft/internal/rcon" ) type MockRCONClient struct { Result *rcon.Packet Err error } func (m *MockRCONClient) Authorize(password string) (*rcon.Packet, error) { return m.Result, m.Err } func (m *MockRCONClient) Execute(command string) (*rcon.Packet, error) { return m.Result, m.Err } // TestRCONGather test the RCON gather function func TestRCONGather(t *testing.T) { mock := &MockRCONClient{ Result: &rcon.Packet{ Body: `Showing 1 tracked objective(s) for divislight:- jumps: 178 (jumps)Showing 7 tracked objective(s) for mauxlaim:- total_kills: 39 (total_kills)- "howdy doody": 37 (dalevel)- howdy: 37 (lvl)- jumps: 1290 (jumps)- iron_pickaxe: 284 (iron_pickaxe)- cow_kills: 1 (cow_kills)- "asdf": 37 (😂)Showing 5 tracked objective(s) for torham:- total_kills: 29 (total_kills)- "howdy doody": 33 (dalevel)- howdy: 33 (lvl)- jumps: 263 (jumps)- "asdf": 33 (😂)`, }, Err: nil, } want := []string{ ` 1 tracked objective(s) for divislight:- jumps: 178 (jumps)`, ` 7 tracked objective(s) for mauxlaim:- total_kills: 39 (total_kills)- "howdy doody": 37 (dalevel)- howdy: 37 (lvl)- jumps: 1290 (jumps)- iron_pickaxe: 284 (iron_pickaxe)- cow_kills: 1 (cow_kills)- "asdf": 37 (😂)`, ` 5 tracked objective(s) for torham:- total_kills: 29 (total_kills)- "howdy doody": 33 (dalevel)- howdy: 33 (lvl)- jumps: 263 (jumps)- "asdf": 33 (😂)`, } client := &RCON{ Server: "craftstuff.com", Port: "2222", Password: "pass", client: mock, } d := defaultClientProducer{} got, err := client.Gather(d) if err != nil { t.Fatalf("Gather returned an error. Error %s\n", err) } for i, s := range got { if want[i] != s { t.Fatalf("Got %s at index %d, want %s at index %d", s, i, want[i], i) } } client.client = &MockRCONClient{ Result: &rcon.Packet{ Body: "", }, Err: nil, } got, err = client.Gather(defaultClientProducer{}) if err != nil { t.Fatalf("Gather returned an error. Error %s\n", err) } if len(got) != 0 { t.Fatalf("Expected empty slice of length %d, got slice of length %d", 0, len(got)) } }