package rules import ( "testing" E "github.com/yusing/go-proxy/internal/error" . "github.com/yusing/go-proxy/internal/utils/testing" ) func TestParseOn(t *testing.T) { tests := []struct { name string input string wantErr E.Error }{ // header { name: "header_valid", input: "header Connection Upgrade", wantErr: nil, }, { name: "header_invalid", input: "header Connection", wantErr: ErrInvalidArguments, }, // query { name: "query_valid", input: "query key value", wantErr: nil, }, { name: "query_invalid", input: "query key", wantErr: ErrInvalidArguments, }, // method { name: "method_valid", input: "method GET", wantErr: nil, }, { name: "method_invalid", input: "method", wantErr: ErrInvalidArguments, }, // path { name: "path_valid", input: "path /home", wantErr: nil, }, { name: "path_invalid", input: "path", wantErr: ErrInvalidArguments, }, // remote { name: "remote_valid", input: "remote 127.0.0.1", wantErr: nil, }, { name: "remote_invalid", input: "remote", wantErr: ErrInvalidArguments, }, { name: "unknown_target", input: "unknown", wantErr: ErrInvalidOnTarget, }, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { on := &RuleOn{} err := on.Parse(tt.input) if tt.wantErr != nil { ExpectError(t, tt.wantErr, err) } else { ExpectNoError(t, err) } }) } }