Skip to content

Commit 10a1d81

Browse files
author
Kroner
committed
+ci/cd: main.yml +test: main_test.go
1 parent 18a5f8b commit 10a1d81

File tree

2 files changed

+158
-0
lines changed

2 files changed

+158
-0
lines changed

.github/workflows/main.yml

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
on:
2+
push:
3+
branches:
4+
- main # Запускать пайплайн при пуше в ветку main
5+
pull_request:
6+
branches:
7+
- main # Запускать пайплайн при создании пул-реквеста в ветку main
8+
9+
jobs:
10+
test:
11+
runs-on: ubuntu-latest
12+
steps:
13+
- name: Checkout code
14+
uses: actions/checkout@v3
15+
16+
- name: Set up Go
17+
uses: actions/setup-go@v4
18+
with:
19+
go-version: '1.22' # Указываем версию Go
20+
21+
- name: Run tests
22+
run: |
23+
cd go/test
24+
go test -v ./...

go/test/main_test.go

Lines changed: 134 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,134 @@
1+
package main
2+
3+
import (
4+
"bytes"
5+
"encoding/json"
6+
"net/http"
7+
"net/http/httptest"
8+
"os"
9+
"testing"
10+
)
11+
12+
// Тест для функции loadConfig
13+
func TestLoadConfig(t *testing.T) {
14+
// Создаем временный config.json
15+
configContent := `{
16+
"port": "5000",
17+
"images_dir": "./images",
18+
"log_file": "./logs/server.log"
19+
}`
20+
err := os.WriteFile("config.json", []byte(configContent), 0644)
21+
if err != nil {
22+
t.Fatalf("Failed to create config file: %v", err)
23+
}
24+
defer os.Remove("config.json") // Удаляем временный файл после теста
25+
26+
config := loadConfig()
27+
28+
if config.Port != "8080" {
29+
t.Errorf("Expected port 8080, got %s", config.Port)
30+
}
31+
if config.ImagesDir != "./images" {
32+
t.Errorf("Expected images_dir ./images, got %s", config.ImagesDir)
33+
}
34+
if config.LogFile != "./logs/server.log" {
35+
t.Errorf("Expected log_file ./logs/server.log, got %s", config.LogFile)
36+
}
37+
}
38+
39+
// Тест для homeHandler
40+
func TestHomeHandler(t *testing.T) {
41+
req, err := http.NewRequest("GET", "/", nil)
42+
if err != nil {
43+
t.Fatal(err)
44+
}
45+
46+
rr := httptest.NewRecorder()
47+
handler := http.HandlerFunc(homeHandler)
48+
49+
handler.ServeHTTP(rr, req)
50+
51+
if status := rr.Code; status != http.StatusOK {
52+
t.Errorf("handler returned wrong status code: got %v want %v", status, http.StatusOK)
53+
}
54+
55+
expected := "<h1>Welcome to the Image Server</h1>"
56+
if rr.Body.String()[:len(expected)] != expected {
57+
t.Errorf("handler returned unexpected body: got %v want %v", rr.Body.String(), expected)
58+
}
59+
}
60+
61+
// Тест для submitTextHandler
62+
func TestSubmitTextHandler(t *testing.T) {
63+
requestBody := map[string]string{"text": "Hello, World!"}
64+
jsonBody, _ := json.Marshal(requestBody)
65+
66+
req, err := http.NewRequest("POST", "/submit-text", bytes.NewBuffer(jsonBody))
67+
if err != nil {
68+
t.Fatal(err)
69+
}
70+
71+
rr := httptest.NewRecorder()
72+
handler := http.HandlerFunc(submitTextHandler)
73+
74+
handler.ServeHTTP(rr, req)
75+
76+
if status := rr.Code; status != http.StatusOK {
77+
t.Errorf("handler returned wrong status code: got %v want %v", status, http.StatusOK)
78+
}
79+
80+
var response map[string]string
81+
err = json.Unmarshal(rr.Body.Bytes(), &response)
82+
if err != nil {
83+
t.Fatal(err)
84+
}
85+
86+
expected := "Вы ввели: Hello, World!"
87+
if response["message"] != expected {
88+
t.Errorf("handler returned unexpected message: got %v want %v", response["message"], expected)
89+
}
90+
}
91+
92+
// Тест для NewDimensionHandler
93+
func TestNewDimensionHandler(t *testing.T) {
94+
req, err := http.NewRequest("GET", "/new-dimension", nil)
95+
if err != nil {
96+
t.Fatal(err)
97+
}
98+
99+
rr := httptest.NewRecorder()
100+
handler := http.HandlerFunc(NewDimensionHandler)
101+
102+
handler.ServeHTTP(rr, req)
103+
104+
if status := rr.Code; status != http.StatusOK {
105+
t.Errorf("handler returned wrong status code: got %v want %v", status, http.StatusOK)
106+
}
107+
108+
expected := "<h1>Вы попали в новое измерение, пристегнитесь</h1>"
109+
if rr.Body.String()[:len(expected)] != expected {
110+
t.Errorf("handler returned unexpected body: got %v want %v", rr.Body.String(), expected)
111+
}
112+
}
113+
114+
// Тест для healthHandler
115+
func TestHealthHandler(t *testing.T) {
116+
req, err := http.NewRequest("GET", "/health", nil)
117+
if err != nil {
118+
t.Fatal(err)
119+
}
120+
121+
rr := httptest.NewRecorder()
122+
handler := http.HandlerFunc(healthHandler)
123+
124+
handler.ServeHTTP(rr, req)
125+
126+
if status := rr.Code; status != http.StatusOK {
127+
t.Errorf("handler returned wrong status code: got %v want %v", status, http.StatusOK)
128+
}
129+
130+
expected := "OK"
131+
if rr.Body.String() != expected {
132+
t.Errorf("handler returned unexpected body: got %v want %v", rr.Body.String(), expected)
133+
}
134+
}

0 commit comments

Comments
 (0)