Compare commits

..

24 Commits

Author SHA1 Message Date
Carlosokumu
c21a48c78e update test engine 2024-10-12 13:33:13 +03:00
Carlosokumu
70e234aa7c pass account service as a global var 2024-10-12 13:32:34 +03:00
Carlosokumu
554cecc7f3 chore: rename entities 2024-10-12 13:31:26 +03:00
Carlosokumu
d9e922d5be return error when regex generation fails 2024-10-12 13:30:46 +03:00
Carlosokumu
0837933b6c move engine to testutil 2024-10-10 16:53:59 +03:00
Carlosokumu
4d5735f85f add new line 2024-10-10 09:13:04 +03:00
Carlosokumu
85efd2ac6e match step expected content after replacing actual data 2024-10-09 22:22:23 +03:00
Carlosokumu
8791753b2a ignore special character in regex 2024-10-09 22:21:11 +03:00
Carlosokumu
c8a5391435 remove extra line 2024-10-09 16:47:21 +03:00
Carlosokumu
c6227acba1 use build tag to define account service 2024-10-09 16:46:22 +03:00
Carlosokumu
e30a7ad3e3 use regex exp to match expected content 2024-10-09 16:45:51 +03:00
Carlosokumu
96aec1fd67 define an event channel 2024-10-09 16:45:09 +03:00
Carlosokumu
810dd74e43 use one test driver 2024-10-09 16:44:51 +03:00
Carlosokumu
3afe35b44f remove setup driver 2024-10-09 16:25:25 +03:00
Carlosokumu
d01af48216 pass account service as a param 2024-10-08 00:03:29 +03:00
Carlosokumu
d7bfdc62e9 setup test data drivers 2024-10-07 23:35:41 +03:00
Carlosokumu
360b51a3dc add uuid 2024-10-07 23:33:38 +03:00
Carlosokumu
e1f3ab78f1 Delete connstr in threadgdbm global channel map on close 2024-10-07 23:33:09 +03:00
Carlosokumu
5de82fd08a add menu traversal tests 2024-10-07 23:32:28 +03:00
Carlosokumu
2220d286b7 add test data files 2024-10-07 23:32:08 +03:00
Carlosokumu
c39c4acc86 add test engine 2024-10-07 23:31:47 +03:00
Carlosokumu
5937e7ea9d add tag to toggle between online and offline tests 2024-10-07 23:31:30 +03:00
Carlosokumu
35acf75f6b add mock account service 2024-10-07 23:31:00 +03:00
Carlosokumu
8313ca3509 update affected vis and template files 2024-10-07 23:29:30 +03:00
29 changed files with 47 additions and 52 deletions

View File

@@ -15,9 +15,9 @@ import (
"git.defalsify.org/vise.git/engine"
"git.defalsify.org/vise.git/logging"
"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/server"
httpserver "git.grassecon.net/urdt/ussd/internal/http"
"git.grassecon.net/urdt/ussd/internal/storage"
)

View File

