You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
55 lines
1.3 KiB
55 lines
1.3 KiB
package pipeline
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/dop251/goja"
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
func TestGojaGetBool(t *testing.T) {
|
|
r, err := getRuntime([]byte(`{"ax": true}`))
|
|
require.NoError(t, err)
|
|
val, err := r.getBool("x.ax")
|
|
require.NoError(t, err)
|
|
require.True(t, val)
|
|
}
|
|
|
|
func TestGojaGetFloat64(t *testing.T) {
|
|
r, err := getRuntime([]byte(`{"ax": 3}`))
|
|
require.NoError(t, err)
|
|
val, err := r.getFloat64("x.ax")
|
|
require.NoError(t, err)
|
|
require.Equal(t, 3.0, val)
|
|
}
|
|
|
|
func TestGojaGetString(t *testing.T) {
|
|
r, err := getRuntime([]byte(`{"ax": "test"}`))
|
|
require.NoError(t, err)
|
|
val, err := r.getString("x.ax")
|
|
require.NoError(t, err)
|
|
require.Equal(t, "test", val)
|
|
}
|
|
|
|
func TestGojaInvalidReturnValue(t *testing.T) {
|
|
r, err := getRuntime([]byte(`{"ax": "test"}`))
|
|
require.NoError(t, err)
|
|
_, err = r.getBool("x.ax")
|
|
require.Error(t, err)
|
|
}
|
|
|
|
func TestGojaIInterrupt(t *testing.T) {
|
|
r, err := getRuntime([]byte(`{}`))
|
|
require.NoError(t, err)
|
|
_, err = r.getBool("while (true) {}")
|
|
var interrupted *goja.InterruptedError
|
|
require.ErrorAs(t, err, &interrupted)
|
|
}
|
|
|
|
func TestGojaIMaxStack(t *testing.T) {
|
|
r, err := getRuntime([]byte(`{}`))
|
|
require.NoError(t, err)
|
|
_, err = r.getBool("function test() {test()}; test();")
|
|
// TODO: strange <nil> error returned here, need to investigate what is it.
|
|
require.Error(t, err)
|
|
}
|
|
|