diff options
author | kali kaneko (leap communications) <kali@leap.se> | 2020-02-24 18:53:18 +0100 |
---|---|---|
committer | kali kaneko (leap communications) <kali@leap.se> | 2020-02-24 18:56:32 +0100 |
commit | a0bc2768c04255e13ef87798d87e4916d7bf17fc (patch) | |
tree | 90e69481cbd2d5da43e536c46f2bd9b6a672e738 /pkg/auth/sip2/client.go | |
parent | 06cbe623a7aa6576e4d24fefd056b13d2b0f35cf (diff) |
[tests] return auth errors
and add unit tests for message parsing
Diffstat (limited to 'pkg/auth/sip2/client.go')
-rw-r--r-- | pkg/auth/sip2/client.go | 27 |
1 files changed, 21 insertions, 6 deletions
diff --git a/pkg/auth/sip2/client.go b/pkg/auth/sip2/client.go index 623dc12..567d908 100644 --- a/pkg/auth/sip2/client.go +++ b/pkg/auth/sip2/client.go @@ -213,17 +213,32 @@ func (c *sipClient) CheckCredentials(credentials *creds.Credentials) (bool, erro statusMsg, err = c.parseResponse(resp) if err != nil { - log.Println("Error while parsing response") + log.Println("Error while parsing response:", resp) return false, err } - if value, ok := c.parser.getFieldValue(statusMsg, validPatron); ok && value == yes { - if value, ok := c.parser.getFieldValue(statusMsg, validPatronPassword); ok && value == yes { + if valid, err := isValidUser(statusMsg); valid { + if valid, err := isValidPassword(statusMsg); valid { return true, nil + } else { + return false, err } + } else { + return false, err } +} - // TODO log whatever error we can find (AF, Screen Message, for instance) - log.Printf("AUTH ERROR. RESPONSE: %s\n", resp) +func isValidUser(m *message) (bool, error) { + value, ok := m.getFieldValue(validPatron) + if !ok { + return false, errors.New("parse error: expected BL field") + } + return toBool(value) +} - return false, errors.New("unknown error while checking credentials") +func isValidPassword(m *message) (bool, error) { + value, ok := m.getFieldValue(validPatronPassword) + if !ok { + return false, errors.New("parse error: expected CQ field") + } + return toBool(value) } |