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 }