feat(store,repository): add more integration tests
Cadoles/bouncer/pipeline/head This commit looks good
Details
Cadoles/bouncer/pipeline/head This commit looks good
Details
This commit is contained in:
parent
cebf1daf72
commit
2b91c1e167
|
@ -2,6 +2,7 @@ package testsuite
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
|
"reflect"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"forge.cadoles.com/cadoles/bouncer/internal/store"
|
"forge.cadoles.com/cadoles/bouncer/internal/store"
|
||||||
|
@ -48,6 +49,187 @@ var layerRepositoryTestCases = []layerRepositoryTestCase{
|
||||||
return errors.Errorf("layer.UpdatedAt should not be zero value")
|
return errors.Errorf("layer.UpdatedAt should not be zero value")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Name: "Create then get layer",
|
||||||
|
Do: func(repo store.LayerRepository) error {
|
||||||
|
ctx := context.Background()
|
||||||
|
|
||||||
|
var proxyName store.ProxyName = "create_then_get_layer_proxy"
|
||||||
|
var layerName store.LayerName = "create_then_get_layer"
|
||||||
|
var layerType store.LayerType = "dummy"
|
||||||
|
var layerOptions store.LayerOptions = store.LayerOptions{
|
||||||
|
"foo": "bar",
|
||||||
|
"test": struct {
|
||||||
|
Items []int `json:"items"`
|
||||||
|
}{
|
||||||
|
Items: []int{1, 2, 3},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
createdLayer, err := repo.CreateLayer(ctx, proxyName, layerName, layerType, layerOptions)
|
||||||
|
if err != nil {
|
||||||
|
return errors.WithStack(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
foundLayer, err := repo.GetLayer(ctx, proxyName, layerName)
|
||||||
|
if err != nil {
|
||||||
|
return errors.WithStack(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
if e, g := createdLayer.Name, foundLayer.Name; e != g {
|
||||||
|
return errors.Errorf("foundLayer.Name: expected '%v', got '%v'", createdLayer.Name, foundLayer.Name)
|
||||||
|
}
|
||||||
|
|
||||||
|
if e, g := createdLayer.CreatedAt, foundLayer.CreatedAt; !reflect.DeepEqual(e, g) {
|
||||||
|
return errors.Errorf("foundLayer.CreatedAt: expected '%v', got '%v'", createdLayer.CreatedAt, foundLayer.CreatedAt)
|
||||||
|
}
|
||||||
|
|
||||||
|
if e, g := createdLayer.UpdatedAt, foundLayer.UpdatedAt; !reflect.DeepEqual(e, g) {
|
||||||
|
return errors.Errorf("foundLayer.UpdatedAt: expected '%v', got '%v'", createdLayer.UpdatedAt, foundLayer.UpdatedAt)
|
||||||
|
}
|
||||||
|
|
||||||
|
if e, g := createdLayer.Enabled, foundLayer.Enabled; !reflect.DeepEqual(e, g) {
|
||||||
|
return errors.Errorf("foundLayer.Enabled: expected '%v', got '%v'", createdLayer.Enabled, foundLayer.Enabled)
|
||||||
|
}
|
||||||
|
|
||||||
|
if e, g := createdLayer.Weight, foundLayer.Weight; !reflect.DeepEqual(e, g) {
|
||||||
|
return errors.Errorf("foundLayer.Weight: expected '%v', got '%v'", createdLayer.Weight, foundLayer.Weight)
|
||||||
|
}
|
||||||
|
|
||||||
|
if e, g := createdLayer.Proxy, foundLayer.Proxy; !reflect.DeepEqual(e, g) {
|
||||||
|
return errors.Errorf("foundLayer.Proxy: expected '%v', got '%v'", createdLayer.Proxy, foundLayer.Proxy)
|
||||||
|
}
|
||||||
|
|
||||||
|
if e, g := createdLayer.Options, foundLayer.Options; !reflect.DeepEqual(e, g) {
|
||||||
|
return errors.Errorf("foundLayer.Options: expected '%v', got '%v'", createdLayer.Options, foundLayer.Options)
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Name: "Create then delete layer",
|
||||||
|
Do: func(repo store.LayerRepository) error {
|
||||||
|
ctx := context.Background()
|
||||||
|
|
||||||
|
var layerName store.LayerName = "create_then_delete_layer"
|
||||||
|
var proxyName store.ProxyName = store.ProxyName(string(layerName) + "_proxy")
|
||||||
|
var layerType store.LayerType = "dummy"
|
||||||
|
var layerOptions store.LayerOptions = store.LayerOptions{
|
||||||
|
"foo": "bar",
|
||||||
|
"test": struct {
|
||||||
|
Items []int `json:"items"`
|
||||||
|
}{
|
||||||
|
Items: []int{1, 2, 3},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
createdLayer, err := repo.CreateLayer(ctx, proxyName, layerName, layerType, layerOptions)
|
||||||
|
if err != nil {
|
||||||
|
return errors.WithStack(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
if err := repo.DeleteLayer(ctx, createdLayer.Proxy, createdLayer.Name); err != nil {
|
||||||
|
return errors.WithStack(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
foundLayer, err := repo.GetLayer(ctx, createdLayer.Proxy, createdLayer.Name)
|
||||||
|
if err == nil {
|
||||||
|
return errors.New("err should not be nil")
|
||||||
|
}
|
||||||
|
|
||||||
|
if !errors.Is(err, store.ErrNotFound) {
|
||||||
|
return errors.Errorf("err should be store.ErrNotFound, got '%+v'", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
if foundLayer != nil {
|
||||||
|
return errors.Errorf("foundLayer should be nil, got '%v'", foundLayer)
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Name: "Create already existing layer",
|
||||||
|
Do: func(repo store.LayerRepository) error {
|
||||||
|
ctx := context.Background()
|
||||||
|
|
||||||
|
var layerName store.LayerName = "create_already_existing_layer"
|
||||||
|
var proxyName store.ProxyName = store.ProxyName(string(layerName) + "_proxy")
|
||||||
|
var layerType store.LayerType = "dummy"
|
||||||
|
var layerOptions store.LayerOptions = store.LayerOptions{
|
||||||
|
"foo": "bar",
|
||||||
|
"test": struct {
|
||||||
|
Items []int `json:"items"`
|
||||||
|
}{
|
||||||
|
Items: []int{1, 2, 3},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
_, err := repo.CreateLayer(ctx, proxyName, layerName, layerType, layerOptions)
|
||||||
|
if err != nil {
|
||||||
|
return errors.WithStack(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
_, err = repo.CreateLayer(ctx, proxyName, layerName, layerType, layerOptions)
|
||||||
|
if err == nil {
|
||||||
|
return errors.New("err should not be nil")
|
||||||
|
}
|
||||||
|
|
||||||
|
if !errors.Is(err, store.ErrAlreadyExist) {
|
||||||
|
return errors.Errorf("err: expected store.ErrAlreadyExists, got '%+v'", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Name: "Create then query layer",
|
||||||
|
Do: func(repo store.LayerRepository) error {
|
||||||
|
ctx := context.Background()
|
||||||
|
|
||||||
|
var layerName store.LayerName = "create_then_query_layer"
|
||||||
|
var proxyName store.ProxyName = store.ProxyName(string(layerName) + "_proxy")
|
||||||
|
var layerType store.LayerType = "dummy"
|
||||||
|
var layerOptions store.LayerOptions = store.LayerOptions{
|
||||||
|
"foo": "bar",
|
||||||
|
"test": struct {
|
||||||
|
Items []int `json:"items"`
|
||||||
|
}{
|
||||||
|
Items: []int{1, 2, 3},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
createdLayer, err := repo.CreateLayer(ctx, proxyName, layerName, layerType, layerOptions)
|
||||||
|
if err != nil {
|
||||||
|
return errors.WithStack(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
headers, err := repo.QueryLayers(ctx, createdLayer.Proxy)
|
||||||
|
if err != nil {
|
||||||
|
return errors.WithStack(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
if len(headers) < 1 {
|
||||||
|
return errors.Errorf("len(headers): expected value > 1, got '%v'", len(headers))
|
||||||
|
}
|
||||||
|
|
||||||
|
found := false
|
||||||
|
|
||||||
|
for _, h := range headers {
|
||||||
|
if h.Name == createdLayer.Name {
|
||||||
|
found = true
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if !found {
|
||||||
|
return errors.New("could not find created layer in query results")
|
||||||
|
}
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
|
@ -83,6 +83,14 @@ var proxyRepositoryTestCases = []proxyRepositoryTestCase{
|
||||||
return errors.Errorf("foundProxy.To: expected '%v', got '%v'", createdProxy.To, foundProxy.To)
|
return errors.Errorf("foundProxy.To: expected '%v', got '%v'", createdProxy.To, foundProxy.To)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if e, g := createdProxy.Enabled, foundProxy.Enabled; e != g {
|
||||||
|
return errors.Errorf("foundProxy.Enabled: expected '%v', got '%v'", createdProxy.Enabled, foundProxy.Enabled)
|
||||||
|
}
|
||||||
|
|
||||||
|
if e, g := createdProxy.Weight, foundProxy.Weight; e != g {
|
||||||
|
return errors.Errorf("foundProxy.Weight: expected '%v', got '%v'", createdProxy.Weight, foundProxy.Weight)
|
||||||
|
}
|
||||||
|
|
||||||
if e, g := createdProxy.CreatedAt, foundProxy.CreatedAt; e != g {
|
if e, g := createdProxy.CreatedAt, foundProxy.CreatedAt; e != g {
|
||||||
return errors.Errorf("foundProxy.CreatedAt: expected '%v', got '%v'", createdProxy.CreatedAt, foundProxy.CreatedAt)
|
return errors.Errorf("foundProxy.CreatedAt: expected '%v', got '%v'", createdProxy.CreatedAt, foundProxy.CreatedAt)
|
||||||
}
|
}
|
||||||
|
@ -127,7 +135,7 @@ var proxyRepositoryTestCases = []proxyRepositoryTestCase{
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Name: "Create then query",
|
Name: "Create then query layer",
|
||||||
Do: func(repo store.ProxyRepository) error {
|
Do: func(repo store.ProxyRepository) error {
|
||||||
ctx := context.Background()
|
ctx := context.Background()
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue