auth
auth/profile_test.go
Validate profile changes. Implement validation for ProfileChange and BulkProfileChange structs. Add unit tests to ensure that validation is working as intended.
1.1 --- a/profile_test.go Sat Sep 27 22:25:06 2014 -0400 1.2 +++ b/profile_test.go Mon Sep 29 00:58:42 2014 -0400 1.3 @@ -404,3 +404,59 @@ 1.4 } 1.5 } 1.6 } 1.7 + 1.8 +func TestProfileChangeValidation(t *testing.T) { 1.9 + t.Parallel() 1.10 + passphraseScheme := 1 1.11 + passphraseReset := "reset" 1.12 + salt := "salt" 1.13 + iterations := int64(100) 1.14 + shortPassphrase := "a" 1.15 + longPassphrase := "this passphrase is much too long for anyone to remember, and therefore should probably be discouraged by the software, don't you think?" 1.16 + emptyName := "" 1.17 + enteredName := "Paddy" 1.18 + okPassphrase := "this is a decent passphrase" 1.19 + compromised := true 1.20 + lockedUntil := time.Now() 1.21 + resetCreated := time.Now() 1.22 + lastSeen := time.Now() 1.23 + changes := map[*ProfileChange]error{ 1.24 + &ProfileChange{}: ErrEmptyChange, 1.25 + &ProfileChange{PassphraseScheme: &passphraseScheme}: ErrMissingPassphrase, 1.26 + &ProfileChange{PassphraseScheme: &passphraseScheme, Passphrase: &okPassphrase}: nil, 1.27 + &ProfileChange{PassphraseReset: &passphraseReset}: ErrMissingPassphraseResetCreated, 1.28 + &ProfileChange{PassphraseReset: &passphraseReset, PassphraseResetCreated: &resetCreated}: nil, 1.29 + &ProfileChange{Salt: &salt}: ErrMissingPassphrase, 1.30 + &ProfileChange{Salt: &salt, Passphrase: &okPassphrase}: nil, 1.31 + &ProfileChange{Iterations: &iterations}: ErrMissingPassphrase, 1.32 + &ProfileChange{Iterations: &iterations, Passphrase: &okPassphrase}: nil, 1.33 + &ProfileChange{Passphrase: &shortPassphrase}: ErrPassphraseTooShort, 1.34 + &ProfileChange{Passphrase: &longPassphrase}: ErrPassphraseTooLong, 1.35 + &ProfileChange{Passphrase: &okPassphrase}: nil, 1.36 + &ProfileChange{Name: &emptyName}: nil, 1.37 + &ProfileChange{Name: &enteredName}: nil, 1.38 + &ProfileChange{Compromised: &compromised}: nil, 1.39 + &ProfileChange{LockedUntil: &lockedUntil}: nil, 1.40 + &ProfileChange{LastSeen: &lastSeen}: nil, 1.41 + &ProfileChange{PassphraseResetCreated: &resetCreated}: ErrMissingPassphraseReset, 1.42 + } 1.43 + for change, expectedErr := range changes { 1.44 + if err := change.Validate(); err != expectedErr { 1.45 + t.Errorf("Expected %+v to give an error of %v, gave %v", change, expectedErr, err) 1.46 + } 1.47 + } 1.48 +} 1.49 + 1.50 +func TestBulkProfileChangeValidation(t *testing.T) { 1.51 + t.Parallel() 1.52 + compromised := true 1.53 + changes := map[*BulkProfileChange]error{ 1.54 + &BulkProfileChange{}: ErrEmptyChange, 1.55 + &BulkProfileChange{Compromised: &compromised}: nil, 1.56 + } 1.57 + for change, expectedErr := range changes { 1.58 + if err := change.Validate(); err != expectedErr { 1.59 + t.Errorf("Expected %+v to give an error of %v, gave %v", change, expectedErr, err) 1.60 + } 1.61 + } 1.62 +}