Ctrl K
ComunidadGuías…

pkg/pairingcode/pairingcode_test.go

Rama master · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
package pairingcode

import (
	"strings"
	"testing"

	"github.com/stretchr/testify/assert"
)

func TestNew(t *testing.T) {
	for _, length := range []int{DeviceCodeLength, InviteCodeLength} {
		seen := make(map[string]struct{})

		for range 2000 {
			code := New(length)

			assert.Len(t, code, length)
			assert.Equal(t, strings.ToUpper(code), code, "code must be uppercase")
			assert.NotContains(t, code, "-", "canonical code has no separator")

			for _, r := range code {
				assert.Truef(t, strings.ContainsRune(Alphabet, r), "unexpected char %q", r)
			}

			for _, bad := range []string{"0", "O", "1", "I", "L", "U"} {
				assert.NotContains(t, code, bad)
			}

			seen[code] = struct{}{}
		}

		assert.Len(t, seen, 2000, "expected all generated codes to be unique")
	}
}

func TestNormalize(t *testing.T) {
	cases := []struct {
		in       string
		expected string
	}{
		{"WXYZ2K7Q", "WXYZ2K7Q"},
		{"wxyz2k7q", "WXYZ2K7Q"},
		{"wxyz-2k7q", "WXYZ2K7Q"},
		{"  WXYZ 2K7Q ", "WXYZ2K7Q"},
		{"", ""},
	}

	for _, tc := range cases {
		assert.Equal(t, tc.expected, Normalize(tc.in))
	}
}

func TestIsValid(t *testing.T) {
	assert.True(t, IsValid("WXYZ2K7Q", DeviceCodeLength))

	code := New(InviteCodeLength)
	assert.True(t, IsValid(code, InviteCodeLength))

	assert.False(t, IsValid("", DeviceCodeLength))
	assert.False(t, IsValid("WXYZ2K7", DeviceCodeLength))
	assert.False(t, IsValid("WXYZ2K7QQ", DeviceCodeLength))
	assert.False(t, IsValid("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", DeviceCodeLength))

	assert.False(t, IsValid("WXYZ2K7O", DeviceCodeLength), "O not in alphabet")
	assert.False(t, IsValid("WXYZ2K71", DeviceCodeLength), "1 not in alphabet")
	assert.False(t, IsValid("wxyz2k7q", DeviceCodeLength), "lowercase is not canonical")
	assert.False(t, IsValid("WXYZ-2K7", DeviceCodeLength), "hyphen is not canonical")
}