forked from grassrootseconomics/visedriver
Compare commits
24 Commits
menu-trave
...
menu-trave
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
c21a48c78e
|
||
|
|
70e234aa7c
|
||
|
|
554cecc7f3
|
||
|
|
d9e922d5be
|
||
|
|
0837933b6c
|
||
|
|
4d5735f85f
|
||
|
|
85efd2ac6e
|
||
|
|
8791753b2a
|
||
|
|
c8a5391435
|
||
|
|
c6227acba1
|
||
|
|
e30a7ad3e3
|
||
|
|
96aec1fd67
|
||
|
|
810dd74e43
|
||
|
|
3afe35b44f
|
||
|
|
d01af48216
|
||
|
|
d7bfdc62e9
|
||
|
|
360b51a3dc
|
||
|
|
e1f3ab78f1
|
||
|
|
5de82fd08a
|
||
|
|
2220d286b7
|
||
|
|
c39c4acc86
|
||
|
|
5937e7ea9d
|
||
|
|
35acf75f6b
|
||
|
|
8313ca3509
|
@@ -15,9 +15,9 @@ import (
|
|||||||
"git.defalsify.org/vise.git/engine"
|
"git.defalsify.org/vise.git/engine"
|
||||||
"git.defalsify.org/vise.git/logging"
|
"git.defalsify.org/vise.git/logging"
|
||||||
"git.defalsify.org/vise.git/resource"
|
"git.defalsify.org/vise.git/resource"
|
||||||
|
"git.grassecon.net/urdt/ussd/internal/handlers/server"
|
||||||
|
|
||||||
"git.grassecon.net/urdt/ussd/internal/handlers"
|
"git.grassecon.net/urdt/ussd/internal/handlers"
|
||||||
"git.grassecon.net/urdt/ussd/internal/handlers/server"
|
|
||||||
httpserver "git.grassecon.net/urdt/ussd/internal/http"
|
httpserver "git.grassecon.net/urdt/ussd/internal/http"
|
||||||
"git.grassecon.net/urdt/ussd/internal/storage"
|
"git.grassecon.net/urdt/ussd/internal/storage"
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -14,8 +14,8 @@ import (
|
|||||||
"git.defalsify.org/vise.git/resource"
|
"git.defalsify.org/vise.git/resource"
|
||||||
|
|
||||||
"git.grassecon.net/urdt/ussd/internal/handlers"
|
"git.grassecon.net/urdt/ussd/internal/handlers"
|
||||||
"git.grassecon.net/urdt/ussd/internal/handlers/server"
|
|
||||||
"git.grassecon.net/urdt/ussd/internal/storage"
|
"git.grassecon.net/urdt/ussd/internal/storage"
|
||||||
|
"git.grassecon.net/urdt/ussd/internal/handlers/server"
|
||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
@@ -95,7 +95,6 @@ func main() {
|
|||||||
|
|
||||||
lhs, err := handlers.NewLocalHandlerService(pfp, true, dbResource, cfg, rs)
|
lhs, err := handlers.NewLocalHandlerService(pfp, true, dbResource, cfg, rs)
|
||||||
lhs.SetDataStore(&userdataStore)
|
lhs.SetDataStore(&userdataStore)
|
||||||
|
|
||||||
accountService := server.AccountService{}
|
accountService := server.AccountService{}
|
||||||
|
|
||||||
hl, err := lhs.GetHandler(&accountService)
|
hl, err := lhs.GetHandler(&accountService)
|
||||||
|
|||||||
@@ -16,9 +16,9 @@ import (
|
|||||||
"git.defalsify.org/vise.git/resource"
|
"git.defalsify.org/vise.git/resource"
|
||||||
|
|
||||||
"git.grassecon.net/urdt/ussd/internal/handlers"
|
"git.grassecon.net/urdt/ussd/internal/handlers"
|
||||||
"git.grassecon.net/urdt/ussd/internal/handlers/server"
|
|
||||||
httpserver "git.grassecon.net/urdt/ussd/internal/http"
|
httpserver "git.grassecon.net/urdt/ussd/internal/http"
|
||||||
"git.grassecon.net/urdt/ussd/internal/storage"
|
"git.grassecon.net/urdt/ussd/internal/storage"
|
||||||
|
"git.grassecon.net/urdt/ussd/internal/handlers/server"
|
||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
@@ -90,6 +90,7 @@ func main() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
accountService := server.AccountService{}
|
accountService := server.AccountService{}
|
||||||
|
|
||||||
hl, err := lhs.GetHandler(&accountService)
|
hl, err := lhs.GetHandler(&accountService)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
fmt.Fprintf(os.Stderr, err.Error())
|
fmt.Fprintf(os.Stderr, err.Error())
|
||||||
|
|||||||
@@ -13,13 +13,12 @@ type Step struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (s *Step) MatchesExpectedContent(content []byte) (bool, error) {
|
func (s *Step) MatchesExpectedContent(content []byte) (bool, error) {
|
||||||
pattern := `.*\?.*|.*`
|
pattern := regexp.QuoteMeta(s.ExpectedContent)
|
||||||
re, err := regexp.Compile(pattern)
|
re, err := regexp.Compile(pattern)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return false, err
|
return false, err
|
||||||
}
|
}
|
||||||
// Check if the content matches the regex pattern
|
if re.Match([]byte(content)) {
|
||||||
if re.Match(content) {
|
|
||||||
return true, nil
|
return true, nil
|
||||||
}
|
}
|
||||||
return false, nil
|
return false, nil
|
||||||
@@ -38,7 +37,8 @@ type TestCase struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (s *TestCase) MatchesExpectedContent(content []byte) (bool, error) {
|
func (s *TestCase) MatchesExpectedContent(content []byte) (bool, error) {
|
||||||
re, err := regexp.Compile(s.ExpectedContent)
|
pattern := regexp.QuoteMeta(s.ExpectedContent)
|
||||||
|
re, err := regexp.Compile(pattern)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return false, err
|
return false, err
|
||||||
}
|
}
|
||||||
@@ -6,8 +6,8 @@ import (
|
|||||||
"git.defalsify.org/vise.git/engine"
|
"git.defalsify.org/vise.git/engine"
|
||||||
"git.defalsify.org/vise.git/persist"
|
"git.defalsify.org/vise.git/persist"
|
||||||
"git.defalsify.org/vise.git/resource"
|
"git.defalsify.org/vise.git/resource"
|
||||||
"git.grassecon.net/urdt/ussd/internal/handlers/server"
|
|
||||||
"git.grassecon.net/urdt/ussd/internal/handlers/ussd"
|
"git.grassecon.net/urdt/ussd/internal/handlers/ussd"
|
||||||
|
"git.grassecon.net/urdt/ussd/internal/handlers/server"
|
||||||
)
|
)
|
||||||
|
|
||||||
type HandlerService interface {
|
type HandlerService interface {
|
||||||
@@ -54,7 +54,7 @@ func (ls *LocalHandlerService) SetDataStore(db *db.Db) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (ls *LocalHandlerService) GetHandler(accountService server.AccountServiceInterface) (*ussd.Handlers, error) {
|
func (ls *LocalHandlerService) GetHandler(accountService server.AccountServiceInterface) (*ussd.Handlers, error) {
|
||||||
ussdHandlers, err := ussd.NewHandlers(ls.Parser, *ls.UserdataStore, accountService)
|
ussdHandlers, err := ussd.NewHandlers(ls.Parser, *ls.UserdataStore,accountService)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ type AccountServiceInterface interface {
|
|||||||
type AccountService struct {
|
type AccountService struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
type MockAccountService struct {
|
type TestAccountService struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
// CheckAccountStatus retrieves the status of an account transaction based on the provided tracking ID.
|
// CheckAccountStatus retrieves the status of an account transaction based on the provided tracking ID.
|
||||||
@@ -49,9 +49,7 @@ func (as *AccountService) CheckAccountStatus(trackingId string) (string, error)
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return "", err
|
return "", err
|
||||||
}
|
}
|
||||||
|
|
||||||
status := trackResp.Result.Transaction.Status
|
status := trackResp.Result.Transaction.Status
|
||||||
|
|
||||||
return status, nil
|
return status, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -108,7 +106,7 @@ func (as *AccountService) CreateAccount() (*models.AccountResponse, error) {
|
|||||||
return &accountResp, nil
|
return &accountResp, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (mas *MockAccountService) CreateAccount() (*models.AccountResponse, error) {
|
func (tas *TestAccountService) CreateAccount() (*models.AccountResponse, error) {
|
||||||
return &models.AccountResponse{
|
return &models.AccountResponse{
|
||||||
Ok: true,
|
Ok: true,
|
||||||
Result: struct {
|
Result: struct {
|
||||||
@@ -123,7 +121,7 @@ func (mas *MockAccountService) CreateAccount() (*models.AccountResponse, error)
|
|||||||
}, nil
|
}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (mas *MockAccountService) CheckBalance(publicKey string) (string, error) {
|
func (tas *TestAccountService) CheckBalance(publicKey string) (string, error) {
|
||||||
|
|
||||||
balanceResponse := &models.BalanceResponse{
|
balanceResponse := &models.BalanceResponse{
|
||||||
Ok: true,
|
Ok: true,
|
||||||
@@ -139,6 +137,6 @@ func (mas *MockAccountService) CheckBalance(publicKey string) (string, error) {
|
|||||||
return balanceResponse.Result.Balance, nil
|
return balanceResponse.Result.Balance, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (mas *MockAccountService) CheckAccountStatus(trackingId string) (string, error) {
|
func (tas *TestAccountService) CheckAccountStatus(trackingId string) (string, error) {
|
||||||
return "SUCCESS", nil
|
return "SUCCESS", nil
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -502,7 +502,7 @@ func (h *Handlers) Authorize(ctx context.Context, sym string, input []byte) (res
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return res, err
|
return res, err
|
||||||
}
|
}
|
||||||
if len(input) > 1 {
|
if len(input) == 4 {
|
||||||
if bytes.Equal(input, AccountPin) {
|
if bytes.Equal(input, AccountPin) {
|
||||||
if h.st.MatchFlag(flag_account_authorized, false) {
|
if h.st.MatchFlag(flag_account_authorized, false) {
|
||||||
res.FlagReset = append(res.FlagReset, flag_incorrect_pin)
|
res.FlagReset = append(res.FlagReset, flag_incorrect_pin)
|
||||||
|
|||||||
@@ -836,10 +836,7 @@ func TestAuthorize(t *testing.T) {
|
|||||||
{
|
{
|
||||||
name: "Test with pin that is not a 4 digit",
|
name: "Test with pin that is not a 4 digit",
|
||||||
input: []byte("1235aqds"),
|
input: []byte("1235aqds"),
|
||||||
expectedResult: resource.Result{
|
expectedResult: resource.Result{},
|
||||||
FlagReset: []uint32{flag_account_authorized},
|
|
||||||
FlagSet: []uint32{flag_incorrect_pin},
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -79,8 +79,12 @@ func TestEngine(sessionId string) (engine.Engine, func(), chan bool) {
|
|||||||
os.Exit(1)
|
os.Exit(1)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if AccountService == nil {
|
||||||
|
AccountService = &server.AccountService{}
|
||||||
|
}
|
||||||
|
|
||||||
switch AccountService.(type) {
|
switch AccountService.(type) {
|
||||||
case *server.MockAccountService:
|
case *server.TestAccountService:
|
||||||
go func() {
|
go func() {
|
||||||
eventChannel <- false
|
eventChannel <- false
|
||||||
}()
|
}()
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
//go:build !online
|
||||||
// +build !online
|
// +build !online
|
||||||
|
|
||||||
package testutil
|
package testutil
|
||||||
@@ -6,8 +7,6 @@ import (
|
|||||||
"git.grassecon.net/urdt/ussd/internal/handlers/server"
|
"git.grassecon.net/urdt/ussd/internal/handlers/server"
|
||||||
)
|
)
|
||||||
|
|
||||||
var AccountService server.AccountServiceInterface
|
var (
|
||||||
|
AccountService server.AccountServiceInterface = &server.TestAccountService{}
|
||||||
func init() {
|
)
|
||||||
AccountService = &server.MockAccountService{}
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -5,8 +5,6 @@ package testutil
|
|||||||
|
|
||||||
import "git.grassecon.net/urdt/ussd/internal/handlers/server"
|
import "git.grassecon.net/urdt/ussd/internal/handlers/server"
|
||||||
|
|
||||||
var AccountService server.AccountServiceInterface
|
var (
|
||||||
|
AccountService server.AccountServiceInterface
|
||||||
func init() {
|
)
|
||||||
AccountService = &server.AccountService{}
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -2,4 +2,5 @@ CATCH invalid_pin flag_valid_pin 0
|
|||||||
MOUT back 0
|
MOUT back 0
|
||||||
HALT
|
HALT
|
||||||
INCMP _ 0
|
INCMP _ 0
|
||||||
INCMP pin_reset_success *
|
INCMP pin_reset_success *
|
||||||
|
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
Thibitisha PIN yako mpya:
|
Thibitisha PIN yako mpya:
|
||||||
|
|||||||
@@ -18,4 +18,4 @@ INCMP select_gender 3
|
|||||||
INCMP enter_yob 4
|
INCMP enter_yob 4
|
||||||
INCMP enter_location 5
|
INCMP enter_location 5
|
||||||
INCMP enter_offerings 6
|
INCMP enter_offerings 6
|
||||||
INCMP view_profile 7
|
INCMP view_profile 7
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
Weka jina la familia
|
Weka jina la familia
|
||||||
|
|||||||
@@ -7,3 +7,6 @@ HALT
|
|||||||
RELOAD save_firstname
|
RELOAD save_firstname
|
||||||
INCMP _ 0
|
INCMP _ 0
|
||||||
INCMP pin_entry *
|
INCMP pin_entry *
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,2 +1 @@
|
|||||||
PIN mpya na udhibitisho wa PIN mpya hazilingani. Tafadhali jaribu tena.
|
PIN mpya na udhibitisho wa pin mpya hazilingani.Tafadhali jaribu tena.Kwa usaidizi piga simu +254757628885.
|
||||||
Kwa usaidizi piga simu +254757628885.
|
|
||||||
|
|||||||
@@ -1 +0,0 @@
|
|||||||
My vouchers
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
MOUT select_voucher 1
|
|
||||||
MOUT voucher_details 2
|
|
||||||
MOUT back 0
|
|
||||||
HALT
|
|
||||||
INCMP _ 0
|
|
||||||
INCMP select_voucher 1
|
|
||||||
@@ -8,3 +8,5 @@ LOAD verify_new_pin 8
|
|||||||
RELOAD verify_new_pin
|
RELOAD verify_new_pin
|
||||||
CATCH incorrect_pin flag_incorrect_pin 1
|
CATCH incorrect_pin flag_incorrect_pin 1
|
||||||
INCMP confirm_pin_change *
|
INCMP confirm_pin_change *
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
Weka PIN mpya ya nne nambari:
|
Weka PIN mpya ya nne nambari:
|
||||||
@@ -1 +1 @@
|
|||||||
Weka PIN yako ya zamani:
|
Weka PIN yako ya zamani:
|
||||||
|
|||||||
@@ -5,3 +5,4 @@ MOUT back 0
|
|||||||
HALT
|
HALT
|
||||||
INCMP _ 0
|
INCMP _ 0
|
||||||
INCMP old_pin 1
|
INCMP old_pin 1
|
||||||
|
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
The PIN is not a match. Try again
|
The PIN is not a match. Try again
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
Ombi lako la kubadili PIN limefanikiwa
|
Ombi lako la kubadili PIN limefanikiwa
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
Ombi la Kuweka wasifu limefanikiwa
|
Ombi la Kuweka wasifu limefanikiwa
|
||||||
|
|||||||
@@ -1 +0,0 @@
|
|||||||
Select voucher
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
Voucher details
|
|
||||||
@@ -160,6 +160,7 @@ func TestSendWithInvalidInputs(t *testing.T) {
|
|||||||
|
|
||||||
// Replace placeholder {public_key} with the actual dynamic public key
|
// Replace placeholder {public_key} with the actual dynamic public key
|
||||||
expectedContent := bytes.Replace([]byte(step.ExpectedContent), []byte("{public_key}"), []byte(publicKey), -1)
|
expectedContent := bytes.Replace([]byte(step.ExpectedContent), []byte("{public_key}"), []byte(publicKey), -1)
|
||||||
|
step.ExpectedContent = string(expectedContent)
|
||||||
match, err := step.MatchesExpectedContent(b)
|
match, err := step.MatchesExpectedContent(b)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("Error compiling regex for step '%s': %v", step.Input, err)
|
t.Fatalf("Error compiling regex for step '%s': %v", step.Input, err)
|
||||||
@@ -338,6 +339,7 @@ func TestMyAccount_MyAddress(t *testing.T) {
|
|||||||
|
|
||||||
publicKey := extractPublicKey(b)
|
publicKey := extractPublicKey(b)
|
||||||
expectedContent := bytes.Replace([]byte(step.ExpectedContent), []byte("{public_key}"), []byte(publicKey), -1)
|
expectedContent := bytes.Replace([]byte(step.ExpectedContent), []byte("{public_key}"), []byte(publicKey), -1)
|
||||||
|
step.ExpectedContent = string(expectedContent)
|
||||||
match, err := step.MatchesExpectedContent(b)
|
match, err := step.MatchesExpectedContent(b)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("Error compiling regex for step '%s': %v", step.Input, err)
|
t.Fatalf("Error compiling regex for step '%s': %v", step.Input, err)
|
||||||
|
|||||||
Reference in New Issue
Block a user