package ports import ( "testing" "time" "galaxy/authsession/internal/domain/challenge" "galaxy/authsession/internal/domain/common" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" ) func TestSendEmailCodeAbuseOutcomeIsKnown(t *testing.T) { t.Parallel() assert.True(t, SendEmailCodeAbuseOutcomeAllowed.IsKnown()) assert.True(t, SendEmailCodeAbuseOutcomeThrottled.IsKnown()) assert.False(t, SendEmailCodeAbuseOutcome("unknown").IsKnown()) } func TestSendEmailCodeAbuseInputAndResultValidate(t *testing.T) { t.Parallel() input := SendEmailCodeAbuseInput{ Email: common.Email("pilot@example.com"), Now: time.Unix(10, 0).UTC(), } require.NoError(t, input.Validate()) result := SendEmailCodeAbuseResult{Outcome: SendEmailCodeAbuseOutcomeThrottled} require.NoError(t, result.Validate()) } func TestSendEmailCodeThrottleStatusToChallengeStatus(t *testing.T) { t.Parallel() status, deliveryState, err := SendEmailCodeThrottleStatusToChallengeStatus(SendEmailCodeAbuseOutcomeAllowed) require.NoError(t, err) assert.Equal(t, challenge.StatusPendingSend, status) assert.Equal(t, challenge.DeliveryPending, deliveryState) status, deliveryState, err = SendEmailCodeThrottleStatusToChallengeStatus(SendEmailCodeAbuseOutcomeThrottled) require.NoError(t, err) assert.Equal(t, challenge.StatusDeliveryThrottled, status) assert.Equal(t, challenge.DeliveryThrottled, deliveryState) }