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  }