github.com/oweisse/u-root@v0.0.0-20181109060735-d005ad25fef1/pkg/wpa/passphrase/passphrase_test.go (about)

     1  // Copyright 2018 the u-root Authors. All rights reserved
     2  // Use of this source code is governed by a BSD-style
     3  // license that can be found in the LICENSE file.
     4  
     5  package passphrase
     6  
     7  import (
     8  	"fmt"
     9  	"reflect"
    10  	"testing"
    11  )
    12  
    13  type RunTestCase struct {
    14  	name  string
    15  	essid string
    16  	pass  string
    17  	out   string
    18  	err   error
    19  }
    20  
    21  var (
    22  	essidStub     = "stub"
    23  	shortPass     = "aaaaaaa"                                                          // 7 chars
    24  	longPass      = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" // 64 chars
    25  	validPass     = "aaaaaaaaaaaaaaaa"                                                 // 16 chars
    26  	correctOutput = `network={
    27  	ssid="stub"
    28  	#psk="aaaaaaaaaaaaaaaa"
    29  	psk=e270ba95a72c6d922e902f65dfa23315f7ba43b69debc75167254acd778f2fe9
    30  }
    31  `
    32  	runTestCases = []RunTestCase{
    33  		{
    34  			name:  "No essid",
    35  			essid: "",
    36  			pass:  validPass,
    37  			out:   "",
    38  			err:   fmt.Errorf("essid cannot be empty"),
    39  		},
    40  		{
    41  			name:  "pass length is less than 8 chars",
    42  			essid: essidStub,
    43  			pass:  shortPass,
    44  			out:   "",
    45  			err:   fmt.Errorf("Passphrase must be 8..63 characters"),
    46  		},
    47  		{
    48  			name:  "pass length is more than 63 chars",
    49  			essid: essidStub,
    50  			pass:  longPass,
    51  			out:   "",
    52  			err:   fmt.Errorf("Passphrase must be 8..63 characters"),
    53  		},
    54  		{
    55  			name:  "Correct Input",
    56  			essid: essidStub,
    57  			pass:  validPass,
    58  			out:   correctOutput,
    59  			err:   nil,
    60  		},
    61  	}
    62  )
    63  
    64  func TestRun(t *testing.T) {
    65  	for _, test := range runTestCases {
    66  		out, err := Run(test.essid, test.pass)
    67  		if !reflect.DeepEqual(err, test.err) || string(out) != test.out {
    68  			t.Errorf("TEST %s\ngot:[%v, %v]\nwant:[%v, %v]", test.name, err, string(out), test.err, string(test.out))
    69  		}
    70  	}
    71  }