status-im/status-go

View on GitHub
appmetrics/validators_test.go

Summary

Maintainability
A
0 mins
Test Coverage
package appmetrics

import (
    "testing"

    "github.com/stretchr/testify/require"
    "github.com/xeipuuv/gojsonschema"
)

func TestNavigateToCofxSchema(t *testing.T) {
    NavigateToCofxLoader := gojsonschema.NewGoLoader(NavigateToCofxSchema)
    schema, _ := gojsonschema.NewSchema(NavigateToCofxLoader)

    // test correct json
    validSampleVal := `{"view_id": "less-than-32", "params": {"screen": ""}}`
    doc := gojsonschema.NewStringLoader(validSampleVal)
    result, err := schema.Validate(doc)
    require.NoError(t, err)
    require.True(t, result.Valid())

    // test in-correct json
    invalidSampleVal := `{"view_id": "more-than-32-chars-3232323232323232323232", "params": {"screen": "not-login"}}`
    doc = gojsonschema.NewStringLoader(invalidSampleVal)
    result, err = schema.Validate(doc)
    require.NoError(t, err)
    require.False(t, result.Valid())

    // test extra params
    extraParamsVal := `{"view_id": "valid-view", "params": {"screen": "login"}, "fishy-key": "fishy-val"}`
    doc = gojsonschema.NewStringLoader(extraParamsVal)
    result, err = schema.Validate(doc)
    require.NoError(t, err)
    require.False(t, result.Valid())

    // test less params
    lessParamsVal := `{"view_id": "valid-view"}`
    doc = gojsonschema.NewStringLoader(lessParamsVal)
    result, err = schema.Validate(doc)
    require.NoError(t, err)
    require.False(t, result.Valid())
}