Rehabilitate builds and tests
This commit is contained in:
		
							parent
							
								
									430c88aa93
								
							
						
					
					
						commit
						cb9776cbbf
					
				
							
								
								
									
										23
									
								
								cmd/main.go
									
									
									
									
									
								
							
							
						
						
									
										23
									
								
								cmd/main.go
									
									
									
									
									
								
							| @ -13,14 +13,17 @@ import ( | ||||
| 
 | ||||
| 	"git.defalsify.org/vise.git/engine" | ||||
| 	"git.defalsify.org/vise.git/logging" | ||||
| 	"git.defalsify.org/vise.git/lang" | ||||
| 	"git.defalsify.org/vise.git/resource" | ||||
| 
 | ||||
| 	"git.grassecon.net/urdt/ussd/config" | ||||
| 	"git.grassecon.net/urdt/ussd/initializers" | ||||
| 	"git.grassecon.net/urdt/ussd/common" | ||||
| 	"git.grassecon.net/urdt/ussd/remote" | ||||
| 	"git.grassecon.net/urdt/ussd/common" | ||||
| 	"git.grassecon.net/urdt/ussd/handlers" | ||||
| 	 | ||||
| 	at "git.grassecon.net/grassrootseconomics/visedriver-africastalking/internal/africastalking" | ||||
| 	"git.grassecon.net/grassrootseconomics/visedriver-africastalking/internal/args" | ||||
| ) | ||||
| 
 | ||||
