1
0
Fork 0
mirror of https://github.com/portainer/portainer.git synced 2025-07-22 23:09:41 +02:00

chore(unit-test): simplify teardown EE-5536 (#9015)

This commit is contained in:
andres-portainer 2023-05-30 11:02:22 -03:00 committed by GitHub
parent b498cd657f
commit eda07614ce
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
37 changed files with 110 additions and 218 deletions

View file

@ -91,8 +91,7 @@ func singleAPIRequest(h *Handler, jwt string, is *assert.Assertions, expect stri
func Test_customTemplateGitFetch(t *testing.T) {
is := assert.New(t)
_, store, teardown := datastore.MustNewTestStore(t, true, true)
defer teardown()
_, store := datastore.MustNewTestStore(t, true, true)
// create user(s)
user1 := &portainer.User{ID: 1, Username: "user-1", Role: portainer.StandardUserRole, PortainerAuthorizations: authorization.DefaultPortainerAuthorizations()}

View file

@ -13,8 +13,7 @@ import (
// Create
func TestCreateAndInspect(t *testing.T) {
handler, rawAPIKey, teardown := setupHandler(t)
defer teardown()
handler, rawAPIKey := setupHandler(t)
// Create Endpoint, EdgeGroup and EndpointRelation
endpoint := createEndpoint(t, handler.DataStore)
@ -100,8 +99,7 @@ func TestCreateAndInspect(t *testing.T) {
}
func TestCreateWithInvalidPayload(t *testing.T) {
handler, rawAPIKey, teardown := setupHandler(t)
defer teardown()
handler, rawAPIKey := setupHandler(t)
endpoint := createEndpoint(t, handler.DataStore)
edgeStack := createEdgeStack(t, handler.DataStore, endpoint.ID)

View file

@ -12,8 +12,7 @@ import (
// Delete
func TestDeleteAndInspect(t *testing.T) {
handler, rawAPIKey, teardown := setupHandler(t)
defer teardown()
handler, rawAPIKey := setupHandler(t)
// Create
endpoint := createEndpoint(t, handler.DataStore)
@ -73,8 +72,7 @@ func TestDeleteAndInspect(t *testing.T) {
}
func TestDeleteInvalidEdgeStack(t *testing.T) {
handler, rawAPIKey, teardown := setupHandler(t)
defer teardown()
handler, rawAPIKey := setupHandler(t)
cases := []struct {
Name string

View file

@ -8,8 +8,7 @@ import (
// Inspect
func TestInspectInvalidEdgeID(t *testing.T) {
handler, rawAPIKey, teardown := setupHandler(t)
defer teardown()
handler, rawAPIKey := setupHandler(t)
cases := []struct {
Name string

View file

@ -10,8 +10,7 @@ import (
)
func TestDeleteStatus(t *testing.T) {
handler, _, teardown := setupHandler(t)
defer teardown()
handler, _ := setupHandler(t)
endpoint := createEndpoint(t, handler.DataStore)
edgeStack := createEdgeStack(t, handler.DataStore, endpoint.ID)

View file

@ -13,8 +13,7 @@ import (
// Update Status
func TestUpdateStatusAndInspect(t *testing.T) {
handler, rawAPIKey, teardown := setupHandler(t)
defer teardown()
handler, rawAPIKey := setupHandler(t)
endpoint := createEndpoint(t, handler.DataStore)
edgeStack := createEdgeStack(t, handler.DataStore, endpoint.ID)
@ -79,8 +78,7 @@ func TestUpdateStatusAndInspect(t *testing.T) {
}
}
func TestUpdateStatusWithInvalidPayload(t *testing.T) {
handler, _, teardown := setupHandler(t)
defer teardown()
handler, _ := setupHandler(t)
endpoint := createEndpoint(t, handler.DataStore)
edgeStack := createEdgeStack(t, handler.DataStore, endpoint.ID)

View file

@ -19,28 +19,25 @@ import (
)
// Helpers
func setupHandler(t *testing.T) (*Handler, string, func()) {
func setupHandler(t *testing.T) (*Handler, string) {
t.Helper()
_, store, storeTeardown := datastore.MustNewTestStore(t, true, true)
_, store := datastore.MustNewTestStore(t, true, true)
jwtService, err := jwt.NewService("1h", store)
if err != nil {
storeTeardown()
t.Fatal(err)
}
user := &portainer.User{ID: 2, Username: "admin", Role: portainer.AdministratorRole}
err = store.User().Create(user)
if err != nil {
storeTeardown()
t.Fatal(err)
}
apiKeyService := apikey.NewAPIKeyService(store.APIKeyRepository(), store.User())
rawAPIKey, _, err := apiKeyService.GenerateApiKey(*user, "test")
if err != nil {
storeTeardown()
t.Fatal(err)
}
@ -56,7 +53,6 @@ func setupHandler(t *testing.T) (*Handler, string, func()) {
fs, err := filesystem.NewService(tmpDir, "")
if err != nil {
storeTeardown()
t.Fatal(err)
}
handler.FileService = fs
@ -74,7 +70,7 @@ func setupHandler(t *testing.T) (*Handler, string, func()) {
handler.GitService = testhelpers.NewGitService(errors.New("Clone error"), "git-service-id")
return handler, rawAPIKey, storeTeardown
return handler, rawAPIKey
}
func createEndpointWithId(t *testing.T, store dataservices.DataStore, endpointID portainer.EndpointID) portainer.Endpoint {

View file

@ -14,8 +14,7 @@ import (
// Update
func TestUpdateAndInspect(t *testing.T) {
handler, rawAPIKey, teardown := setupHandler(t)
defer teardown()
handler, rawAPIKey := setupHandler(t)
endpoint := createEndpoint(t, handler.DataStore)
edgeStack := createEdgeStack(t, handler.DataStore, endpoint.ID)
@ -116,8 +115,7 @@ func TestUpdateAndInspect(t *testing.T) {
}
func TestUpdateWithInvalidEdgeGroups(t *testing.T) {
handler, rawAPIKey, teardown := setupHandler(t)
defer teardown()
handler, rawAPIKey := setupHandler(t)
endpoint := createEndpoint(t, handler.DataStore)
edgeStack := createEdgeStack(t, handler.DataStore, endpoint.ID)
@ -197,8 +195,7 @@ func TestUpdateWithInvalidEdgeGroups(t *testing.T) {
}
func TestUpdateWithInvalidPayload(t *testing.T) {
handler, rawAPIKey, teardown := setupHandler(t)
defer teardown()
handler, rawAPIKey := setupHandler(t)
endpoint := createEndpoint(t, handler.DataStore)
edgeStack := createEdgeStack(t, handler.DataStore, endpoint.ID)

View file

@ -73,42 +73,35 @@ var endpointTestCases = []endpointTestCase{
},
}
func setupHandler(t *testing.T) (*Handler, func(), error) {
func mustSetupHandler(t *testing.T) *Handler {
tmpDir := t.TempDir()
fs, err := filesystem.NewService(tmpDir, "")
if err != nil {
return nil, nil, fmt.Errorf("could not start a new filesystem service: %w", err)
t.Fatalf("could not start a new filesystem service: %s", err)
}
_, store, storeTeardown := datastore.MustNewTestStore(t, true, true)
_, store := datastore.MustNewTestStore(t, true, true)
ctx := context.Background()
shutdownCtx, cancelFn := context.WithCancel(ctx)
teardown := func() {
cancelFn()
storeTeardown()
}
t.Cleanup(cancelFn)
jwtService, err := jwt.NewService("1h", store)
if err != nil {
teardown()
return nil, nil, fmt.Errorf("could not start a new jwt service: %w", err)
t.Fatalf("could not start a new JWT service: %s", err)
}
apiKeyService := apikey.NewAPIKeyService(nil, nil)
settings, err := store.Settings().Settings()
if err != nil {
teardown()
return nil, nil, fmt.Errorf("could not create new settings: %w", err)
t.Fatalf("could not create new settings: %s", err)
}
settings.TrustOnFirstConnect = true
err = store.Settings().UpdateSettings(settings)
if err != nil {
teardown()
return nil, nil, fmt.Errorf("could not update settings: %w", err)
t.Fatalf("could not update settings: %s", err)
}
handler := NewHandler(
@ -120,7 +113,7 @@ func setupHandler(t *testing.T) (*Handler, func(), error) {
handler.ReverseTunnelService = chisel.NewService(store, shutdownCtx)
return handler, teardown, nil
return handler
}
func createEndpoint(handler *Handler, endpoint portainer.Endpoint, endpointRelation portainer.EndpointRelation) (err error) {
@ -138,22 +131,16 @@ func createEndpoint(handler *Handler, endpoint portainer.Endpoint, endpointRelat
}
func TestMissingEdgeIdentifier(t *testing.T) {
handler, teardown, err := setupHandler(t)
defer teardown()
if err != nil {
t.Fatal(err)
}
handler := mustSetupHandler(t)
endpointID := portainer.EndpointID(45)
err = createEndpoint(handler, portainer.Endpoint{
err := createEndpoint(handler, portainer.Endpoint{
ID: endpointID,
Name: "endpoint-id-45",
Type: portainer.EdgeAgentOnDockerEnvironment,
URL: "https://portainer.io:9443",
EdgeID: "edge-id",
}, portainer.EndpointRelation{EndpointID: endpointID})
if err != nil {
t.Fatal(err)
}
@ -172,15 +159,10 @@ func TestMissingEdgeIdentifier(t *testing.T) {
}
func TestWithEndpoints(t *testing.T) {
handler, teardown, err := setupHandler(t)
defer teardown()
if err != nil {
t.Fatal(err)
}
handler := mustSetupHandler(t)
for _, test := range endpointTestCases {
err = createEndpoint(handler, test.endpoint, test.endpointRelation)
err := createEndpoint(handler, test.endpoint, test.endpointRelation)
if err != nil {
t.Fatal(err)
}
@ -203,12 +185,7 @@ func TestWithEndpoints(t *testing.T) {
}
func TestLastCheckInDateIncreases(t *testing.T) {
handler, teardown, err := setupHandler(t)
defer teardown()
if err != nil {
t.Fatal(err)
}
handler := mustSetupHandler(t)
endpointID := portainer.EndpointID(56)
endpoint := portainer.Endpoint{
@ -224,7 +201,7 @@ func TestLastCheckInDateIncreases(t *testing.T) {
EndpointID: endpoint.ID,
}
err = createEndpoint(handler, endpoint, endpointRelation)
err := createEndpoint(handler, endpoint, endpointRelation)
if err != nil {
t.Fatal(err)
}
@ -254,12 +231,7 @@ func TestLastCheckInDateIncreases(t *testing.T) {
}
func TestEmptyEdgeIdWithAgentPlatformHeader(t *testing.T) {
handler, teardown, err := setupHandler(t)
defer teardown()
if err != nil {
t.Fatal(err)
}
handler := mustSetupHandler(t)
endpointID := portainer.EndpointID(44)
edgeId := "edge-id"
@ -274,7 +246,7 @@ func TestEmptyEdgeIdWithAgentPlatformHeader(t *testing.T) {
EndpointID: endpoint.ID,
}
err = createEndpoint(handler, endpoint, endpointRelation)
err := createEndpoint(handler, endpoint, endpointRelation)
if err != nil {
t.Fatal(err)
}
@ -302,12 +274,7 @@ func TestEmptyEdgeIdWithAgentPlatformHeader(t *testing.T) {
}
func TestEdgeStackStatus(t *testing.T) {
handler, teardown, err := setupHandler(t)
defer teardown()
if err != nil {
t.Fatal(err)
}
handler := mustSetupHandler(t)
endpointID := portainer.EndpointID(7)
endpoint := portainer.Endpoint{
@ -343,7 +310,7 @@ func TestEdgeStackStatus(t *testing.T) {
}
handler.DataStore.EdgeStack().Create(edgeStack.ID, &edgeStack)
err = createEndpoint(handler, endpoint, endpointRelation)
err := createEndpoint(handler, endpoint, endpointRelation)
if err != nil {
t.Fatal(err)
}
@ -374,12 +341,7 @@ func TestEdgeStackStatus(t *testing.T) {
}
func TestEdgeJobsResponse(t *testing.T) {
handler, teardown, err := setupHandler(t)
defer teardown()
if err != nil {
t.Fatal(err)
}
handler := mustSetupHandler(t)
endpointID := portainer.EndpointID(77)
endpoint := portainer.Endpoint{
@ -395,7 +357,7 @@ func TestEdgeJobsResponse(t *testing.T) {
EndpointID: endpoint.ID,
}
err = createEndpoint(handler, endpoint, endpointRelation)
err := createEndpoint(handler, endpoint, endpointRelation)
if err != nil {
t.Fatal(err)
}

View file

@ -19,8 +19,7 @@ import (
func TestEndpointDeleteEdgeGroupsConcurrently(t *testing.T) {
const endpointsCount = 100
_, store, teardown := datastore.MustNewTestStore(t, true, false)
defer teardown()
_, store := datastore.MustNewTestStore(t, true, false)
user := &portainer.User{ID: 2, Username: "admin", Role: portainer.AdministratorRole}
err := store.User().Create(user)

View file

@ -22,7 +22,6 @@ type endpointListTest struct {
}
func Test_EndpointList_AgentVersion(t *testing.T) {
version1Endpoint := portainer.Endpoint{
ID: 1,
GroupID: 1,
@ -39,15 +38,13 @@ func Test_EndpointList_AgentVersion(t *testing.T) {
noVersionEndpoint := portainer.Endpoint{ID: 3, Type: portainer.AgentOnDockerEnvironment, GroupID: 1}
notAgentEnvironments := portainer.Endpoint{ID: 4, Type: portainer.DockerEnvironment, GroupID: 1}
handler, teardown := setupEndpointListHandler(t, []portainer.Endpoint{
handler := setupEndpointListHandler(t, []portainer.Endpoint{
notAgentEnvironments,
version1Endpoint,
version2Endpoint,
noVersionEndpoint,
})
defer teardown()
type endpointListAgentVersionTest struct {
endpointListTest
filter []string
@ -111,7 +108,7 @@ func Test_endpointList_edgeFilter(t *testing.T) {
regularTrustedEdgeStandard := portainer.Endpoint{ID: 4, UserTrusted: true, Edge: portainer.EnvironmentEdgeSettings{AsyncMode: false}, GroupID: 1, Type: portainer.EdgeAgentOnDockerEnvironment}
regularEndpoint := portainer.Endpoint{ID: 5, GroupID: 1, Type: portainer.DockerEnvironment}
handler, teardown := setupEndpointListHandler(t, []portainer.Endpoint{
handler := setupEndpointListHandler(t, []portainer.Endpoint{
trustedEdgeAsync,
untrustedEdgeAsync,
regularUntrustedEdgeStandard,
@ -119,8 +116,6 @@ func Test_endpointList_edgeFilter(t *testing.T) {
regularEndpoint,
})
defer teardown()
type endpointListEdgeTest struct {
endpointListTest
edgeAsync *bool
@ -184,9 +179,9 @@ func Test_endpointList_edgeFilter(t *testing.T) {
}
}
func setupEndpointListHandler(t *testing.T, endpoints []portainer.Endpoint) (handler *Handler, teardown func()) {
func setupEndpointListHandler(t *testing.T, endpoints []portainer.Endpoint) *Handler {
is := assert.New(t)
_, store, teardown := datastore.MustNewTestStore(t, true, true)
_, store := datastore.MustNewTestStore(t, true, true)
for _, endpoint := range endpoints {
err := store.Endpoint().Create(&endpoint)
@ -197,13 +192,13 @@ func setupEndpointListHandler(t *testing.T, endpoints []portainer.Endpoint) (han
is.NoError(err, "error creating a user")
bouncer := testhelpers.NewTestRequestBouncer()
handler = NewHandler(bouncer, nil)
handler := NewHandler(bouncer, nil)
handler.DataStore = store
handler.ComposeStackManager = testhelpers.NewComposeStackManager()
handler.SnapshotService, _ = snapshot.NewService("1s", store, nil, nil, nil)
return handler, teardown
return handler
}
func buildEndpointListRequest(query string) *http.Request {

View file

@ -39,9 +39,7 @@ func Test_Filter_AgentVersion(t *testing.T) {
notAgentEnvironments,
}
handler, teardown := setupFilterTest(t, endpoints)
defer teardown()
handler := setupFilterTest(t, endpoints)
tests := []filterTest{
{
@ -89,9 +87,7 @@ func Test_Filter_edgeFilter(t *testing.T) {
regularEndpoint,
}
handler, teardown := setupFilterTest(t, endpoints)
defer teardown()
handler := setupFilterTest(t, endpoints)
tests := []filterTest{
{
@ -155,9 +151,9 @@ func runTest(t *testing.T, test filterTest, handler *Handler, endpoints []portai
}
func setupFilterTest(t *testing.T, endpoints []portainer.Endpoint) (handler *Handler, teardown func()) {
func setupFilterTest(t *testing.T, endpoints []portainer.Endpoint) *Handler {
is := assert.New(t)
_, store, teardown := datastore.MustNewTestStore(t, true, true)
_, store := datastore.MustNewTestStore(t, true, true)
for _, endpoint := range endpoints {
err := store.Endpoint().Create(&endpoint)
@ -168,9 +164,9 @@ func setupFilterTest(t *testing.T, endpoints []portainer.Endpoint) (handler *Han
is.NoError(err, "error creating a user")
bouncer := testhelpers.NewTestRequestBouncer()
handler = NewHandler(bouncer, nil)
handler := NewHandler(bouncer, nil)
handler.DataStore = store
handler.ComposeStackManager = testhelpers.NewComposeStackManager()
return handler, teardown
return handler
}

View file

@ -70,10 +70,8 @@ func Test_updateEdgeGroups(t *testing.T) {
}
testFn := func(t *testing.T, testCase testCase) {
is := assert.New(t)
_, store, teardown := datastore.MustNewTestStore(t, true, true)
defer teardown()
_, store := datastore.MustNewTestStore(t, true, true)
err := store.Endpoint().Create(testCase.endpoint)
is.NoError(err)

View file

@ -74,10 +74,8 @@ func Test_updateTags(t *testing.T) {
}
testFn := func(t *testing.T, testCase testCase) {
is := assert.New(t)
_, store, teardown := datastore.MustNewTestStore(t, true, true)
defer teardown()
_, store := datastore.MustNewTestStore(t, true, true)
err := store.Endpoint().Create(testCase.endpoint)
is.NoError(err)

View file

@ -22,8 +22,7 @@ import (
func Test_helmDelete(t *testing.T) {
is := assert.New(t)
_, store, teardown := datastore.MustNewTestStore(t, true, true)
defer teardown()
_, store := datastore.MustNewTestStore(t, true, true)
err := store.Endpoint().Create(&portainer.Endpoint{ID: 1})
is.NoError(err, "Error creating environment")

View file

@ -25,8 +25,7 @@ import (
func Test_helmInstall(t *testing.T) {
is := assert.New(t)
_, store, teardown := datastore.MustNewTestStore(t, true, true)
defer teardown()
_, store := datastore.MustNewTestStore(t, true, true)
err := store.Endpoint().Create(&portainer.Endpoint{ID: 1})
is.NoError(err, "error creating environment")

View file

@ -24,8 +24,7 @@ import (
func Test_helmList(t *testing.T) {
is := assert.New(t)
_, store, teardown := datastore.MustNewTestStore(t, true, true)
defer teardown()
_, store := datastore.MustNewTestStore(t, true, true)
err := store.Endpoint().Create(&portainer.Endpoint{ID: 1})
assert.NoError(t, err, "error creating environment")

View file

@ -13,8 +13,7 @@ import (
)
func TestHandler_webhookInvoke(t *testing.T) {
_, store, teardown := datastore.MustNewTestStore(t, true, true)
defer teardown()
_, store := datastore.MustNewTestStore(t, true, true)
webhookID := newGuidString(t)
store.StackService.Create(&portainer.Stack{

View file

@ -17,8 +17,7 @@ import (
func TestTagDeleteEdgeGroupsConcurrently(t *testing.T) {
const tagsCount = 100
_, store, teardown := datastore.MustNewTestStore(t, true, false)
defer teardown()
_, store := datastore.MustNewTestStore(t, true, false)
user := &portainer.User{ID: 2, Username: "admin", Role: portainer.AdministratorRole}
err := store.User().Create(user)

View file

@ -21,8 +21,7 @@ import (
func Test_teamList(t *testing.T) {
is := assert.New(t)
_, store, teardown := datastore.MustNewTestStore(t, true, true)
defer teardown()
_, store := datastore.MustNewTestStore(t, true, true)
// create admin
adminUser := &portainer.User{ID: 1, Username: "admin", Role: portainer.AdministratorRole}

View file

@ -21,8 +21,7 @@ import (
func Test_userCreateAccessToken(t *testing.T) {
is := assert.New(t)
_, store, teardown := datastore.MustNewTestStore(t, true, true)
defer teardown()
_, store := datastore.MustNewTestStore(t, true, true)
// create admin and standard user(s)
adminUser := &portainer.User{ID: 1, Username: "admin", Role: portainer.AdministratorRole}

View file

@ -17,8 +17,7 @@ import (
func Test_deleteUserRemovesAccessTokens(t *testing.T) {
is := assert.New(t)
_, store, teardown := datastore.MustNewTestStore(t, true, true)
defer teardown()
_, store := datastore.MustNewTestStore(t, true, true)
// create standard user
user := &portainer.User{ID: 2, Username: "standard", Role: portainer.StandardUserRole}

View file

@ -20,8 +20,7 @@ import (
func Test_userGetAccessTokens(t *testing.T) {
is := assert.New(t)
_, store, teardown := datastore.MustNewTestStore(t, true, true)
defer teardown()
_, store := datastore.MustNewTestStore(t, true, true)
// create admin and standard user(s)
adminUser := &portainer.User{ID: 1, Username: "admin", Role: portainer.AdministratorRole}

View file

@ -23,8 +23,7 @@ import (
func Test_userList(t *testing.T) {
is := assert.New(t)
_, store, teardown := datastore.MustNewTestStore(t, true, true)
defer teardown()
_, store := datastore.MustNewTestStore(t, true, true)
// create admin and standard user(s)
adminUser := &portainer.User{ID: 1, Username: "admin", Role: portainer.AdministratorRole}

View file

@ -18,8 +18,7 @@ import (
func Test_userRemoveAccessToken(t *testing.T) {
is := assert.New(t)
_, store, teardown := datastore.MustNewTestStore(t, true, true)
defer teardown()
_, store := datastore.MustNewTestStore(t, true, true)
// create admin and standard user(s)
adminUser := &portainer.User{ID: 1, Username: "admin", Role: portainer.AdministratorRole}

View file

@ -17,8 +17,7 @@ import (
func Test_updateUserRemovesAccessTokens(t *testing.T) {
is := assert.New(t)
_, store, teardown := datastore.MustNewTestStore(t, true, true)
defer teardown()
_, store := datastore.MustNewTestStore(t, true, true)
// create standard user
user := &portainer.User{ID: 2, Username: "standard", Role: portainer.StandardUserRole}

View file

@ -37,8 +37,7 @@ func tokenLookupFail(r *http.Request) *portainer.TokenData {
func Test_mwAuthenticateFirst(t *testing.T) {
is := assert.New(t)
_, store, teardown := datastore.MustNewTestStore(t, true, true)
defer teardown()
_, store := datastore.MustNewTestStore(t, true, true)
jwtService, err := jwt.NewService("1h", store)
assert.NoError(t, err, "failed to create a copy of service")
@ -260,8 +259,7 @@ func Test_extractAPIKeyQueryParam(t *testing.T) {
func Test_apiKeyLookup(t *testing.T) {
is := assert.New(t)
_, store, teardown := datastore.MustNewTestStore(t, true, true)
defer teardown()
_, store := datastore.MustNewTestStore(t, true, true)
// create standard user
user := &portainer.User{ID: 2, Username: "standard", Role: portainer.StandardUserRole}