-
Notifications
You must be signed in to change notification settings - Fork 28
/
create_test.go
152 lines (134 loc) · 4.34 KB
/
create_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
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
// SPDX-License-Identifier: Apache-2.0
package secret
import (
"context"
"reflect"
"testing"
"github.com/DATA-DOG/go-sqlmock"
"github.com/go-vela/types/library"
)
func TestSecret_Engine_CreateSecret(t *testing.T) {
// setup types
_secretRepo := testSecret()
_secretRepo.SetID(1)
_secretRepo.SetOrg("foo")
_secretRepo.SetRepo("bar")
_secretRepo.SetName("baz")
_secretRepo.SetValue("foob")
_secretRepo.SetType("repo")
_secretRepo.SetCreatedAt(1)
_secretRepo.SetCreatedBy("user")
_secretRepo.SetUpdatedAt(1)
_secretRepo.SetUpdatedBy("user2")
_secretRepo.SetAllowEvents(library.NewEventsFromMask(1))
_secretOrg := testSecret()
_secretOrg.SetID(2)
_secretOrg.SetOrg("foo")
_secretOrg.SetRepo("*")
_secretOrg.SetName("bar")
_secretOrg.SetValue("baz")
_secretOrg.SetType("org")
_secretOrg.SetCreatedAt(1)
_secretOrg.SetCreatedBy("user")
_secretOrg.SetUpdatedAt(1)
_secretOrg.SetUpdatedBy("user2")
_secretOrg.SetAllowEvents(library.NewEventsFromMask(3))
_secretShared := testSecret()
_secretShared.SetID(3)
_secretShared.SetOrg("foo")
_secretShared.SetTeam("bar")
_secretShared.SetName("baz")
_secretShared.SetValue("foob")
_secretShared.SetType("shared")
_secretShared.SetCreatedAt(1)
_secretShared.SetCreatedBy("user")
_secretShared.SetUpdatedAt(1)
_secretShared.SetUpdatedBy("user2")
_secretShared.SetAllowEvents(library.NewEventsFromMask(1))
_postgres, _mock := testPostgres(t)
defer func() { _sql, _ := _postgres.client.DB(); _sql.Close() }()
// create expected result in mock
_rows := sqlmock.NewRows([]string{"id"}).AddRow(1)
// ensure the mock expects the repo secrets query
_mock.ExpectQuery(`INSERT INTO "secrets"
("org","repo","team","name","value","type","images","events","allow_events","allow_command","allow_substitution","created_at","created_by","updated_at","updated_by","id")
VALUES ($1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12,$13,$14,$15,$16) RETURNING "id"`).
WithArgs("foo", "bar", nil, "baz", AnyArgument{}, "repo", nil, nil, 1, false, false, 1, "user", 1, "user2", 1).
WillReturnRows(_rows)
// ensure the mock expects the org secrets query
_mock.ExpectQuery(`INSERT INTO "secrets"
("org","repo","team","name","value","type","images","events","allow_events","allow_command","allow_substitution","created_at","created_by","updated_at","updated_by","id")
VALUES ($1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12,$13,$14,$15,$16) RETURNING "id"`).
WithArgs("foo", "*", nil, "bar", AnyArgument{}, "org", nil, nil, 3, false, false, 1, "user", 1, "user2", 2).
WillReturnRows(_rows)
// ensure the mock expects the shared secrets query
_mock.ExpectQuery(`INSERT INTO "secrets"
("org","repo","team","name","value","type","images","events","allow_events","allow_command","allow_substitution","created_at","created_by","updated_at","updated_by","id")
VALUES ($1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12,$13,$14,$15,$16) RETURNING "id"`).
WithArgs("foo", nil, "bar", "baz", AnyArgument{}, "shared", nil, nil, 1, false, false, 1, "user", 1, "user2", 3).
WillReturnRows(_rows)
_sqlite := testSqlite(t)
defer func() { _sql, _ := _sqlite.client.DB(); _sql.Close() }()
// setup tests
tests := []struct {
failure bool
name string
database *engine
secret *library.Secret
}{
{
failure: false,
name: "postgres with repo",
database: _postgres,
secret: _secretRepo,
},
{
failure: false,
name: "postgres with org",
database: _postgres,
secret: _secretOrg,
},
{
failure: false,
name: "postgres with shared",
database: _postgres,
secret: _secretShared,
},
{
failure: false,
name: "sqlite3 with repo",
database: _sqlite,
secret: _secretRepo,
},
{
failure: false,
name: "sqlite3 with org",
database: _sqlite,
secret: _secretOrg,
},
{
failure: false,
name: "sqlite3 with shared",
database: _sqlite,
secret: _secretShared,
},
}
// run tests
for _, test := range tests {
t.Run(test.name, func(t *testing.T) {
got, err := test.database.CreateSecret(context.TODO(), test.secret)
if test.failure {
if err == nil {
t.Errorf("CreateSecret for %s should have returned err", test.name)
}
return
}
if err != nil {
t.Errorf("CreateSecret for %s returned err: %v", test.name, err)
}
if !reflect.DeepEqual(got, test.secret) {
t.Errorf("CreateSecret is %s, want %s", got, test.secret)
}
})
}
}