setup traversal tests
This commit is contained in:
@@ -1,141 +0,0 @@
|
||||
package ussd
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"context"
|
||||
"fmt"
|
||||
"path"
|
||||
"testing"
|
||||
|
||||
"git.defalsify.org/vise.git/db"
|
||||
fsdb "git.defalsify.org/vise.git/db/fs"
|
||||
"git.defalsify.org/vise.git/engine"
|
||||
"git.defalsify.org/vise.git/persist"
|
||||
"git.defalsify.org/vise.git/resource"
|
||||
"git.grassecon.net/urdt/ussd/internal/storage"
|
||||
"git.grassecon.net/urdt/ussd/testdata"
|
||||
testdataloader "github.com/peteole/testdata-loader"
|
||||
)
|
||||
|
||||
var (
|
||||
dataGenerated bool = false
|
||||
dataDir string = testdata.DataDir
|
||||
BaseDir = testdataloader.GetBasePath()
|
||||
)
|
||||
|
||||
type testWrapper struct {
|
||||
resource.Resource
|
||||
db db.Db
|
||||
}
|
||||
|
||||
func generateTestData(t *testing.T) {
|
||||
if dataGenerated {
|
||||
return
|
||||
}
|
||||
var err error
|
||||
dataDir, err = testdata.Generate()
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
}
|
||||
|
||||
func newTestWrapper(path string) testWrapper {
|
||||
ctx := context.Background()
|
||||
store := fsdb.NewFsDb()
|
||||
store.Connect(ctx, path)
|
||||
rs := resource.NewDbResource(store)
|
||||
rs.With(db.DATATYPE_STATICLOAD)
|
||||
wr := testWrapper{
|
||||
rs,
|
||||
store,
|
||||
}
|
||||
rs.AddLocalFunc("quit", quit)
|
||||
|
||||
return wr
|
||||
}
|
||||
|
||||
func quit(ctx context.Context, sym string, input []byte) (resource.Result, error) {
|
||||
return resource.Result{
|
||||
Content: "Thank you for using Sarafu network",
|
||||
}, nil
|
||||
}
|
||||
|
||||
func TestTerms(t *testing.T) {
|
||||
generateTestData(t)
|
||||
ctx := context.Background()
|
||||
rs := newTestWrapper(dataDir)
|
||||
cfg := engine.Config{
|
||||
Root: "terms",
|
||||
FlagCount: uint32(9),
|
||||
}
|
||||
store := storage.NewThreadGdbmDb()
|
||||
storeFile := path.Join(baseDir, "state.gdbm")
|
||||
err := store.Connect(ctx, storeFile)
|
||||
if err != nil {
|
||||
t.Fail()
|
||||
}
|
||||
|
||||
pr := persist.NewPersister(store)
|
||||
en := engine.NewEngine(cfg, &rs)
|
||||
en.WithPersister(pr)
|
||||
if pr.GetState() == nil || pr.GetMemory() == nil {
|
||||
t.Fail()
|
||||
}
|
||||
_, err = en.Exec(ctx, []byte{})
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
w := bytes.NewBuffer(nil)
|
||||
_, err = en.Flush(ctx, w)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
b := w.Bytes()
|
||||
|
||||
expect_str := `Do you agree to terms and conditions?
|
||||
1:yes
|
||||
2:no`
|
||||
|
||||
if !bytes.Equal(b, []byte(expect_str)) {
|
||||
t.Fatalf("expected:\n\t%s\ngot:\n\t%s\n", expect_str, b)
|
||||
}
|
||||
|
||||
tests := []struct {
|
||||
name string
|
||||
expectedSymbol string
|
||||
input []byte
|
||||
}{
|
||||
{
|
||||
name: "Test accept terms option(yes)",
|
||||
expectedSymbol: "create_pin",
|
||||
input: []byte("1"),
|
||||
},
|
||||
// {
|
||||
// name: "Test reject terms option(no)",
|
||||
// input: []byte("2"),
|
||||
// expectedSymbol: "quit",
|
||||
// },
|
||||
}
|
||||
|
||||
for _, tt := range tests {
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
_, err = en.Exec(ctx, tt.input)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
w := bytes.NewBuffer(nil)
|
||||
_, err = en.Flush(ctx, w)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
b = w.Bytes()
|
||||
fmt.Println("result", string(b))
|
||||
symbol, _ := pr.State.Where()
|
||||
|
||||
if symbol != tt.expectedSymbol {
|
||||
t.Fatalf("expected symbol to be 'create_pin', got %s", symbol)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user