status-go/appmetrics/validators_test.go
Shivek Khurana 1097b14a7f
🎭 📊 Anonymous Metrics V0 (#2170)
* Migrations in place, how to run them?

* Remove down migrations and touch database.go

* Database and Database Test package in place, added functions to get and store app metrics

* make generate output

* Minor bug fix on app metrics insert and select

* Add a validation layer to restrict what can be saved in the database

* Make validation more terse, throw error if schema doesn't exist, expose appmetrics service

* service updates

* Compute all errors before sending them out

* Trying to bring a closjure to appmetrics go

* Expose appmetrics via an api, skip fancy

* Address value as Jason Dawt Rawmasage to ease parsing

* Introduce a buffered chan with magic cap of 8 to minimize writes to DB. Tests for service and API. Also expose GetAppMetrics function.

* Lint issues

* Remove autoincrement, undo waku.json changes, fix error being shadowed, return nil where nil ought to be returned, get rid of buffered channel

* Bump migration number

* Fix API factory usage

* Add comment re:json.RawMessage instead of strings

* Get rid of test vars, throw save error inside the loop

* Update version

Co-authored-by: Samuel Hawksby-Robinson <samuel@samyoul.com>
2021-03-17 18:09:28 +05:30

42 lines
1.4 KiB
Go

package appmetrics
import (
"testing"
"github.com/stretchr/testify/require"
"github.com/xeipuuv/gojsonschema"
)
func TestNavigationNavigateToCofxSchema(t *testing.T) {
NavigationNavigateToCofxLoader := gojsonschema.NewGoLoader(NavigationNavigateToCofxSchema)
schema, _ := gojsonschema.NewSchema(NavigationNavigateToCofxLoader)
// test correct json
validSampleVal := `{"view_id": "less-than-16", "params": {"screen": "allowed-screen-name"}}`
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-16-chars", "params": {"screen": "not-allowed-screen-name"}}`
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": "allowed-screen-name"}, "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())
}