ChaCha20-Poly1305, AES-256-GCM, Argon2 key derivation, OpenPGP challenge-response auth, and trust tier policy engine. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
66 lines
1.5 KiB
Go
66 lines
1.5 KiB
Go
package lthn
|
|
|
|
import (
|
|
"sync"
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
)
|
|
|
|
func TestHash(t *testing.T) {
|
|
hash := Hash("hello")
|
|
assert.NotEmpty(t, hash)
|
|
}
|
|
|
|
func TestVerify(t *testing.T) {
|
|
hash := Hash("hello")
|
|
assert.True(t, Verify("hello", hash))
|
|
assert.False(t, Verify("world", hash))
|
|
}
|
|
|
|
func TestCreateSalt_Good(t *testing.T) {
|
|
// "hello" reversed: "olleh" -> "0113h"
|
|
expected := "0113h"
|
|
actual := createSalt("hello")
|
|
assert.Equal(t, expected, actual, "Salt should be correctly created for 'hello'")
|
|
}
|
|
|
|
func TestCreateSalt_Bad(t *testing.T) {
|
|
// Test with an empty string
|
|
expected := ""
|
|
actual := createSalt("")
|
|
assert.Equal(t, expected, actual, "Salt for an empty string should be empty")
|
|
}
|
|
|
|
func TestCreateSalt_Ugly(t *testing.T) {
|
|
// Test with characters not in the keyMap
|
|
input := "world123"
|
|
// "world123" reversed: "321dlrow" -> "e2ld1r0w"
|
|
expected := "e2ld1r0w"
|
|
actual := createSalt(input)
|
|
assert.Equal(t, expected, actual, "Salt should handle characters not in the keyMap")
|
|
|
|
// Test with only characters in the keyMap
|
|
input = "oleta"
|
|
// "oleta" reversed: "atelo" -> "47310"
|
|
expected = "47310"
|
|
actual = createSalt(input)
|
|
assert.Equal(t, expected, actual, "Salt should correctly handle strings with only keyMap characters")
|
|
}
|
|
|
|
var testKeyMapMu sync.Mutex
|
|
|
|
func TestSetKeyMap(t *testing.T) {
|
|
testKeyMapMu.Lock()
|
|
originalKeyMap := GetKeyMap()
|
|
t.Cleanup(func() {
|
|
SetKeyMap(originalKeyMap)
|
|
testKeyMapMu.Unlock()
|
|
})
|
|
|
|
newKeyMap := map[rune]rune{
|
|
'a': 'b',
|
|
}
|
|
SetKeyMap(newKeyMap)
|
|
assert.Equal(t, newKeyMap, GetKeyMap())
|
|
}
|