@@ -14,8 +14,8 @@ import (
"git.defalsify.org/vise.git/resource"
"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/handlers/server"
)
var (
@@ -95,7 +95,6 @@ func main() {
lhs, err := handlers.NewLocalHandlerService(pfp, true, dbResource, cfg, rs)
lhs.SetDataStore(&userdataStore)
accountService := server.AccountService{}
hl, err := lhs.GetHandler(&accountService)

View File

@@ -16,9 +16,9 @@ import (
"git.defalsify.org/vise.git/resource"
"git.grassecon.net/urdt/ussd/internal/handlers"
"git.grassecon.net/urdt/ussd/internal/handlers/server"
httpserver "git.grassecon.net/urdt/ussd/internal/http"
"git.grassecon.net/urdt/ussd/internal/storage"
"git.grassecon.net/urdt/ussd/internal/handlers/server"
)
var (
@@ -90,6 +90,7 @@ func main() {
}
accountService := server.AccountService{}
hl, err := lhs.GetHandler(&accountService)
if err != nil {
fmt.Fprintf(os.Stderr, err.Error())

View File

@@ -13,13 +13,12 @@ type Step struct {
}
func (s *Step) MatchesExpectedContent(content []byte) (bool, error) {
pattern := `.*\?.*|.*`
pattern := regexp.QuoteMeta(s.ExpectedContent)
re, err := regexp.Compile(pattern)
if err != nil {
return false, err
}
// Check if the content matches the regex pattern
if re.Match(content) {
if re.Match([]byte(content)) {
return true, nil
}
return false, nil
@@ -38,7 +37,8 @@ type TestCase struct {
}
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 {
return false, err
}

View File

@@ -6,8 +6,8 @@ import (
"git.defalsify.org/vise.git/engine"
"git.defalsify.org/vise.git/persist"
"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/server"
)
type HandlerService interface {
@@ -54,7 +54,7 @@ func (ls *LocalHandlerService) SetDataStore(db *db.Db) {
}
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 {
return nil, err
}

View File

@@ -18,7 +18,7 @@ type AccountServiceInterface interface {
type AccountService struct {
}
type MockAccountService struct {
type TestAccountService struct {
}
// 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 {
return "", err
}
status := trackResp.Result.Transaction.Status
return status, nil
}
@@ -108,7 +106,7 @@ func (as *AccountService) CreateAccount() (*models.AccountResponse, error) {
return &accountResp, nil
}
func (mas *MockAccountService) CreateAccount() (*models.AccountResponse, error) {
func (tas *TestAccountService) CreateAccount() (*models.AccountResponse, error) {
return &models.AccountResponse{
Ok: true,
Result: struct {
@@ -123,7 +121,7 @@ func (mas *MockAccountService) CreateAccount() (*models.AccountResponse, error)
}, nil
}
func (mas *MockAccountService) CheckBalance(publicKey string) (string, error) {
func (tas *TestAccountService) CheckBalance(publicKey string) (string, error) {
balanceResponse := &models.BalanceResponse{
Ok: true,
@@ -139,6 +137,6 @@ func (mas *MockAccountService) CheckBalance(publicKey string) (string, error) {
return balanceResponse.Result.Balance, nil
}
func (mas *MockAccountService) CheckAccountStatus(trackingId string) (string, error) {
func (tas *TestAccountService) CheckAccountStatus(trackingId string) (string, error) {
return "SUCCESS", nil
}

View File

@@ -502,7 +502,7 @@ func (h *Handlers) Authorize(ctx context.Context, sym string, input []byte) (res
if err != nil {
return res, err
}
if len(input) > 1 {
if len(input) == 4 {
if bytes.Equal(input, AccountPin) {
if h.st.MatchFlag(flag_account_authorized, false) {
res.FlagReset = append(res.FlagReset, flag_incorrect_pin)

View File

@@ -836,10 +836,7 @@ func TestAuthorize(t *testing.T) {
{
name: "Test with pin that is not a 4 digit",
input: []byte("1235aqds"),
expectedResult: resource.Result{
FlagReset: []uint32{flag_account_authorized},
FlagSet: []uint32{flag_incorrect_pin},
},
expectedResult: resource.Result{},
},
}

View File

@@ -79,8 +79,12 @@ func TestEngine(sessionId string) (engine.Engine, func(), chan bool) {
os.Exit(1)
}
if AccountService == nil {
AccountService = &server.AccountService{}
}
switch AccountService.(type) {
case *server.MockAccountService:
case *server.TestAccountService:
go func() {
eventChannel <- false
}()

View File

@@ -1,3 +1,4 @@
//go:build !online
// +build !online
package testutil
@@ -6,8 +7,6 @@ import (
"git.grassecon.net/urdt/ussd/internal/handlers/server"
)
var AccountService server.AccountServiceInterface
func init() {
AccountService = &server.MockAccountService{}
}
var (
AccountService server.AccountServiceInterface = &server.TestAccountService{}
)

View File

@@ -5,8 +5,6 @@ package testutil
import "git.grassecon.net/urdt/ussd/internal/handlers/server"
var AccountService server.AccountServiceInterface
func init() {
AccountService = &server.AccountService{}
}
var (
AccountService server.AccountServiceInterface
)

View File

@@ -2,4 +2,5 @@ CATCH invalid_pin flag_valid_pin 0
MOUT back 0
HALT
INCMP _ 0
INCMP pin_reset_success *
INCMP pin_reset_success *

View File

@@ -1 +1 @@
Thibitisha PIN yako mpya:
Thibitisha PIN yako mpya:

View File

@@ -18,4 +18,4 @@ INCMP select_gender 3
INCMP enter_yob 4
INCMP enter_location 5
INCMP enter_offerings 6
INCMP view_profile 7
INCMP view_profile 7

View File

@@ -1 +1 @@
Weka jina la familia
Weka jina la familia

View File

@@ -7,3 +7,6 @@ HALT
RELOAD save_firstname
INCMP _ 0
INCMP pin_entry *

View File

@@ -1,2 +1 @@
PIN mpya na udhibitisho wa PIN mpya hazilingani. Tafadhali jaribu tena.
Kwa usaidizi piga simu +254757628885.
PIN mpya na udhibitisho wa pin mpya hazilingani.Tafadhali jaribu tena.Kwa usaidizi piga simu +254757628885.

View File

@@ -1 +0,0 @@
My vouchers

View File

@@ -1,6 +0,0 @@
MOUT select_voucher 1
MOUT voucher_details 2
MOUT back 0
HALT
INCMP _ 0
INCMP select_voucher 1

View File

@@ -8,3 +8,5 @@ LOAD verify_new_pin 8
RELOAD verify_new_pin
CATCH incorrect_pin flag_incorrect_pin 1
INCMP confirm_pin_change *

View File

@@ -1 +1 @@
Weka PIN mpya ya nne nambari:
Weka PIN mpya ya nne nambari:

View File

@@ -1 +1 @@
Weka PIN yako ya zamani:
Weka PIN yako ya zamani:

View File

@@ -5,3 +5,4 @@ MOUT back 0
HALT
INCMP _ 0
INCMP old_pin 1

View File

@@ -1 +1 @@
The PIN is not a match. Try again
The PIN is not a match. Try again

View File

@@ -1 +1 @@
Ombi lako la kubadili PIN limefanikiwa
Ombi lako la kubadili PIN limefanikiwa

View File

@@ -1 +1 @@
Ombi la Kuweka wasifu limefanikiwa
Ombi la Kuweka wasifu limefanikiwa

View File

@@ -1 +0,0 @@
Select voucher

View File

@@ -1 +0,0 @@
Voucher details

View File

@@ -160,6 +160,7 @@ func TestSendWithInvalidInputs(t *testing.T) {
// Replace placeholder {public_key} with the actual dynamic public key
expectedContent := bytes.Replace([]byte(step.ExpectedContent), []byte("{public_key}"), []byte(publicKey), -1)
step.ExpectedContent = string(expectedContent)
match, err := step.MatchesExpectedContent(b)
if err != nil {
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)
expectedContent := bytes.Replace([]byte(step.ExpectedContent), []byte("{public_key}"), []byte(publicKey), -1)
step.ExpectedContent = string(expectedContent)
match, err := step.MatchesExpectedContent(b)
if err != nil {
t.Fatalf("Error compiling regex for step '%s': %v", step.Input, err)