| var ( | ||||
| @ -45,6 +48,9 @@ func main() { | ||||
| 	var host string | ||||
| 	var port uint | ||||
| 	var err error | ||||
| 	var gettextDir string | ||||
| 	var langs args.LangVar | ||||
| 
 | ||||
| 
 | ||||
| 	flag.StringVar(&resourceDir, "resourcedir", path.Join("services", "registration"), "resource dir") | ||||
| 	flag.StringVar(&connStr, "c", "", "connection string") | ||||
| @ -52,9 +58,11 @@ func main() { | ||||
| 	flag.UintVar(&size, "s", 160, "max size of output") | ||||
| 	flag.StringVar(&host, "h", initializers.GetEnv("HOST", "127.0.0.1"), "http host") | ||||
| 	flag.UintVar(&port, "p", initializers.GetEnvUint("PORT", 7123), "http port") | ||||
| 	flag.StringVar(&gettextDir, "gettext", "", "use gettext translations from given directory") | ||||
| 	flag.Var(&langs, "language", "add symbol resolution for language") | ||||
| 	flag.Parse() | ||||
| 
 | ||||
| 	if connStr != "" { | ||||
| 	if connStr == "" { | ||||
| 		connStr = config.DbConn | ||||
| 	} | ||||
| 	connData, err := common.ToConnData(config.DbConn) | ||||
| @ -67,6 +75,13 @@ func main() { | ||||
| 
 | ||||
| 	ctx := context.Background() | ||||
| 	ctx = context.WithValue(ctx, "Database", database) | ||||
| 	ln, err := lang.LanguageFromCode(config.DefaultLanguage) | ||||
| 	if err != nil { | ||||
| 		fmt.Fprintf(os.Stderr, "default language set error: %v", err) | ||||
| 		os.Exit(1) | ||||
| 	} | ||||
| 	ctx = context.WithValue(ctx, "Language", ln) | ||||
| 
 | ||||
| 	pfp := path.Join(scriptDir, "pp.csv") | ||||
| 
 | ||||
| 	cfg := engine.Config{ | ||||
| @ -130,9 +145,7 @@ func main() { | ||||
| 	} | ||||
| 	defer stateStore.Close() | ||||
| 
 | ||||
| 	rp := &at.ATRequestParser{ | ||||
| 		Context: ctx, | ||||
| 	} | ||||
| 	rp := &at.ATRequestParser{} | ||||
| 	bsh := handlers.NewBaseSessionHandler(cfg, rs, stateStore, userdataStore, rp, hl) | ||||
| 	sh := at.NewATSessionHandler(bsh) | ||||
| 
 | ||||
|  | ||||
							
								
								
									
										2
									
								
								go.mod
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								go.mod
									
									
									
									
									
								
							| @ -4,7 +4,7 @@ go 1.23.0 | ||||
| 
 | ||||
| require ( | ||||
| 	git.defalsify.org/vise.git v0.2.3-0.20250103172917-3e190a44568d | ||||
| 	git.grassecon.net/urdt/ussd v0.8.0-beta.5.0.20250105111758-6789c4f550fa | ||||
| 	git.grassecon.net/urdt/ussd v0.8.0-beta.11.0.20250109134950-b9712098eff5 | ||||
| ) | ||||
| 
 | ||||
| require ( | ||||
|  | ||||
							
								
								
									
										4
									
								
								go.sum
									
									
									
									
									
								
							
							
						
						
									
										4
									
								
								go.sum
									
									
									
									
									
								
							| @ -1,7 +1,7 @@ | ||||
| git.defalsify.org/vise.git v0.2.3-0.20250103172917-3e190a44568d h1:bPAOVZOX4frSGhfOdcj7kc555f8dc9DmMd2YAyC2AMw= | ||||
| git.defalsify.org/vise.git v0.2.3-0.20250103172917-3e190a44568d/go.mod h1:jyBMe1qTYUz3mmuoC9JQ/TvFeW0vTanCUcPu3H8p4Ck= | ||||
| git.grassecon.net/urdt/ussd v0.8.0-beta.5.0.20250105111758-6789c4f550fa h1:aJaDujoO/zIci2ORGPYwo/Q9wM4tMWTSyRy5BVutm0g= | ||||
| git.grassecon.net/urdt/ussd v0.8.0-beta.5.0.20250105111758-6789c4f550fa/go.mod h1:Xct45L7FUE4pYtLN4gmhkMCoafUNpcOJ7horP9kPDAc= | ||||
| git.grassecon.net/urdt/ussd v0.8.0-beta.11.0.20250109134950-b9712098eff5 h1:xDmrSUzN2IdfHt4C0gKGidACqI7t7+bKakiS+Qrd+tA= | ||||
| git.grassecon.net/urdt/ussd v0.8.0-beta.11.0.20250109134950-b9712098eff5/go.mod h1:Xct45L7FUE4pYtLN4gmhkMCoafUNpcOJ7horP9kPDAc= | ||||
| github.com/alecthomas/assert/v2 v2.2.2 h1:Z/iVC0xZfWTaFNE6bA3z07T86hd45Xe2eLt6WVy2bbk= | ||||
| github.com/alecthomas/assert/v2 v2.2.2/go.mod h1:pXcQ2Asjp247dahGEmsZ6ru0UVwnkhktn7S0bBDLxvQ= | ||||
| github.com/alecthomas/participle/v2 v2.0.0 h1:Fgrq+MbuSsJwIkw3fEj9h75vDP0Er5JzepJ0/HNHv0g= | ||||
|  | ||||
| @ -18,7 +18,7 @@ type ATRequestParser struct { | ||||
| 	Context context.Context | ||||
| } | ||||
| 
 | ||||
| func (arp *ATRequestParser) GetSessionId(rq any) (string, error) { | ||||
| func (arp *ATRequestParser) GetSessionId(ctx context.Context, rq any) (string, error) { | ||||
| 	rqv, ok := rq.(*http.Request) | ||||
| 	if !ok { | ||||
| 		logg.Warnf("got an invalid request", "req", rq) | ||||
|  | ||||
| @ -34,7 +34,7 @@ func (ash *ATSessionHandler) ServeHTTP(w http.ResponseWriter, req *http.Request) | ||||
| 
 | ||||
| 	rp := ash.GetRequestParser() | ||||
| 	cfg := ash.GetConfig() | ||||
| 	cfg.SessionId, err = rp.GetSessionId(req) | ||||
| 	cfg.SessionId, err = rp.GetSessionId(req.Context(), req) | ||||
| 	if err != nil { | ||||
| 		logg.ErrorCtxf(rqs.Ctx, "", "header processing error", err) | ||||
| 		ash.WriteError(w, 400, err) | ||||
|  | ||||
| @ -11,8 +11,9 @@ import ( | ||||
| 	"testing" | ||||
| 
 | ||||
| 	"git.defalsify.org/vise.git/engine" | ||||
| 	"git.grassecon.net/urdt/ussd/internal/handlers" | ||||
| 	"git.grassecon.net/urdt/ussd/internal/testutil/mocks/httpmocks" | ||||
| 	"git.grassecon.net/urdt/ussd/request" | ||||
| 	verrors "git.grassecon.net/urdt/ussd/errors" | ||||
| 	"git.grassecon.net/urdt/ussd/testutil/mocks/httpmocks" | ||||
| ) | ||||
| 
 | ||||
| func TestNewATSessionHandler(t *testing.T) { | ||||
| @ -49,15 +50,15 @@ func TestATSessionHandler_ServeHTTP(t *testing.T) { | ||||
| 					parts := strings.Split(text, "*") | ||||
| 					return []byte(parts[len(parts)-1]), nil | ||||
| 				} | ||||
| 				mh.ProcessFunc = func(rqs handlers.RequestSession) (handlers.RequestSession, error) { | ||||
| 				mh.ProcessFunc = func(rqs request.RequestSession) (request.RequestSession, error) { | ||||
| 					rqs.Continue = true | ||||
| 					rqs.Engine = me | ||||
| 					return rqs, nil | ||||
| 				} | ||||
| 				mh.GetConfigFunc = func() engine.Config { return engine.Config{} } | ||||
| 				mh.GetRequestParserFunc = func() handlers.RequestParser { return mrp } | ||||
| 				mh.OutputFunc = func(rs handlers.RequestSession) (handlers.RequestSession, error) { return rs, nil } | ||||
| 				mh.ResetFunc = func(rs handlers.RequestSession) (handlers.RequestSession, error) { return rs, nil } | ||||
| 				mh.GetRequestParserFunc = func() request.RequestParser { return mrp } | ||||
| 				mh.OutputFunc = func(rs request.RequestSession) (request.RequestSession, error) { return rs, nil } | ||||
| 				mh.ResetFunc = func(rs request.RequestSession) (request.RequestSession, error) { return rs, nil } | ||||
| 				me.FlushFunc = func(context.Context, io.Writer) (int, error) { return 0, nil } | ||||
| 			}, | ||||
| 			formData: url.Values{ | ||||
| @ -74,7 +75,7 @@ func TestATSessionHandler_ServeHTTP(t *testing.T) { | ||||
| 					return "", errors.New("no phone number found") | ||||
| 				} | ||||
| 				mh.GetConfigFunc = func() engine.Config { return engine.Config{} } | ||||
| 				mh.GetRequestParserFunc = func() handlers.RequestParser { return mrp } | ||||
| 				mh.GetRequestParserFunc = func() request.RequestParser { return mrp } | ||||
| 			}, | ||||
| 			formData: url.Values{ | ||||
| 				"text": []string{"1*2*3"}, | ||||
| @ -93,7 +94,7 @@ func TestATSessionHandler_ServeHTTP(t *testing.T) { | ||||
| 					return nil, errors.New("no input found") | ||||
| 				} | ||||
| 				mh.GetConfigFunc = func() engine.Config { return engine.Config{} } | ||||
| 				mh.GetRequestParserFunc = func() handlers.RequestParser { return mrp } | ||||
| 				mh.GetRequestParserFunc = func() request.RequestParser { return mrp } | ||||
| 			}, | ||||
| 			formData: url.Values{ | ||||
| 				"phoneNumber": []string{"+1234567890"}, | ||||
| @ -114,11 +115,11 @@ func TestATSessionHandler_ServeHTTP(t *testing.T) { | ||||
| 					parts := strings.Split(text, "*") | ||||
| 					return []byte(parts[len(parts)-1]), nil | ||||
| 				} | ||||
| 				mh.ProcessFunc = func(rqs handlers.RequestSession) (handlers.RequestSession, error) { | ||||
| 					return rqs, handlers.ErrStorage | ||||
| 				mh.ProcessFunc = func(rqs request.RequestSession) (request.RequestSession, error) { | ||||
| 					return rqs, verrors.ErrStorage | ||||
| 				} | ||||
| 				mh.GetConfigFunc = func() engine.Config { return engine.Config{} } | ||||
| 				mh.GetRequestParserFunc = func() handlers.RequestParser { return mrp } | ||||
| 				mh.GetRequestParserFunc = func() request.RequestParser { return mrp } | ||||
| 			}, | ||||
| 			formData: url.Values{ | ||||
| 				"phoneNumber": []string{"+1234567890"}, | ||||
| @ -158,13 +159,13 @@ func TestATSessionHandler_ServeHTTP(t *testing.T) { | ||||
| func TestATSessionHandler_Output(t *testing.T) { | ||||
| 	tests := []struct { | ||||
| 		name           string | ||||
| 		input          handlers.RequestSession | ||||
| 		input          request.RequestSession | ||||
| 		expectedPrefix string | ||||
| 		expectedError  bool | ||||
| 	}{ | ||||
| 		{ | ||||
| 			name: "Continue true", | ||||
| 			input: handlers.RequestSession{ | ||||
| 			input: request.RequestSession{ | ||||
| 				Continue: true, | ||||
| 				Engine: &httpmocks.MockEngine{ | ||||
| 					FlushFunc: func(context.Context, io.Writer) (int, error) { | ||||
| @ -178,7 +179,7 @@ func TestATSessionHandler_Output(t *testing.T) { | ||||
| 		}, | ||||
| 		{ | ||||
| 			name: "Continue false", | ||||
| 			input: handlers.RequestSession{ | ||||
| 			input: request.RequestSession{ | ||||
| 				Continue: false, | ||||
| 				Engine: &httpmocks.MockEngine{ | ||||
| 					FlushFunc: func(context.Context, io.Writer) (int, error) { | ||||
| @ -192,7 +193,7 @@ func TestATSessionHandler_Output(t *testing.T) { | ||||
| 		}, | ||||
| 		{ | ||||
| 			name: "Flush error", | ||||
| 			input: handlers.RequestSession{ | ||||
| 			input: request.RequestSession{ | ||||
| 				Continue: true, | ||||
| 				Engine: &httpmocks.MockEngine{ | ||||
| 					FlushFunc: func(context.Context, io.Writer) (int, error) { | ||||
|  | ||||
							
								
								
									
										34
									
								
								internal/args/lang.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										34
									
								
								internal/args/lang.go
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,34 @@ | ||||
| package args | ||||
| 
 | ||||
| import ( | ||||
| 	"strings" | ||||
| 
 | ||||
| 	"git.defalsify.org/vise.git/lang" | ||||
| ) | ||||
| 
 | ||||
| type LangVar struct { | ||||
| 	v []lang.Language | ||||
| } | ||||
| 
 | ||||
| func(lv *LangVar) Set(s string) error { | ||||
| 	v, err := lang.LanguageFromCode(s) | ||||
| 	if err != nil { | ||||
| 		return err | ||||
| 	} | ||||
| 	lv.v = append(lv.v, v) | ||||
| 	return err | ||||
| } | ||||
| 
 | ||||
| func(lv *LangVar) String() string { | ||||
| 	var s []string | ||||
| 	for _, v := range(lv.v) { | ||||
| 		s = append(s, v.Code) | ||||
| 	} | ||||
| 	return strings.Join(s, ",") | ||||
| } | ||||
| 
 | ||||
| func(lv *LangVar) Langs() []lang.Language { | ||||
| 	return lv.v | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user