diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml new file mode 100644 index 0000000..ddf603b --- /dev/null +++ b/.gitlab-ci.yml @@ -0,0 +1,55 @@ +stages: + - build + - test + - docker + +build-backend: + image: golang:1.21-alpine + stage: build + rules: + - changes: + - backend/**/* + script: + - cd backend + - go build -o htwkalender + artifacts: + paths: + - backend/htwkalender + - backend/go.sum + - backend/go.mod + +test: + image: golang:1.21-alpine + stage: test + rules: + - changes: + - backend/**/* + script: + - cd backend + - go test -v ./... + dependencies: + - build-backend + +build-backend-image: + stage: docker + image: docker:20.10.16 + services: + - name: docker:20.10.16-dind + alias: docker + tags: + - image + variables: + IMAGE_TAG: $CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG + DOCKER_HOST: tcp://docker:2376 + DOCKER_TLS_CERTDIR: "/certs" + DOCKER_TLS_VERIFY: 1 + DOCKER_CERT_PATH: "/certs/client" + script: + - cd backend + - docker login -u $CI_DOCKER_REGISTRY_USER -p $CI_DOCKER_REGISTRY_PASSWORD $CI_DOCKER_REGISTRY + - docker build -t htwkalender-backend$IMAGE_TAG . + - docker tag htwkalender-backend$IMAGE_TAG $CI_DOCKER_REGISTRY_USER/htwkalender:backend + - docker push $CI_DOCKER_REGISTRY_USER/htwkalender:backend + only: + - main + - development diff --git a/backend/Dockerfile b/backend/Dockerfile index 655af93..49f26d9 100644 --- a/backend/Dockerfile +++ b/backend/Dockerfile @@ -9,7 +9,7 @@ RUN go mod download # Copy the source from the current directory to the Working Directory inside the container COPY *.go ./ -COPY .. . +COPY . . # Build the Go app RUN CGO_ENABLED=0 GOOS=linux go build -o /htwkalender diff --git a/backend/model/eventModel_test.go b/backend/model/eventModel_test.go index 9608ba5..bbddeac 100644 --- a/backend/model/eventModel_test.go +++ b/backend/model/eventModel_test.go @@ -9,6 +9,8 @@ import ( ) func TestEvents_Contains(t *testing.T) { + specificTime, _ := types.ParseDateTime("2020-01-01 12:00:00.000Z") + type args struct { event Event } @@ -26,20 +28,20 @@ func TestEvents_Contains(t *testing.T) { }, { name: "one event", - m: Events{{Day: "test", Week: "test", Start: types.NowDateTime(), End: types.NowDateTime(), Name: "test", Course: "test", Prof: "test", Rooms: "test", EventType: "test"}}, - args: args{event: Event{Day: "test", Week: "test", Start: types.NowDateTime(), End: types.NowDateTime(), Name: "test", Course: "test", Prof: "test", Rooms: "test", EventType: "test"}}, + m: Events{{Day: "test", Week: "test", Start: specificTime, End: specificTime, Name: "test", Course: "test", Prof: "test", Rooms: "test", EventType: "test"}}, + args: args{event: Event{Day: "test", Week: "test", Start: specificTime, End: specificTime, Name: "test", Course: "test", Prof: "test", Rooms: "test", EventType: "test"}}, want: true, }, { name: "two events", - m: Events{{Day: "test", Week: "test", Start: types.NowDateTime(), End: types.NowDateTime(), Name: "test", Course: "test", Prof: "test", Rooms: "test", EventType: "test"}, {Day: "test2", Week: "test2", Start: types.NowDateTime(), End: types.NowDateTime(), Name: "test2", Course: "test2", Prof: "test2", Rooms: "test2", EventType: "test2"}}, - args: args{event: Event{Day: "test2", Week: "test2", Start: types.NowDateTime(), End: types.NowDateTime(), Name: "test2", Course: "test2", Prof: "test2", Rooms: "test2", EventType: "test2"}}, + m: Events{{Day: "test", Week: "test", Start: specificTime, End: specificTime, Name: "test", Course: "test", Prof: "test", Rooms: "test", EventType: "test"}, {Day: "test2", Week: "test2", Start: specificTime, End: specificTime, Name: "test2", Course: "test2", Prof: "test2", Rooms: "test2", EventType: "test2"}}, + args: args{event: Event{Day: "test2", Week: "test2", Start: specificTime, End: specificTime, Name: "test2", Course: "test2", Prof: "test2", Rooms: "test2", EventType: "test2"}}, want: true, }, { name: "two events with different values", - m: Events{{Day: "test", Week: "test", Start: types.NowDateTime(), End: types.NowDateTime(), Name: "test", Course: "test", Prof: "test", Rooms: "test", EventType: "test", UUID: "439ßu56rf8u9ijn4f4-2345345"}, {Day: "test2", Week: "test2", Start: types.NowDateTime(), End: types.NowDateTime(), Name: "test2", Course: "test2", Prof: "test2", Rooms: "test2", EventType: "test2", UUID: "432a39ßu545349ijn4f4-23dsa45"}}, - args: args{event: Event{Day: "test3", Week: "test3", Start: types.NowDateTime(), End: types.NowDateTime(), Name: "test3", Course: "test3", Prof: "test3", Rooms: "test3", EventType: "test3", UUID: "934mf43r34f-g68h7655tg3"}}, + m: Events{{Day: "test", Week: "test", Start: specificTime, End: specificTime, Name: "test", Course: "test", Prof: "test", Rooms: "test", EventType: "test", UUID: "439ßu56rf8u9ijn4f4-2345345"}, {Day: "test2", Week: "test2", Start: specificTime, End: specificTime, Name: "test2", Course: "test2", Prof: "test2", Rooms: "test2", EventType: "test2", UUID: "432a39ßu545349ijn4f4-23dsa45"}}, + args: args{event: Event{Day: "test3", Week: "test3", Start: specificTime, End: specificTime, Name: "test3", Course: "test3", Prof: "test3", Rooms: "test3", EventType: "test3", UUID: "934mf43r34f-g68h7655tg3"}}, want: false, }, } @@ -53,6 +55,8 @@ func TestEvents_Contains(t *testing.T) { } func TestEvent_Equals(t *testing.T) { + specificTime, _ := types.ParseDateTime("2020-01-01 12:00:00.000Z") + type fields struct { UUID string Day string @@ -86,20 +90,20 @@ func TestEvent_Equals(t *testing.T) { }, { name: "one empty one not", - fields: fields{Day: "test", Week: "test", Start: types.NowDateTime(), End: types.NowDateTime(), Name: "test", Course: "test", Prof: "test", Rooms: "test", EventType: "test"}, + fields: fields{Day: "test", Week: "test", Start: specificTime, End: specificTime, Name: "test", Course: "test", Prof: "test", Rooms: "test", EventType: "test"}, args: args{event: Event{}}, want: false, }, { name: "one event", - fields: fields{Day: "test", Week: "test", Start: types.NowDateTime(), End: types.NowDateTime(), Name: "test", Course: "test", Prof: "test", Rooms: "test", EventType: "test"}, - args: args{event: Event{Day: "test", Week: "test", Start: types.NowDateTime(), End: types.NowDateTime(), Name: "test", Course: "test", Prof: "test", Rooms: "test", EventType: "test"}}, + fields: fields{Day: "test", Week: "test", Start: specificTime, End: specificTime, Name: "test", Course: "test", Prof: "test", Rooms: "test", EventType: "test"}, + args: args{event: Event{Day: "test", Week: "test", Start: specificTime, End: specificTime, Name: "test", Course: "test", Prof: "test", Rooms: "test", EventType: "test"}}, want: true, }, { name: "two events", - fields: fields{Day: "test", Week: "test", Start: types.NowDateTime(), End: types.NowDateTime(), Name: "test", Course: "test", Prof: "test", Rooms: "test", EventType: "test"}, - args: args{event: Event{Day: "test2", Week: "test2", Start: types.NowDateTime(), End: types.NowDateTime(), Name: "test2", Course: "test2", Prof: "test2", Rooms: "test2", EventType: "test2"}}, + fields: fields{Day: "test", Week: "test", Start: specificTime, End: specificTime, Name: "test", Course: "test", Prof: "test", Rooms: "test", EventType: "test"}, + args: args{event: Event{Day: "test2", Week: "test2", Start: specificTime, End: specificTime, Name: "test2", Course: "test2", Prof: "test2", Rooms: "test2", EventType: "test2"}}, want: false, }, } diff --git a/backend/service/date/dateFormat_test.go b/backend/service/date/dateFormat_test.go index 32fc99f..7566353 100644 --- a/backend/service/date/dateFormat_test.go +++ b/backend/service/date/dateFormat_test.go @@ -7,6 +7,8 @@ import ( ) func Test_getDateFromWeekNumber(t *testing.T) { + europeTime, _ := time.LoadLocation("Europe/Berlin") + type args struct { year int weekNumber int @@ -25,7 +27,7 @@ func Test_getDateFromWeekNumber(t *testing.T) { weekNumber: 1, dayName: "Montag", }, - want: time.Date(2021, 1, 4, 0, 0, 0, 0, time.UTC), + want: time.Date(2021, 1, 4, 0, 0, 0, 0, europeTime), wantErr: false, }, { @@ -35,7 +37,7 @@ func Test_getDateFromWeekNumber(t *testing.T) { weekNumber: 57, dayName: "Montag", }, - want: time.Date(2024, 1, 29, 0, 0, 0, 0, time.UTC), + want: time.Date(2024, 1, 29, 0, 0, 0, 0, europeTime), wantErr: false, }, { @@ -45,7 +47,7 @@ func Test_getDateFromWeekNumber(t *testing.T) { weekNumber: 1, dayName: "Montag", }, - want: time.Date(2023, 1, 2, 0, 0, 0, 0, time.UTC), + want: time.Date(2023, 1, 2, 0, 0, 0, 0, europeTime), wantErr: false, }, } diff --git a/backend/service/fetch/v1/fetchSeminarEventService_test.go b/backend/service/fetch/v1/fetchSeminarEventService_test.go index 3811b85..b86e6e8 100644 --- a/backend/service/fetch/v1/fetchSeminarEventService_test.go +++ b/backend/service/fetch/v1/fetchSeminarEventService_test.go @@ -267,7 +267,6 @@ func Test_generateUUIDs(t *testing.T) { } func Test_createTimeFromHourAndMinuteString(t *testing.T) { - europeTime, _ := time.LoadLocation("Europe/Berlin") type args struct { tableTime string } @@ -281,21 +280,21 @@ func Test_createTimeFromHourAndMinuteString(t *testing.T) { args: args{ tableTime: "08:00", }, - want: time.Date(0, 0, 0, 8, 0, 0, 0, europeTime), + want: time.Date(0, 0, 0, 8, 0, 0, 0, time.UTC), }, { name: "Test 2", args: args{ tableTime: "08:15", }, - want: time.Date(0, 0, 0, 8, 15, 0, 0, europeTime), + want: time.Date(0, 0, 0, 8, 15, 0, 0, time.UTC), }, { name: "Test 3", args: args{ tableTime: "08:30", }, - want: time.Date(0, 0, 0, 8, 30, 0, 0, europeTime), + want: time.Date(0, 0, 0, 8, 30, 0, 0, time.UTC), }, } for _, tt := range tests {