github.com/Uptycs/basequery-go@v0.8.0/plugin/config/config_test.go (about) 1 package config 2 3 import ( 4 "context" 5 "errors" 6 "testing" 7 8 "github.com/Uptycs/basequery-go/gen/osquery" 9 "github.com/stretchr/testify/assert" 10 ) 11 12 var StatusOK = osquery.ExtensionStatus{Code: 0, Message: "OK"} 13 14 func TestConfigPlugin(t *testing.T) { 15 var called bool 16 plugin := NewPlugin("mock", func(context.Context) (map[string]string, error) { 17 called = true 18 return map[string]string{ 19 "conf1": "foobar", 20 }, nil 21 }, nil) 22 23 // Basic methods 24 assert.Equal(t, "config", plugin.RegistryName()) 25 assert.Equal(t, "mock", plugin.Name()) 26 assert.Equal(t, StatusOK, plugin.Ping()) 27 assert.Equal(t, osquery.ExtensionPluginResponse{}, plugin.Routes()) 28 29 // Call with good action 30 resp := plugin.Call(context.Background(), osquery.ExtensionPluginRequest{"action": "genConfig"}) 31 assert.True(t, called) 32 assert.Equal(t, &StatusOK, resp.Status) 33 assert.Equal(t, osquery.ExtensionPluginResponse{{"conf1": "foobar"}}, resp.Response) 34 } 35 36 func TestConfigPluginErrors(t *testing.T) { 37 var called bool 38 plugin := NewPlugin("mock", func(context.Context) (map[string]string, error) { 39 called = true 40 return nil, errors.New("foobar") 41 }, nil) 42 43 // Call with bad actions 44 assert.Equal(t, int32(1), plugin.Call(context.Background(), osquery.ExtensionPluginRequest{}).Status.Code) 45 assert.False(t, called) 46 assert.Equal(t, int32(1), plugin.Call(context.Background(), osquery.ExtensionPluginRequest{"action": "bad"}).Status.Code) 47 assert.False(t, called) 48 49 // Call with good action but generate fails 50 resp := plugin.Call(context.Background(), osquery.ExtensionPluginRequest{"action": "genConfig"}) 51 assert.True(t, called) 52 assert.Equal(t, int32(1), resp.Status.Code) 53 assert.Equal(t, "error getting config: foobar", resp.Status.Message) 54 }