Rehabilitate builds and tests

This commit is contained in:
lash
2025-01-09 14:05:56 +00:00
parent 430c88aa93
commit cb9776cbbf
7 changed files with 73 additions and 25 deletions

View File

@@ -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)

View File

@@ -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)

View File

@@ -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
View 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
}