github.com/google/syzkaller@v0.0.0-20240517125934-c0f1611a36d6/syz-hub/hub_test.go (about)

     1  // Copyright 2018 syzkaller project authors. All rights reserved.
     2  // Use of this source code is governed by Apache 2 LICENSE that can be found in the LICENSE file.
     3  
     4  package main
     5  
     6  import (
     7  	"fmt"
     8  	"testing"
     9  )
    10  
    11  func TestAuth(t *testing.T) {
    12  	hub := &Hub{
    13  		keys: map[string]string{
    14  			"foo": "1234",
    15  			"bar": "abcd",
    16  		},
    17  	}
    18  	tests := []struct {
    19  		client  string
    20  		key     string
    21  		manager string
    22  		result  string
    23  		ok      bool
    24  	}{
    25  		{
    26  			client:  "",
    27  			key:     "",
    28  			manager: "",
    29  			result:  "",
    30  			ok:      false,
    31  		},
    32  		{
    33  			client:  "",
    34  			key:     "1234",
    35  			manager: "manager",
    36  			result:  "",
    37  			ok:      false,
    38  		},
    39  		{
    40  			client:  "foo",
    41  			key:     "",
    42  			manager: "foo",
    43  			result:  "",
    44  			ok:      false,
    45  		},
    46  		{
    47  			client:  "foo",
    48  			key:     "123",
    49  			manager: "foo",
    50  			result:  "",
    51  			ok:      false,
    52  		},
    53  		{
    54  			client:  "foo",
    55  			key:     "abcd",
    56  			manager: "foo",
    57  			result:  "",
    58  			ok:      false,
    59  		},
    60  		{
    61  			client:  "foo",
    62  			key:     "1234",
    63  			manager: "foo",
    64  			result:  "foo",
    65  			ok:      true,
    66  		},
    67  		{
    68  			client:  "foo",
    69  			key:     "1234",
    70  			manager: "foo-suffix",
    71  			result:  "foo-suffix",
    72  			ok:      true,
    73  		},
    74  		{
    75  			client:  "foo",
    76  			key:     "1234",
    77  			manager: "",
    78  			result:  "foo",
    79  			ok:      true,
    80  		},
    81  		{
    82  			client:  "foo",
    83  			key:     "1234",
    84  			manager: "bar",
    85  			result:  "",
    86  			ok:      false,
    87  		},
    88  	}
    89  	for _, test := range tests {
    90  		t.Run(fmt.Sprintf("%q/%q/%q", test.client, test.key, test.manager), func(t *testing.T) {
    91  			manager, err := hub.checkManager(test.client, test.key, test.manager)
    92  			if !test.ok && err == nil {
    93  				t.Fatalf("auth is expected to fail, but it did not")
    94  			}
    95  			if test.ok && err != nil {
    96  				t.Fatalf("auth is not expected to fail, but it did: %v", err)
    97  			}
    98  			if manager != test.result {
    99  				t.Fatalf("got bad manager %q, want %q", manager, test.result)
   100  			}
   101  		})
   102  	}
   103  }