Skip to content

Commit

Permalink
tests(api): add stack_repository_test
Browse files Browse the repository at this point in the history
  • Loading branch information
Thomasevano committed Oct 7, 2023
1 parent 417902d commit 7d7f961
Show file tree
Hide file tree
Showing 2 changed files with 150 additions and 3 deletions.
131 changes: 131 additions & 0 deletions api/src/repositories/stack_repository_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,131 @@
package repositories_test

import (
"github.com/RomainDreidemy/MT5-docker-extension/src/models"
"github.com/RomainDreidemy/MT5-docker-extension/src/repositories"
"github.com/RomainDreidemy/MT5-docker-extension/src/test_helpers"
"github.com/google/uuid"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/suite"
"math/rand"
"testing"
)

type StackRepoTestSuite struct {
suite.Suite
}

func (suite *StackRepoTestSuite) TestFindStack() {
pool, resource := test_helpers.IntegrationTestSetup()
defer test_helpers.IntegrationTestTeardown(pool, resource)

// Given
uuid.SetRand(rand.New(rand.NewSource(1)))
stackId := "2935b117-880c-4f73-be89-de8fba6b196e"
userId := uuid.MustParse("14b953e8-30f9-47fc-943b-85d54cbcd54c")
expectedStackID := uuid.MustParse("2935b117-880c-4f73-be89-de8fba6b196e")
expectedStack := models.Stack{
ID: &expectedStackID,
Name: "DockerEasy",
Description: "stack of docker easy",
UserID: &userId,
Services: []models.Service(nil),
Networks: []models.Network(nil),
ManagedVolumes: []models.ManagedVolume(nil),
}

// When
stack, _ := repositories.FindStack(stackId)

// Then
assert.Equal(suite.T(), expectedStack, stack, "it find the right stack")
}

func (suite *StackRepoTestSuite) TestFindStackWithAssociations() {
pool, resource := test_helpers.IntegrationTestSetup()
defer test_helpers.IntegrationTestTeardown(pool, resource)

// Given
uuid.SetRand(rand.New(rand.NewSource(1)))
stackId := "2935b117-880c-4f73-be89-de8fba6b196e"
userId := uuid.MustParse("14b953e8-30f9-47fc-943b-85d54cbcd54c")
expectedStackID := uuid.MustParse("2935b117-880c-4f73-be89-de8fba6b196e")

expectedStack := models.Stack{
ID: &expectedStackID,
Name: "DockerEasy",
Description: "stack of docker easy",
UserID: &userId,
Services: []models.Service(nil),
Networks: []models.Network{},
ManagedVolumes: []models.ManagedVolume(nil),
}

// When
stack, _ := repositories.FindStackWithAssociations(stackId)

// Then
assert.Equal(suite.T(), expectedStack, stack, "Stack doesn't have the right associations")

}

func (suite *StackRepoTestSuite) TestGetStackByIdForAUser() {
pool, resource := test_helpers.IntegrationTestSetup()
defer test_helpers.IntegrationTestTeardown(pool, resource)

// Given
uuid.SetRand(rand.New(rand.NewSource(1)))
stackId := "2935b117-880c-4f73-be89-de8fba6b196e"
userId := uuid.MustParse("14b953e8-30f9-47fc-943b-85d54cbcd54c")
expectedStackID := uuid.MustParse("2935b117-880c-4f73-be89-de8fba6b196e")

expectedStack := models.Stack{
ID: &expectedStackID,
Name: "DockerEasy",
Description: "stack of docker easy",
UserID: &userId,
Services: []models.Service(nil),
Networks: []models.Network(nil),
ManagedVolumes: []models.ManagedVolume(nil),
}

// When
_, stack := repositories.GetStackByIdForAUser(stackId, userId)

// Then
assert.Equal(suite.T(), expectedStack, stack, "Stack doesn't have the right associations")
}

func (suite *StackRepoTestSuite) TestGetStacksForAUser() {
pool, resource := test_helpers.IntegrationTestSetup()
defer test_helpers.IntegrationTestTeardown(pool, resource)

// Given
uuid.SetRand(rand.New(rand.NewSource(1)))
userId := uuid.MustParse("14b953e8-30f9-47fc-943b-85d54cbcd54c")
expectedStackID := uuid.MustParse("2935b117-880c-4f73-be89-de8fba6b196e")

expectedStack := models.Stack{
ID: &expectedStackID,
Name: "DockerEasy",
Description: "stack of docker easy",
UserID: &userId,
Services: []models.Service(nil),
Networks: []models.Network(nil),
ManagedVolumes: []models.ManagedVolume(nil),
}

expectedStacks := []models.Stack{
expectedStack,
}

// When
stacks, _ := repositories.GetStacksForAUser(userId)

// Then
assert.Equal(suite.T(), expectedStacks, stacks, "Stack doesn't correspond to user")
}

