package routing

import "testing"

func Test_validHMAC(t *testing.T) {
	type args struct {
		username string
		userHMAC string
		secret   string
	}
	tests := []struct {
		name    string
		args    args
		want    bool
		wantErr bool
	}{
		{
			name:    "invalid hmac",
			args:    args{},
			wantErr: false,
			want:    false,
		},
		// $ echo -n '@alice:localhost' | openssl sha256 -hmac 'helloWorld'                                              27m ⚑ ◒  15:35:54
		//(stdin)= 121c9bab767ed87a3136db0c3002144dfe414720aa328d235199082e4757541e
		//
		{
			name: "valid hmac",
			args: args{
				username: "@alice:localhost",
				userHMAC: "121c9bab767ed87a3136db0c3002144dfe414720aa328d235199082e4757541e",
				secret:   "helloWorld",
			},
			want: true,
		},
	}
	for _, tt := range tests {
		t.Run(tt.name, func(t *testing.T) {
			got, err := validHMAC(tt.args.username, tt.args.userHMAC, tt.args.secret)
			if (err != nil) != tt.wantErr {
				t.Errorf("validHMAC() error = %v, wantErr %v", err, tt.wantErr)
				return
			}
			if got != tt.want {
				t.Errorf("validHMAC() got = %v, want %v", got, tt.want)
			}
		})
	}
}