github.com/status-im/status-go@v1.1.0/appmetrics/validators_test.go (about)

     1  package appmetrics
     2  
     3  import (
     4  	"testing"
     5  
     6  	"github.com/stretchr/testify/require"
     7  	"github.com/xeipuuv/gojsonschema"
     8  )
     9  
    10  func TestNavigateToCofxSchema(t *testing.T) {
    11  	NavigateToCofxLoader := gojsonschema.NewGoLoader(NavigateToCofxSchema)
    12  	schema, _ := gojsonschema.NewSchema(NavigateToCofxLoader)
    13  
    14  	// test correct json
    15  	validSampleVal := `{"view_id": "less-than-32", "params": {"screen": ""}}`
    16  	doc := gojsonschema.NewStringLoader(validSampleVal)
    17  	result, err := schema.Validate(doc)
    18  	require.NoError(t, err)
    19  	require.True(t, result.Valid())
    20  
    21  	// test in-correct json
    22  	invalidSampleVal := `{"view_id": "more-than-32-chars-3232323232323232323232", "params": {"screen": "not-login"}}`
    23  	doc = gojsonschema.NewStringLoader(invalidSampleVal)
    24  	result, err = schema.Validate(doc)
    25  	require.NoError(t, err)
    26  	require.False(t, result.Valid())
    27  
    28  	// test extra params
    29  	extraParamsVal := `{"view_id": "valid-view", "params": {"screen": "login"}, "fishy-key": "fishy-val"}`
    30  	doc = gojsonschema.NewStringLoader(extraParamsVal)
    31  	result, err = schema.Validate(doc)
    32  	require.NoError(t, err)
    33  	require.False(t, result.Valid())
    34  
    35  	// test less params
    36  	lessParamsVal := `{"view_id": "valid-view"}`
    37  	doc = gojsonschema.NewStringLoader(lessParamsVal)
    38  	result, err = schema.Validate(doc)
    39  	require.NoError(t, err)
    40  	require.False(t, result.Valid())
    41  }