func TestStackRepoTestSuite(t *testing.T) {
suite.Run(t, new(StackRepoTestSuite))
}
22 changes: 19 additions & 3 deletions api/src/test_helpers/migrations/1_tests_data.up.sql
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,27 @@
--

INSERT INTO users (id, email, password) values
('14b953e8-30f9-47fc-943b-85d54cbcd54c', 'test@example.net', 'testpassword');
('14b953e8-30f9-47fc-943b-85d54cbcd54c', 'test@example.net', '$2a$10$MPxChzrFB1IN4KADLezz.O1Z/5gY3.iBAbMB9/ZeimHTYHFfW.yia');

INSERT INTO stacks (id, name, description, user_id) values
('2935b117-880c-4f73-be89-de8fba6b196e', 'stack1', 'stack', '14b953e8-30f9-47fc-943b-85d54cbcd54c');
('2935b117-880c-4f73-be89-de8fba6b196e', 'DockerEasy', 'stack of docker easy', '14b953e8-30f9-47fc-943b-85d54cbcd54c');

INSERT INTO services (id, name, docker_image, docker_tag, entrypoint, description, position_x, position_y, context, dockerfile, stack_id, container_name, env_file) values
('e477175f-dfce-4426-acfb-13fe7a71b2d2', 'service', '', '', '', 'un service de la stack', 20.00000000, 20.00000000, '', '', '2935b117-880c-4f73-be89-de8fba6b196e', '', '');
('1a29bb76-7c29-4992-9407-8ca77507a616', 'api', 'ghcr.io/romaindreidemy/mt5-easydocker/api', 'latest', '', '', 10.00000000, 10.00000000, '', '', '2935b117-880c-4f73-be89-de8fba6b196e', 'api', ''),
('1cffb358-d9dd-40f4-88d5-dd1bc66565b3', 'database', 'postgres', '15', '', '', 260.00000000, 10.00000000, '', '', '2935b117-880c-4f73-be89-de8fba6b196e', 'database', ''),
('457f0d0b-0d3b-4fee-9e65-fd5dcf9ea833', 'front', 'ghcr.io/romaindreidemy/mt5-easydocker/front', 'latest', '', '', 510.00000000, 10.00000000, '', '', '2935b117-880c-4f73-be89-de8fba6b196e', 'front', '');

INSERT INTO service_env_variables (id, key, value, service_id) values
('fa3d8104-312d-4e25-bbe3-cc72201fba40', 'POSTGRES_USER', '${POSTGRES_USER}', '1cffb358-d9dd-40f4-88d5-dd1bc66565b3'),
('620f8876-9b69-4004-9dee-719f4b687267', 'POSTGRES_PASSWORD', '${POSTGRES_PASSWORD}', '1cffb358-d9dd-40f4-88d5-dd1bc66565b3'),
('f2fefa07-ce78-4435-9f7d-24d177d22770', 'POSTGRES_DB', '${POSTGRES_DB}', '1cffb358-d9dd-40f4-88d5-dd1bc66565b3');

INSERT INTO service_ports (id, private, public, service_id) values
('25ad3904-4059-4327-9e4c-9494d581b827', 3000, 0, '1a29bb76-7c29-4992-9407-8ca77507a616'),
('542be3a7-e04f-468e-bdde-d76a668a2ce9', 5432, 0, '1cffb358-d9dd-40f4-88d5-dd1bc66565b3'),
('bbb18269-3b71-4a2f-859c-c0c04d062ed5', 80, 0, '457f0d0b-0d3b-4fee-9e65-fd5dcf9ea833');

INSERT INTO service_volumes (id, local_path, container_path, service_id) values
('e0b6c940-733d-469e-b570-406ff5faaf43', './.env', '/app/.env', '1a29bb76-7c29-4992-9407-8ca77507a616'),
('f225e477-6966-43b5-99dc-1898a8ad7f60', './tmp/database', '/var/lib/postgresql/data', '1cffb358-d9dd-40f4-88d5-dd1bc66565b3');

0 comments on commit 7d7f961

Please sign in to comment.