// Copyright 2018 syzkaller project authors. All rights reserved.
// Use of this source code is governed by Apache 2 LICENSE that can be found in the LICENSE file.
package main
import (
"fmt"
"testing"
)
func TestAuth(t *testing.T) {
hub := &Hub{
keys: map[string]string{
"foo": "1234",
"bar": "abcd",
},
}
tests := []struct {
client string
key string
manager string
result string
ok bool
}{
{
client: "",
key: "",
manager: "",
result: "",
ok: false,
},
{
client: "",
key: "1234",
manager: "manager",
result: "",
ok: false,
},
{
client: "foo",
key: "",
manager: "foo",
result: "",
ok: false,
},
{
client: "foo",
key: "123",
manager: "foo",
result: "",
ok: false,
},
{
client: "foo",
key: "abcd",
manager: "foo",
result: "",
ok: false,
},
{
client: "foo",
key: "1234",
manager: "foo",
result: "foo",
ok: true,
},
{
client: "foo",
key: "1234",
manager: "foo-suffix",
result: "foo-suffix",
ok: true,
},
{
client: "foo",
key: "1234",
manager: "",
result: "foo",
ok: true,
},
{
client: "foo",
key: "1234",
manager: "bar",
result: "",
ok: false,
},
}
for _, test := range tests {
t.Run(fmt.Sprintf("%q/%q/%q", test.client, test.key, test.manager), func(t *testing.T) {
manager, err := hub.auth(test.client, test.key, test.manager)
if !test.ok && err == nil {
t.Fatalf("auth is expected to fail, but it did not")
}
if test.ok && err != nil {
t.Fatalf("auth is not expected to fail, but it did: %v", err)
}
if manager != test.result {
t.Fatalf("got bad manager %q, want %q", manager, test.result)
}
})
}
}