auth

Paddy 2014-09-29 Parent:85f1baf7a9ac Child:e45bfa2abc00

48:d78418fb9f56 Go to Latest

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.

History
     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 +}