diff --git a/gateway/config/config.go b/gateway/config/config.go index c488ac24e..ff6dac5f1 100644 --- a/gateway/config/config.go +++ b/gateway/config/config.go @@ -33,7 +33,7 @@ type DatabaseSchemas map[string]*DatabaseSchema // Key here is resource id --> c type DatabaseRules map[string]*DatabaseRule // Key here is resource id --> clusterId--projectId--resourceType--dbAlias-tableName-rule // DatabasePreparedQueries is a map which stores database prepared query information -type DatabasePreparedQueries map[string]*DatbasePreparedQuery // Key here is resource id --> clusterId--projectId--resourceType--dbAlias-prepareQueryId +type DatabasePreparedQueries map[string]*DatabasePreparedQuery // Key here is resource id --> clusterId--projectId--resourceType--dbAlias-prepareQueryId // EventingSchemas is a map which stores eventing schema information type EventingSchemas map[string]*EventingSchema // Key here is resource id --> clusterId--projectId--resourceType--schemaId @@ -233,7 +233,7 @@ type CrudStub struct { DBName string `json:"name,omitempty" yaml:"name" mapstructure:"name"` // name of the logical database or schema name according to the database type Conn string `json:"conn,omitempty" yaml:"conn" mapstructure:"conn"` Collections map[string]*TableRule `json:"collections,omitempty" yaml:"collections" mapstructure:"collections"` // The key here is table name - PreparedQueries map[string]*DatbasePreparedQuery `json:"preparedQueries,omitempty" yaml:"preparedQueries" mapstructure:"preparedQueries"` + PreparedQueries map[string]*DatabasePreparedQuery `json:"preparedQueries,omitempty" yaml:"preparedQueries" mapstructure:"preparedQueries"` IsPrimary bool `json:"isPrimary" yaml:"isPrimary" mapstructure:"isPrimary"` Enabled bool `json:"enabled" yaml:"enabled" mapstructure:"enabled"` BatchTime int `json:"batchTime,omitempty" yaml:"batchTime" mapstructure:"batchTime"` // time in milli seconds @@ -241,8 +241,8 @@ type CrudStub struct { Limit int64 `json:"limit,omitempty" yaml:"limit" mapstructure:"limit"` // indicates number of records per batch } -// DatbasePreparedQuery stores information of prepared query -type DatbasePreparedQuery struct { +// DatabasePreparedQuery stores information of prepared query +type DatabasePreparedQuery struct { ID string `json:"id" yaml:"id" mapstructure:"id"` SQL string `json:"sql" yaml:"sql" mapstructure:"sql"` Rule *Rule `json:"rule" yaml:"rule" mapstructure:"rule"` diff --git a/gateway/config/generate.go b/gateway/config/generate.go index 972587734..f3d146dce 100644 --- a/gateway/config/generate.go +++ b/gateway/config/generate.go @@ -19,7 +19,7 @@ func GenerateEmptyProject(project *ProjectConfig) *Project { DatabaseConfigs: make(map[string]*DatabaseConfig), DatabaseSchemas: make(map[string]*DatabaseSchema), DatabaseRules: make(map[string]*DatabaseRule), - DatabasePreparedQueries: make(map[string]*DatbasePreparedQuery), + DatabasePreparedQueries: make(map[string]*DatabasePreparedQuery), EventingConfig: new(EventingConfig), EventingSchemas: make(map[string]*EventingSchema), EventingRules: make(map[string]*Rule), diff --git a/gateway/managers/syncman/helpers.go b/gateway/managers/syncman/helpers.go index 0676f4396..23fde0d87 100644 --- a/gateway/managers/syncman/helpers.go +++ b/gateway/managers/syncman/helpers.go @@ -215,7 +215,7 @@ func (s *Manager) validateResource(ctx context.Context, eventType string, resour case config.ResourceDatabasePreparedQuery: switch eventType { case config.ResourceAddEvent, config.ResourceUpdateEvent: - value := new(config.DatbasePreparedQuery) + value := new(config.DatabasePreparedQuery) if err := mapstructure.Decode(resource, value); err != nil { return false, helpers.Logger.LogError(helpers.GetRequestID(ctx), fmt.Sprintf("invalid type provided for resource (%s) expecting (%v) got (%v)", resourceType, "config.Auth{}", reflect.TypeOf(resource)), nil, nil) } @@ -551,9 +551,9 @@ func updateResource(ctx context.Context, eventType string, globalConfig *config. case config.ResourceDatabasePreparedQuery: switch eventType { case config.ResourceAddEvent, config.ResourceUpdateEvent: - value := new(config.DatbasePreparedQuery) + value := new(config.DatabasePreparedQuery) if err := mapstructure.Decode(resource, value); err != nil { - return helpers.Logger.LogError(helpers.GetRequestID(ctx), fmt.Sprintf("invalid type provided for resource (%s) expecting (%v) got (%v)", resourceType, "config.DatbasePreparedQuery{}", reflect.TypeOf(resource)), nil, nil) + return helpers.Logger.LogError(helpers.GetRequestID(ctx), fmt.Sprintf("invalid type provided for resource (%s) expecting (%v) got (%v)", resourceType, "config.DatabasePreparedQuery{}", reflect.TypeOf(resource)), nil, nil) } if project.DatabasePreparedQueries == nil { diff --git a/gateway/managers/syncman/syncman_crud.go b/gateway/managers/syncman/syncman_crud.go index 4184149f0..4f9958219 100644 --- a/gateway/managers/syncman/syncman_crud.go +++ b/gateway/managers/syncman/syncman_crud.go @@ -254,7 +254,7 @@ func (s *Manager) GetPreparedQuery(ctx context.Context, project, dbAlias, id str } // SetPreparedQueries sets database preparedqueries -func (s *Manager) SetPreparedQueries(ctx context.Context, project, dbAlias, id string, v *config.DatbasePreparedQuery, params model.RequestParams) (int, error) { +func (s *Manager) SetPreparedQueries(ctx context.Context, project, dbAlias, id string, v *config.DatabasePreparedQuery, params model.RequestParams) (int, error) { // Check if the request has been hijacked hookResponse := s.integrationMan.InvokeHook(ctx, params) if hookResponse.CheckResponse() { diff --git a/gateway/managers/syncman/syncman_crud_test.go b/gateway/managers/syncman/syncman_crud_test.go index bf9c1c7a8..6e8ee0c16 100644 --- a/gateway/managers/syncman/syncman_crud_test.go +++ b/gateway/managers/syncman/syncman_crud_test.go @@ -355,33 +355,33 @@ func TestManager_GetPreparedQuery(t *testing.T) { }, { name: "dbAlias is empty", - s: &Manager{clusterID: "chicago", projectConfig: &config.Config{Projects: config.Projects{"1": &config.Project{ProjectConfig: &config.ProjectConfig{ID: "1"}, DatabasePreparedQueries: config.DatabasePreparedQueries{config.GenerateResourceID("chicago", "1", config.ResourceDatabasePreparedQuery, "id"): &config.DatbasePreparedQuery{DbAlias: "alias", ID: "id", SQL: "field"}}}}}}, + s: &Manager{clusterID: "chicago", projectConfig: &config.Config{Projects: config.Projects{"1": &config.Project{ProjectConfig: &config.ProjectConfig{ID: "1"}, DatabasePreparedQueries: config.DatabasePreparedQueries{config.GenerateResourceID("chicago", "1", config.ResourceDatabasePreparedQuery, "id"): &config.DatabasePreparedQuery{DbAlias: "alias", ID: "id", SQL: "field"}}}}}}, args: args{ctx: context.Background(), dbAlias: "*", id: "id", project: "1"}, - want: []interface{}{&config.DatbasePreparedQuery{ID: "id", DbAlias: "alias", SQL: "field"}}, + want: []interface{}{&config.DatabasePreparedQuery{ID: "id", DbAlias: "alias", SQL: "field"}}, }, { name: "dbAlias is not present in config", - s: &Manager{projectConfig: &config.Config{Projects: config.Projects{"1": &config.Project{ProjectConfig: &config.ProjectConfig{ID: "1"}, DatabasePreparedQueries: config.DatabasePreparedQueries{config.GenerateResourceID("chicago", "1", config.ResourceDatabasePreparedQuery, "id"): &config.DatbasePreparedQuery{DbAlias: "alias", ID: "id", SQL: "field"}}}}}}, + s: &Manager{projectConfig: &config.Config{Projects: config.Projects{"1": &config.Project{ProjectConfig: &config.ProjectConfig{ID: "1"}, DatabasePreparedQueries: config.DatabasePreparedQueries{config.GenerateResourceID("chicago", "1", config.ResourceDatabasePreparedQuery, "id"): &config.DatabasePreparedQuery{DbAlias: "alias", ID: "id", SQL: "field"}}}}}}, args: args{ctx: context.Background(), dbAlias: "notAlias", id: "id", project: "1"}, wantErr: true, }, { name: "id is not empty but not present in prepared queries", - s: &Manager{projectConfig: &config.Config{Projects: config.Projects{"1": &config.Project{ProjectConfig: &config.ProjectConfig{ID: "1"}, DatabaseConfigs: config.DatabaseConfigs{config.GenerateResourceID("chicago", "1", config.ResourceDatabaseConfig, "alias"): &config.DatabaseConfig{DBName: "DBName", DbAlias: "alias"}}, DatabasePreparedQueries: config.DatabasePreparedQueries{config.GenerateResourceID("chicago", "1", config.ResourceDatabasePreparedQuery, "alias", "id"): &config.DatbasePreparedQuery{DbAlias: "alias", ID: "id", SQL: "field"}}}}}}, + s: &Manager{projectConfig: &config.Config{Projects: config.Projects{"1": &config.Project{ProjectConfig: &config.ProjectConfig{ID: "1"}, DatabaseConfigs: config.DatabaseConfigs{config.GenerateResourceID("chicago", "1", config.ResourceDatabaseConfig, "alias"): &config.DatabaseConfig{DBName: "DBName", DbAlias: "alias"}}, DatabasePreparedQueries: config.DatabasePreparedQueries{config.GenerateResourceID("chicago", "1", config.ResourceDatabasePreparedQuery, "alias", "id"): &config.DatabasePreparedQuery{DbAlias: "alias", ID: "id", SQL: "field"}}}}}}, args: args{ctx: context.Background(), dbAlias: "alias", id: "notKey", project: "1"}, wantErr: true, }, { name: "id is not empty and present in prepared queries", - s: &Manager{clusterID: "chicago", projectConfig: &config.Config{Projects: config.Projects{"1": &config.Project{ProjectConfig: &config.ProjectConfig{ID: "1"}, DatabaseConfigs: config.DatabaseConfigs{config.GenerateResourceID("chicago", "1", config.ResourceDatabaseConfig, "alias"): &config.DatabaseConfig{DBName: "DBName", DbAlias: "alias"}}, DatabasePreparedQueries: config.DatabasePreparedQueries{config.GenerateResourceID("chicago", "1", config.ResourceDatabasePreparedQuery, "alias", "key"): &config.DatbasePreparedQuery{DbAlias: "alias", ID: "key", SQL: "field"}}}}}}, + s: &Manager{clusterID: "chicago", projectConfig: &config.Config{Projects: config.Projects{"1": &config.Project{ProjectConfig: &config.ProjectConfig{ID: "1"}, DatabaseConfigs: config.DatabaseConfigs{config.GenerateResourceID("chicago", "1", config.ResourceDatabaseConfig, "alias"): &config.DatabaseConfig{DBName: "DBName", DbAlias: "alias"}}, DatabasePreparedQueries: config.DatabasePreparedQueries{config.GenerateResourceID("chicago", "1", config.ResourceDatabasePreparedQuery, "alias", "key"): &config.DatabasePreparedQuery{DbAlias: "alias", ID: "key", SQL: "field"}}}}}}, args: args{ctx: context.Background(), dbAlias: "alias", id: "key", project: "1"}, - want: []interface{}{&config.DatbasePreparedQuery{ID: "key", DbAlias: "alias", SQL: "field"}}, + want: []interface{}{&config.DatabasePreparedQuery{ID: "key", DbAlias: "alias", SQL: "field"}}, }, { name: "id is empty", - s: &Manager{clusterID: "chicago", projectConfig: &config.Config{Projects: config.Projects{"1": &config.Project{ProjectConfig: &config.ProjectConfig{ID: "1"}, DatabaseConfigs: config.DatabaseConfigs{config.GenerateResourceID("chicago", "1", config.ResourceDatabaseConfig, "alias"): &config.DatabaseConfig{DBName: "DBName", DbAlias: "alias"}}, DatabasePreparedQueries: config.DatabasePreparedQueries{config.GenerateResourceID("chicago", "1", config.ResourceDatabasePreparedQuery, "alias", "key"): &config.DatbasePreparedQuery{DbAlias: "alias", ID: "key", SQL: "field"}}}}}}, + s: &Manager{clusterID: "chicago", projectConfig: &config.Config{Projects: config.Projects{"1": &config.Project{ProjectConfig: &config.ProjectConfig{ID: "1"}, DatabaseConfigs: config.DatabaseConfigs{config.GenerateResourceID("chicago", "1", config.ResourceDatabaseConfig, "alias"): &config.DatabaseConfig{DBName: "DBName", DbAlias: "alias"}}, DatabasePreparedQueries: config.DatabasePreparedQueries{config.GenerateResourceID("chicago", "1", config.ResourceDatabasePreparedQuery, "alias", "key"): &config.DatabasePreparedQuery{DbAlias: "alias", ID: "key", SQL: "field"}}}}}}, args: args{ctx: context.Background(), dbAlias: "alias", id: "*", project: "1"}, - want: []interface{}{&config.DatbasePreparedQuery{ID: "key", DbAlias: "alias", SQL: "field"}}, + want: []interface{}{&config.DatabasePreparedQuery{ID: "key", DbAlias: "alias", SQL: "field"}}, }, } for _, tt := range tests { @@ -411,7 +411,7 @@ func TestManager_SetPreparedQueries(t *testing.T) { project string dbAlias string id string - v *config.DatbasePreparedQuery + v *config.DatabasePreparedQuery } tests := []struct { name string @@ -423,24 +423,24 @@ func TestManager_SetPreparedQueries(t *testing.T) { }{ { name: "unable to get project", - s: &Manager{projectConfig: &config.Config{Projects: config.Projects{"1": &config.Project{ProjectConfig: &config.ProjectConfig{ID: "1"}, DatabasePreparedQueries: config.DatabasePreparedQueries{"resourceId": &config.DatbasePreparedQuery{DbAlias: "alias", ID: "id", SQL: "field"}}}}}}, - args: args{ctx: context.Background(), dbAlias: "alias", id: "id", project: "2", v: &config.DatbasePreparedQuery{ID: "queryID", SQL: "field"}}, + s: &Manager{projectConfig: &config.Config{Projects: config.Projects{"1": &config.Project{ProjectConfig: &config.ProjectConfig{ID: "1"}, DatabasePreparedQueries: config.DatabasePreparedQueries{"resourceId": &config.DatabasePreparedQuery{DbAlias: "alias", ID: "id", SQL: "field"}}}}}}, + args: args{ctx: context.Background(), dbAlias: "alias", id: "id", project: "2", v: &config.DatabasePreparedQuery{ID: "queryID", SQL: "field"}}, wantErr: true, }, { name: "database not present in config", - s: &Manager{projectConfig: &config.Config{Projects: config.Projects{"1": &config.Project{ProjectConfig: &config.ProjectConfig{ID: "1"}, DatabasePreparedQueries: config.DatabasePreparedQueries{"resourceId": &config.DatbasePreparedQuery{DbAlias: "alias", ID: "id", SQL: "field"}}}}}}, - args: args{ctx: context.Background(), dbAlias: "notAlias", id: "id", project: "1", v: &config.DatbasePreparedQuery{ID: "queryID", SQL: "field"}}, + s: &Manager{projectConfig: &config.Config{Projects: config.Projects{"1": &config.Project{ProjectConfig: &config.ProjectConfig{ID: "1"}, DatabasePreparedQueries: config.DatabasePreparedQueries{"resourceId": &config.DatabasePreparedQuery{DbAlias: "alias", ID: "id", SQL: "field"}}}}}}, + args: args{ctx: context.Background(), dbAlias: "notAlias", id: "id", project: "1", v: &config.DatabasePreparedQuery{ID: "queryID", SQL: "field"}}, wantErr: true, }, { name: "unable to set crud config", s: &Manager{clusterID: "chicago", projectConfig: &config.Config{Projects: config.Projects{"1": &config.Project{ProjectConfig: &config.ProjectConfig{ID: "1"}, DatabaseConfigs: map[string]*config.DatabaseConfig{"resourceId": {DbAlias: "alias"}}}}}}, - args: args{ctx: context.Background(), dbAlias: "alias", id: "queryID", project: "1", v: &config.DatbasePreparedQuery{ID: "queryID", SQL: "field"}}, + args: args{ctx: context.Background(), dbAlias: "alias", id: "queryID", project: "1", v: &config.DatabasePreparedQuery{ID: "queryID", SQL: "field"}}, modulesMockArgs: []mockArgs{ { method: "SetDatabasePreparedQueryConfig", - args: []interface{}{mock.Anything, "1", config.DatabasePreparedQueries{config.GenerateResourceID("chicago", "1", config.ResourceDatabasePreparedQuery, "alias", "queryID"): &config.DatbasePreparedQuery{DbAlias: "alias", ID: "queryID", SQL: "field"}}}, + args: []interface{}{mock.Anything, "1", config.DatabasePreparedQueries{config.GenerateResourceID("chicago", "1", config.ResourceDatabasePreparedQuery, "alias", "queryID"): &config.DatabasePreparedQuery{DbAlias: "alias", ID: "queryID", SQL: "field"}}}, paramsReturned: []interface{}{errors.New("unable to set db config")}, }, }, @@ -449,18 +449,18 @@ func TestManager_SetPreparedQueries(t *testing.T) { { name: "prepared queries are set", s: &Manager{clusterID: "chicago", projectConfig: &config.Config{Projects: config.Projects{"1": &config.Project{DatabaseConfigs: config.DatabaseConfigs{config.GenerateResourceID("chicago", "1", config.ResourceDatabaseConfig, "alias"): &config.DatabaseConfig{DBName: "DBName", DbAlias: "alias"}}, ProjectConfig: &config.ProjectConfig{ID: "1"}}}}}, - args: args{ctx: context.Background(), dbAlias: "alias", id: "queryID", project: "1", v: &config.DatbasePreparedQuery{ID: "queryID", SQL: "field"}}, + args: args{ctx: context.Background(), dbAlias: "alias", id: "queryID", project: "1", v: &config.DatabasePreparedQuery{ID: "queryID", SQL: "field"}}, modulesMockArgs: []mockArgs{ { method: "SetDatabasePreparedQueryConfig", - args: []interface{}{mock.Anything, "1", config.DatabasePreparedQueries{config.GenerateResourceID("chicago", "1", config.ResourceDatabasePreparedQuery, "alias", "queryID"): &config.DatbasePreparedQuery{DbAlias: "alias", ID: "queryID", SQL: "field"}}}, + args: []interface{}{mock.Anything, "1", config.DatabasePreparedQueries{config.GenerateResourceID("chicago", "1", config.ResourceDatabasePreparedQuery, "alias", "queryID"): &config.DatabasePreparedQuery{DbAlias: "alias", ID: "queryID", SQL: "field"}}}, paramsReturned: []interface{}{nil}, }, }, storeMockArgs: []mockArgs{ { method: "SetResource", - args: []interface{}{context.Background(), config.GenerateResourceID("chicago", "1", config.ResourceDatabasePreparedQuery, "alias", "queryID"), &config.DatbasePreparedQuery{DbAlias: "alias", ID: "queryID", SQL: "field"}}, + args: []interface{}{context.Background(), config.GenerateResourceID("chicago", "1", config.ResourceDatabasePreparedQuery, "alias", "queryID"), &config.DatabasePreparedQuery{DbAlias: "alias", ID: "queryID", SQL: "field"}}, paramsReturned: []interface{}{nil}, }, }, @@ -561,7 +561,7 @@ func TestManager_RemovePreparedQueries(t *testing.T) { }, }, DatabasePreparedQueries: config.DatabasePreparedQueries{ - config.GenerateResourceID("chicago", "myproject", config.ResourceDatabasePreparedQuery, "db", "id"): &config.DatbasePreparedQuery{ + config.GenerateResourceID("chicago", "myproject", config.ResourceDatabasePreparedQuery, "db", "id"): &config.DatabasePreparedQuery{ DbAlias: "db", ID: "id", }, @@ -594,7 +594,7 @@ func TestManager_RemovePreparedQueries(t *testing.T) { }, }, DatabasePreparedQueries: config.DatabasePreparedQueries{ - config.GenerateResourceID("chicago", "myproject", config.ResourceDatabasePreparedQuery, "db", "fetchInstruments"): &config.DatbasePreparedQuery{ + config.GenerateResourceID("chicago", "myproject", config.ResourceDatabasePreparedQuery, "db", "fetchInstruments"): &config.DatabasePreparedQuery{ DbAlias: "db", SQL: "select * from instruments;", ID: "fetchInstruments", diff --git a/gateway/modules/auth/handle_crud_test.go b/gateway/modules/auth/handle_crud_test.go index e4493dc46..48039d939 100644 --- a/gateway/modules/auth/handle_crud_test.go +++ b/gateway/modules/auth/handle_crud_test.go @@ -346,7 +346,7 @@ func TestIsPreparedQueryAuthorised(t *testing.T) { } project := "project" dbPrepRules := config.DatabasePreparedQueries{ - config.GenerateResourceID("chicago", "project", config.ResourceDatabasePreparedQuery, "mongo", "tweet"): &config.DatbasePreparedQuery{Rule: &config.Rule{Rule: "allow", Eval: "Eval", Type: "Type", DB: "mongo", Col: "tweet", Find: map[string]interface{}{"findstring1": "inteface1", "findstring2": "interface2"}}}, + config.GenerateResourceID("chicago", "project", config.ResourceDatabasePreparedQuery, "mongo", "tweet"): &config.DatabasePreparedQuery{Rule: &config.Rule{Rule: "allow", Eval: "Eval", Type: "Type", DB: "mongo", Col: "tweet", Find: map[string]interface{}{"findstring1": "inteface1", "findstring2": "interface2"}}}, } auth := Init("chicago", "1", &crud.Module{}, nil, nil) if er := auth.SetConfig(context.TODO(), "local", &config.ProjectConfig{ID: project, Secrets: []*config.Secret{}}, config.DatabaseRules{}, dbPrepRules, config.FileStoreRules{}, config.Services{}, config.EventingRules{}); er != nil { @@ -374,7 +374,7 @@ func Test_authenticatePreparedQueryRequest(t *testing.T) { // TODO: Add test cases. { name: "Successful Test for authenticate Prepared Query Request", dbAlias: "mongo", id: "tweet", token: "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlbjEiOiJ0b2tlbjF2YWx1ZSIsInRva2VuMiI6InRva2VuMnZhbHVlIn0.h3jo37fYvnf55A63N-uCyLj9tueFwlGxEGCsf7gCjDc", - module: &Module{clusterID: "chicago", dbPrepQueryRules: config.DatabasePreparedQueries{config.GenerateResourceID("chicago", "project", config.ResourceDatabasePreparedQuery, "mongo", "tweet"): &config.DatbasePreparedQuery{ID: "tweet", Rule: &config.Rule{Rule: "allow", Eval: "Eval", Type: "Type", DB: "mongo", Col: "tweet", Find: map[string]interface{}{"findstring1": "inteface1", "findstring2": "interface2"}}}}}, + module: &Module{clusterID: "chicago", dbPrepQueryRules: config.DatabasePreparedQueries{config.GenerateResourceID("chicago", "project", config.ResourceDatabasePreparedQuery, "mongo", "tweet"): &config.DatabasePreparedQuery{ID: "tweet", Rule: &config.Rule{Rule: "allow", Eval: "Eval", Type: "Type", DB: "mongo", Col: "tweet", Find: map[string]interface{}{"findstring1": "inteface1", "findstring2": "interface2"}}}}}, project: "project", wantRule: &config.Rule{Rule: "allow", Eval: "Eval", Type: "Type", DB: "mongo", Col: "tweet", Find: map[string]interface{}{"findstring1": "inteface1", "findstring2": "interface2"}}, wantAuth: nil, @@ -382,7 +382,7 @@ func Test_authenticatePreparedQueryRequest(t *testing.T) { }, { name: "Unsuccessful Test-authenticate Prepared Query Request", dbAlias: "pongo", id: "tweet", token: "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlbjEiOiJ0b2tlbjF2YWx1ZSIsInRva2VuMiI6InRva2VuMnZhbHVlIn0.h3jo37fYvnf55A63N-uCyLj9tueFwlGxEGCsf7gCjDc", - module: &Module{clusterID: "chicago", dbPrepQueryRules: config.DatabasePreparedQueries{config.GenerateResourceID("chicago", "project", config.ResourceDatabasePreparedQuery, "mongo", "tweet"): &config.DatbasePreparedQuery{ID: "tweet", Rule: &config.Rule{Rule: "allow", Eval: "Eval", Type: "Type", DB: "mongo", Col: "tweet", Find: map[string]interface{}{"findstring1": "inteface1", "findstring2": "interface2"}}}}}, + module: &Module{clusterID: "chicago", dbPrepQueryRules: config.DatabasePreparedQueries{config.GenerateResourceID("chicago", "project", config.ResourceDatabasePreparedQuery, "mongo", "tweet"): &config.DatabasePreparedQuery{ID: "tweet", Rule: &config.Rule{Rule: "allow", Eval: "Eval", Type: "Type", DB: "mongo", Col: "tweet", Find: map[string]interface{}{"findstring1": "inteface1", "findstring2": "interface2"}}}}}, project: "project", wantRule: nil, wantAuth: nil, @@ -417,21 +417,21 @@ func Test_getPrepareQueryRule(t *testing.T) { }{ { name: "Successful Test to get Prepare Query Rule", dbAlias: "mongo", id: "tweet", - module: &Module{clusterID: "chicago", dbPrepQueryRules: config.DatabasePreparedQueries{config.GenerateResourceID("chicago", "project", config.ResourceDatabasePreparedQuery, "mongo", "tweet"): &config.DatbasePreparedQuery{ID: "tweet", Rule: &config.Rule{Rule: "allow", Eval: "Eval", Type: "Type", DB: "mongo", Col: "tweet", Find: map[string]interface{}{"findstring1": "inteface1", "findstring2": "interface2"}}}}}, + module: &Module{clusterID: "chicago", dbPrepQueryRules: config.DatabasePreparedQueries{config.GenerateResourceID("chicago", "project", config.ResourceDatabasePreparedQuery, "mongo", "tweet"): &config.DatabasePreparedQuery{ID: "tweet", Rule: &config.Rule{Rule: "allow", Eval: "Eval", Type: "Type", DB: "mongo", Col: "tweet", Find: map[string]interface{}{"findstring1": "inteface1", "findstring2": "interface2"}}}}}, project: "project", want: &config.Rule{Rule: "allow", Eval: "Eval", Type: "Type", DB: "mongo", Col: "tweet", Find: map[string]interface{}{"findstring1": "inteface1", "findstring2": "interface2"}}, wantErr: false, }, { name: "Unsuccessful Test- Prepared Query Rule Request", dbAlias: "pongo", id: "tweet", - module: &Module{clusterID: "chicago", dbPrepQueryRules: config.DatabasePreparedQueries{config.GenerateResourceID("chicago", "project", config.ResourceDatabasePreparedQuery, "mongo", "tweet"): &config.DatbasePreparedQuery{ID: "tweet", Rule: &config.Rule{Rule: "allow", Eval: "Eval", Type: "Type", DB: "mongo", Col: "tweet", Find: map[string]interface{}{"findstring1": "inteface1", "findstring2": "interface2"}}}}}, + module: &Module{clusterID: "chicago", dbPrepQueryRules: config.DatabasePreparedQueries{config.GenerateResourceID("chicago", "project", config.ResourceDatabasePreparedQuery, "mongo", "tweet"): &config.DatabasePreparedQuery{ID: "tweet", Rule: &config.Rule{Rule: "allow", Eval: "Eval", Type: "Type", DB: "mongo", Col: "tweet", Find: map[string]interface{}{"findstring1": "inteface1", "findstring2": "interface2"}}}}}, project: "project", want: nil, wantErr: true, }, { name: "Successful Test to get default Prepare Query Rule", dbAlias: "mongo", id: "tweet", - module: &Module{clusterID: "chicago", dbPrepQueryRules: config.DatabasePreparedQueries{config.GenerateResourceID("chicago", "project", config.ResourceDatabasePreparedQuery, "mongo", "tweet"): &config.DatbasePreparedQuery{ID: "tweet", Rule: &config.Rule{Rule: "allow", Eval: "Eval", Type: "Type", DB: "mongo", Col: "default", Find: map[string]interface{}{"findstring1": "inteface1", "findstring2": "interface2"}}}}}, + module: &Module{clusterID: "chicago", dbPrepQueryRules: config.DatabasePreparedQueries{config.GenerateResourceID("chicago", "project", config.ResourceDatabasePreparedQuery, "mongo", "tweet"): &config.DatabasePreparedQuery{ID: "tweet", Rule: &config.Rule{Rule: "allow", Eval: "Eval", Type: "Type", DB: "mongo", Col: "default", Find: map[string]interface{}{"findstring1": "inteface1", "findstring2": "interface2"}}}}}, project: "project", want: &config.Rule{Rule: "allow", Eval: "Eval", Type: "Type", DB: "mongo", Col: "default", Find: map[string]interface{}{"findstring1": "inteface1", "findstring2": "interface2"}}, wantErr: false, diff --git a/gateway/server/handlers/config_crud.go b/gateway/server/handlers/config_crud.go index 5071ce6b0..a1f8b8d15 100644 --- a/gateway/server/handlers/config_crud.go +++ b/gateway/server/handlers/config_crud.go @@ -297,7 +297,7 @@ func HandleSetPreparedQueries(adminMan *admin.Manager, syncman *syncman.Manager) projectID := vars["project"] id := vars["id"] - v := config.DatbasePreparedQuery{} + v := config.DatabasePreparedQuery{} _ = json.NewDecoder(r.Body).Decode(&v) defer utils.CloseTheCloser(r.Body)