package mailstore

import (
	"testing"

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

func TestConnectionGenerationBindsExactCredentialAndConfig(t *testing.T) {
	t.Parallel()

	base := Connection{
		ID:                   "appconn_1",
		EncryptedCredentials: []byte(`{"ciphertext":"one"}`),
		Config:               []byte(`{"schemaVersion":1}`),
	}
	first := connectionGeneration(base)
	require.Regexp(t, `^sha256:[0-9a-f]{64}$`, first)
	require.Equal(t, first, connectionGeneration(base))

	changedCredential := base
	changedCredential.EncryptedCredentials = []byte(`{"ciphertext":"two"}`)
	require.NotEqual(t, first, connectionGeneration(changedCredential))

	changedConfig := base
	changedConfig.Config = []byte(`{"schemaVersion":2}`)
	require.NotEqual(t, first, connectionGeneration(changedConfig))

	changedIdentity := base
	changedIdentity.ID = "appconn_2"
	require.NotEqual(t, first, connectionGeneration(changedIdentity))
}
