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