-
Notifications
You must be signed in to change notification settings - Fork 18
/
Copy pathsys_test.go
91 lines (76 loc) · 2.52 KB
/
sys_test.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
//go:build windows
// +build windows
package wincred
import (
"errors"
"testing"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/mock"
)
type mockProc struct {
mock.Mock
orig proc
target *proc
}
func (t *mockProc) Setup(target *proc) {
t.target = target
t.orig = *t.target
*(t.target) = t
}
func (t *mockProc) TearDown() {
*(t.target) = t.orig
}
func (t *mockProc) Call(a ...uintptr) (r1, r2 uintptr, lastErr error) {
args := t.Called(a)
return uintptr(args.Int(0)), uintptr(args.Int(1)), args.Error(2)
}
func TestSysCredWrite_MockFailure(t *testing.T) {
// Mock `CreadWrite`: returns failure state and the error
mockCredWrite := new(mockProc)
mockCredWrite.On("Call", mock.AnythingOfType("[]uintptr")).Return(0, 0, errors.New("test error"))
mockCredWrite.Setup(&procCredWrite)
defer mockCredWrite.TearDown()
// Test it:
var err error
assert.NotPanics(t, func() { err = sysCredWrite(new(Credential), sysCRED_TYPE_GENERIC) })
assert.NotNil(t, err)
assert.Equal(t, "test error", err.Error())
mockCredWrite.AssertNumberOfCalls(t, "Call", 1)
}
func TestSysCredWrite_Mock(t *testing.T) {
// Mock `CreadWrite`: returns success state
mockCredWrite := new(mockProc)
mockCredWrite.On("Call", mock.AnythingOfType("[]uintptr")).Return(1, 0, nil)
mockCredWrite.Setup(&procCredWrite)
defer mockCredWrite.TearDown()
// Test it:
var err error
assert.NotPanics(t, func() { err = sysCredWrite(new(Credential), sysCRED_TYPE_GENERIC) })
assert.Nil(t, err)
mockCredWrite.AssertNumberOfCalls(t, "Call", 1)
}
func TestSysCredDelete_MockFailure(t *testing.T) {
// Mock `CreadDelete`: returns failure state and an error
mockCredDelete := new(mockProc)
mockCredDelete.On("Call", mock.AnythingOfType("[]uintptr")).Return(0, 0, errors.New("test error"))
mockCredDelete.Setup(&procCredDelete)
defer mockCredDelete.TearDown()
// Test it:
var err error
assert.NotPanics(t, func() { err = sysCredDelete(new(Credential), sysCRED_TYPE_GENERIC) })
assert.NotNil(t, err)
assert.Equal(t, "test error", err.Error())
mockCredDelete.AssertNumberOfCalls(t, "Call", 1)
}
func TestSysCredDelete_Mock(t *testing.T) {
// Mock `CreadDelete`: returns success state
mockCredDelete := new(mockProc)
mockCredDelete.On("Call", mock.AnythingOfType("[]uintptr")).Return(1, 0, nil)
mockCredDelete.Setup(&procCredDelete)
defer mockCredDelete.TearDown()
// Test it:
var err error
assert.NotPanics(t, func() { err = sysCredDelete(new(Credential), sysCRED_TYPE_GENERIC) })
assert.Nil(t, err)
mockCredDelete.AssertNumberOfCalls(t, "Call", 1)
}