From c3067062c2f8d81badb40e812f3fed06f110cb4f Mon Sep 17 00:00:00 2001 From: taknb2nch Date: Mon, 7 Apr 2014 10:37:42 +0900 Subject: [PATCH] update pop3proto test --- pop3proto.go | 34 ++++++++++++++++++++++---------- pop3proto_test.go | 50 ++++++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 73 insertions(+), 11 deletions(-) diff --git a/pop3proto.go b/pop3proto.go index e6c9b1b..a2a4c02 100644 --- a/pop3proto.go +++ b/pop3proto.go @@ -110,18 +110,32 @@ func (r *Reader) ReadResponse() (string, error) { } func (r *Reader) parseResponse(line string) (string, error) { - var index int + // var index int - if index = strings.Index(line, " "); index < 0 { - return "", ResponseError(fmt.Sprintf("invalid response format: %s", line)) - } + // if index = strings.Index(line, " "); index < 0 { + // return "", ResponseError(fmt.Sprintf("invalid response format: %s", line)) + // } - switch strings.ToUpper(line[:index]) { - case "+OK": - return line[index+1:], nil - case "-ERR": - return "", ResponseError(line[index+1:]) - default: + // switch strings.ToUpper(line[:index]) { + // case "+OK": + // return line[index+1:], nil + // case "-ERR": + // return "", ResponseError(line[index+1:]) + // default: + // return "", ResponseError(fmt.Sprintf("unknown response: %s", line)) + // } + + s := strings.ToUpper(line) + + if s == "+OK" { + return "", nil + } else if strings.HasPrefix(s, "+OK ") { + return s[4:], nil + } else if s == "-ERR" { + return "", ResponseError("") + } else if strings.HasPrefix(s, "-ERR ") { + return "", ResponseError(s[5:]) + } else { return "", ResponseError(fmt.Sprintf("unknown response: %s", line)) } } diff --git a/pop3proto_test.go b/pop3proto_test.go index 835c02c..215ff79 100644 --- a/pop3proto_test.go +++ b/pop3proto_test.go @@ -59,15 +59,51 @@ func TestReadResponse(t *testing.T) { t.Fatalf("%v, %v", s, err) } + r = reader("+OK\n") + s, err = r.ReadResponse() + if s != "" || err != nil { + t.Fatalf("%v, %v", s, err) + } + + r = reader("+OK \n") + s, err = r.ReadResponse() + if s != "" || err != nil { + t.Fatalf("%v, %v", s, err) + } + + r = reader("+OKAY\n") + s, err = r.ReadResponse() + if s != "" || err == nil || err.Error() != "unknown response: +OKAY" { + t.Fatalf("%v, %v", s, err) + } + r = reader("-ERR message\n") s, err = r.ReadResponse() if s != "" || err == nil || err.Error() != "message" { t.Fatalf("%v, %v", s, err) } + r = reader("-ERR\n") + s, err = r.ReadResponse() + if s != "" || err == nil || err.Error() != "" { + t.Fatalf("%v, %v", s, err) + } + + r = reader("-ERR \n") + s, err = r.ReadResponse() + if s != "" || err == nil || err.Error() != "" { + t.Fatalf("%v, %v", s, err) + } + + r = reader("-ERROR\n") + s, err = r.ReadResponse() + if s != "" || err == nil || err.Error() != "unknown response: -ERROR" { + t.Fatalf("%v, %v", s, err) + } + r = reader("message\n") s, err = r.ReadResponse() - if s != "" || err == nil || err.Error() != "invalid response format: message" { + if s != "" || err == nil || err.Error() != "unknown response: message" { t.Fatalf("%v, %v", s, err) } @@ -76,6 +112,18 @@ func TestReadResponse(t *testing.T) { if s != "" || err == nil || err.Error() != "unknown response: * message" { t.Fatalf("%v, %v", s, err) } + + r = reader(" message\n") + s, err = r.ReadResponse() + if s != "" || err == nil || err.Error() != "unknown response: message" { + t.Fatalf("%v, %v", s, err) + } + + r = reader("\n") + s, err = r.ReadResponse() + if s != "" || err == nil || err.Error() != "unknown response: " { + t.Fatalf("%v, %v", s, err) + } } func TestWriteLine(t *testing.T) {