maddy

Fork https://github.com/foxcpp/maddy

git clone git://git.lin.moe/go/maddy.git

 1/*
 2Maddy Mail Server - Composable all-in-one email server.
 3Copyright © 2019-2020 Max Mazurov <fox.cpp@disroot.org>, Maddy Mail Server contributors
 4
 5This program is free software: you can redistribute it and/or modify
 6it under the terms of the GNU General Public License as published by
 7the Free Software Foundation, either version 3 of the License, or
 8(at your option) any later version.
 9
10This program is distributed in the hope that it will be useful,
11but WITHOUT ANY WARRANTY; without even the implied warranty of
12MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13GNU General Public License for more details.
14
15You should have received a copy of the GNU General Public License
16along with this program.  If not, see <https://www.gnu.org/licenses/>.
17*/
18
19package pass_table
20
21import (
22	"testing"
23
24	"github.com/foxcpp/maddy/framework/config"
25	"github.com/foxcpp/maddy/internal/testutils"
26)
27
28func TestAuth_AuthPlain(t *testing.T) {
29	addSHA256()
30
31	mod, err := New("pass_table", "", nil, []string{"dummy"})
32	if err != nil {
33		t.Fatal(err)
34	}
35	err = mod.Init(config.NewMap(nil, config.Node{
36		Children: []config.Node{},
37	}))
38	if err != nil {
39		t.Fatal(err)
40	}
41	a := mod.(*Auth)
42	a.table = testutils.Table{
43		M: map[string]string{
44			"foxcpp":       "sha256:U0FMVA==:8PDRAgaUqaLSk34WpYniXjaBgGM93Lc6iF4pw2slthw=",
45			"not-foxcpp":   "bcrypt:$2y$10$4tEJtJ6dApmhETg8tJ4WHOeMtmYXQwmHDKIyfg09Bw1F/smhLjlaa",
46			"not-foxcpp-2": "argon2:1:8:1:U0FBQUFBTFQ=:KHUshl3DcpHR3AoVd28ZeBGmZ1Fj1gwJgNn98Ia8DAvGHqI0BvFOMJPxtaAfO8F+qomm2O3h0P0yV50QGwXI/Q==",
47		},
48	}
49
50	check := func(user, pass string, ok bool) {
51		t.Helper()
52
53		err := a.AuthPlain(user, pass)
54		if (err == nil) != ok {
55			t.Errorf("ok=%v, err: %v", ok, err)
56		}
57	}
58
59	check("foxcpp", "password", true)
60	check("foxcpp", "different-password", false)
61	check("not-foxcpp", "password", true)
62	check("not-foxcpp", "different-password", false)
63	check("not-foxcpp-2", "password", true)
64}