mirror of
https://github.com/status-im/status-go.git
synced 2025-02-25 21:25:33 +00:00
* 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>
42 lines
1.4 KiB
Go
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())
|
|
}
|