2021-04-11 09:48:15 +00:00
|
|
|
|
package test
|
|
|
|
|
|
|
|
|
|
import (
|
2022-11-02 18:52:02 +00:00
|
|
|
|
"bufio"
|
2021-04-11 09:48:15 +00:00
|
|
|
|
"bytes"
|
|
|
|
|
"context"
|
|
|
|
|
"encoding/json"
|
2022-11-02 18:52:02 +00:00
|
|
|
|
"errors"
|
|
|
|
|
"fmt"
|
2024-11-27 09:03:13 +00:00
|
|
|
|
"gitea.pena/PenaSide/heruvym/internal/controllers/tickets"
|
|
|
|
|
"gitea.pena/PenaSide/heruvym/internal/model"
|
|
|
|
|
"gitea.pena/PenaSide/heruvym/internal/utils/jwt_adapter"
|
2024-02-20 14:23:04 +00:00
|
|
|
|
"github.com/skeris/appInit"
|
2022-11-02 18:52:02 +00:00
|
|
|
|
"io"
|
|
|
|
|
"io/ioutil"
|
|
|
|
|
"mime/multipart"
|
2021-04-11 09:48:15 +00:00
|
|
|
|
"net/http"
|
2022-11-02 18:52:02 +00:00
|
|
|
|
"os"
|
2024-11-27 21:48:14 +00:00
|
|
|
|
"gitea.pena/PenaSide/heruvym/internal/app"
|
2022-11-02 18:52:02 +00:00
|
|
|
|
"strings"
|
2021-04-11 09:48:15 +00:00
|
|
|
|
"testing"
|
|
|
|
|
"time"
|
2022-11-02 18:52:02 +00:00
|
|
|
|
|
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
|
|
|
"github.com/themakers/bdd"
|
2021-04-11 09:48:15 +00:00
|
|
|
|
)
|
|
|
|
|
|
2024-02-20 18:43:12 +00:00
|
|
|
|
///create+
|
|
|
|
|
///subscribe todo
|
|
|
|
|
///ticket+
|
|
|
|
|
///send+
|
|
|
|
|
///sendFile+
|
2024-02-21 10:44:28 +00:00
|
|
|
|
///getTickets+
|
2024-02-21 13:04:55 +00:00
|
|
|
|
///getMessages+
|
2024-02-20 14:23:04 +00:00
|
|
|
|
|
2021-04-11 09:48:15 +00:00
|
|
|
|
func TestTicket(t *testing.T) {
|
2022-11-02 18:52:02 +00:00
|
|
|
|
fmt.Println("start test")
|
2021-04-11 09:48:15 +00:00
|
|
|
|
ctx, cancel := context.WithCancel(context.Background())
|
|
|
|
|
defer cancel()
|
|
|
|
|
bdd.Scenario(t, "SupportChat", func(t *testing.T, runID string) {
|
2024-11-27 09:03:13 +00:00
|
|
|
|
var ticket tickets.CreateTicketResp
|
2024-02-20 18:43:12 +00:00
|
|
|
|
var msgs = make(chan []byte)
|
|
|
|
|
var token string
|
2022-11-02 18:52:02 +00:00
|
|
|
|
go func() {
|
|
|
|
|
|
|
|
|
|
time.Sleep(3 * time.Second)
|
|
|
|
|
fmt.Println("start service")
|
2021-04-11 09:48:15 +00:00
|
|
|
|
_, err := app.New(ctx, app.Options{
|
2024-02-20 14:23:04 +00:00
|
|
|
|
MongoURI: "mongodb://localhost:27017",
|
2022-11-02 18:52:02 +00:00
|
|
|
|
NumberPortLocal: "1488",
|
2024-02-20 14:23:04 +00:00
|
|
|
|
AccountAddress: ":8931",
|
2022-11-02 18:52:02 +00:00
|
|
|
|
LoggerDevMode: false,
|
2024-02-20 14:23:04 +00:00
|
|
|
|
MinioEndpoint: "localhost:9000",
|
2022-11-02 18:52:02 +00:00
|
|
|
|
MinioAccessKey: "minioadmin",
|
|
|
|
|
MinioSecretKey: "minioadmin",
|
2024-02-20 14:23:04 +00:00
|
|
|
|
MinioRegion: "",
|
|
|
|
|
MinioToken: "",
|
2022-11-02 18:52:02 +00:00
|
|
|
|
MongoDbTable: "profile",
|
|
|
|
|
MongoCollections: "profile,role",
|
2024-02-20 14:23:04 +00:00
|
|
|
|
TgToken: "6712573453:AAFddRtlsF4ZH977xZDexWj6DhqeJD66hYw",
|
|
|
|
|
TgChatID: 542073142,
|
2024-02-21 18:07:40 +00:00
|
|
|
|
RedisDB: 1,
|
|
|
|
|
RedisPassword: "admin",
|
|
|
|
|
RedisHost: "localhost:6379",
|
2024-02-20 14:23:04 +00:00
|
|
|
|
}, appInit.Version{})
|
2021-04-11 09:48:15 +00:00
|
|
|
|
if err != nil {
|
|
|
|
|
panic(err)
|
|
|
|
|
}
|
|
|
|
|
}()
|
2024-02-20 14:23:04 +00:00
|
|
|
|
time.Sleep(time.Second * 15)
|
2021-04-11 09:48:15 +00:00
|
|
|
|
|
|
|
|
|
bdd.Act(t, "client", func() {
|
2022-11-02 18:52:02 +00:00
|
|
|
|
fmt.Println("client")
|
2021-04-11 09:48:15 +00:00
|
|
|
|
bdd.Test(t, "CreateTicket", func() {
|
2022-11-02 18:52:02 +00:00
|
|
|
|
|
2024-11-27 09:03:13 +00:00
|
|
|
|
buf, err := json.Marshal(tickets.CreateTicketReq{
|
2021-04-11 09:48:15 +00:00
|
|
|
|
Title: "TestTitle",
|
|
|
|
|
Message: "test",
|
|
|
|
|
})
|
|
|
|
|
if err != nil {
|
|
|
|
|
panic(err)
|
|
|
|
|
}
|
2022-11-02 18:52:02 +00:00
|
|
|
|
req, err := http.NewRequestWithContext(
|
2021-04-11 09:48:15 +00:00
|
|
|
|
ctx,
|
|
|
|
|
"POST",
|
2024-02-20 14:23:04 +00:00
|
|
|
|
"http://localhost:1488/create", bytes.NewBuffer(buf))
|
2021-04-11 09:48:15 +00:00
|
|
|
|
if err != nil {
|
|
|
|
|
panic(err)
|
|
|
|
|
}
|
|
|
|
|
|
2024-02-20 14:23:04 +00:00
|
|
|
|
req.Header.Add(jwt_adapter.DefaultHeaderKey, "Bearer "+token)
|
|
|
|
|
req.Header.Set("Referer", "http://localhost:1488")
|
2021-04-11 09:48:15 +00:00
|
|
|
|
|
|
|
|
|
resp, err := http.DefaultClient.Do(req)
|
|
|
|
|
|
|
|
|
|
if err != nil {
|
2022-11-02 18:52:02 +00:00
|
|
|
|
assert.NoError(t, err)
|
2021-04-11 09:48:15 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if resp.StatusCode != http.StatusOK {
|
|
|
|
|
panic("NotAccepted")
|
|
|
|
|
}
|
2022-11-02 18:52:02 +00:00
|
|
|
|
|
|
|
|
|
token = resp.Header.Get(jwt_adapter.DefaultHeaderKey)
|
2024-02-21 13:04:55 +00:00
|
|
|
|
fmt.Println("token", token)
|
2022-11-02 18:52:02 +00:00
|
|
|
|
|
|
|
|
|
assert.NoError(t, json.NewDecoder(resp.Body).Decode(&ticket))
|
|
|
|
|
})
|
|
|
|
|
bdd.Test(t, "subscribe for tiket", func() {
|
|
|
|
|
client := &http.Client{}
|
|
|
|
|
|
2024-02-20 14:23:04 +00:00
|
|
|
|
r, err := http.NewRequest("GET", "http://localhost:1488/ticket?Authorization="+token+"&ticket="+ticket.Ticket, nil)
|
2022-11-02 18:52:02 +00:00
|
|
|
|
assert.NoError(t, err)
|
2024-02-20 14:23:04 +00:00
|
|
|
|
r.Header.Set("Referer", "http://localhost:1488")
|
2022-11-02 18:52:02 +00:00
|
|
|
|
r.Header.Set("Accept", "text/event-stream")
|
|
|
|
|
r.Header.Set("Cache-Control", "no-cache")
|
|
|
|
|
r.Header.Set("Connection", "keep-alive")
|
|
|
|
|
resp, err := client.Do(r)
|
|
|
|
|
assert.NoError(t, err)
|
|
|
|
|
|
|
|
|
|
assert.Equal(t, http.StatusOK, resp.StatusCode)
|
|
|
|
|
|
|
|
|
|
sc := bufio.NewScanner(resp.Body)
|
|
|
|
|
split := func(data []byte, atEOF bool) (int, []byte, error) {
|
|
|
|
|
if atEOF && len(data) == 0 {
|
|
|
|
|
return 0, nil, nil
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if strings.Contains(string(data), ":ping") {
|
|
|
|
|
return 0, nil, nil
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if len(data) <= 6 {
|
|
|
|
|
return 0, nil, errors.New(fmt.Sprintf("got bad body: %v", string(data)))
|
|
|
|
|
}
|
|
|
|
|
// Мы получили данные для обработки
|
|
|
|
|
// Начинаем с 6 байта, чтобы убрать "data: "
|
|
|
|
|
|
|
|
|
|
if i, nlen := containsDoubleNewline(data); i >= 0 {
|
|
|
|
|
return i + nlen, data[6:i], nil
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Если получен EOF, то мы получили все что необходимо
|
|
|
|
|
if atEOF {
|
|
|
|
|
return len(data), data, nil
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return 0, nil, nil
|
|
|
|
|
}
|
|
|
|
|
sc.Split(split)
|
|
|
|
|
|
|
|
|
|
go func() {
|
|
|
|
|
for sc.Scan() {
|
|
|
|
|
body := sc.Bytes()
|
|
|
|
|
msgs <- body
|
|
|
|
|
fmt.Println("data from", string(body))
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if err = sc.Err(); err != nil {
|
|
|
|
|
fmt.Println("scanner.Err()", err)
|
|
|
|
|
if err != bufio.ErrTooLong {
|
|
|
|
|
fmt.Println("toolong")
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}()
|
|
|
|
|
|
|
|
|
|
})
|
2024-02-20 18:43:12 +00:00
|
|
|
|
bdd.Test(t, "send message", func() {
|
|
|
|
|
|
2024-11-27 09:03:13 +00:00
|
|
|
|
buf, err := json.Marshal(tickets.ReqPutMessage{
|
2024-02-20 18:43:12 +00:00
|
|
|
|
Message: "test",
|
|
|
|
|
TicketID: ticket.Ticket,
|
|
|
|
|
Lang: "ru",
|
|
|
|
|
})
|
|
|
|
|
if err != nil {
|
|
|
|
|
panic(err)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
req, err := http.NewRequestWithContext(ctx, http.MethodPost, "http://localhost:1488/send", bytes.NewBuffer(buf))
|
|
|
|
|
assert.NoError(t, err)
|
|
|
|
|
req.Header.Set("Referer", "http://localhost:1488")
|
|
|
|
|
req.Header.Add(jwt_adapter.DefaultHeaderKey, "Bearer "+token)
|
2024-02-21 13:04:55 +00:00
|
|
|
|
fmt.Println("token", token)
|
2024-02-20 18:43:12 +00:00
|
|
|
|
resp, err := http.DefaultClient.Do(req)
|
|
|
|
|
fmt.Println("resp", resp)
|
|
|
|
|
assert.NoError(t, err)
|
|
|
|
|
|
|
|
|
|
assert.Equal(t, http.StatusOK, resp.StatusCode)
|
|
|
|
|
|
|
|
|
|
//var msg, channed model.Message
|
|
|
|
|
//assert.NoError(t, json.NewDecoder(resp.Body).Decode(&msg))
|
|
|
|
|
//err = json.Unmarshal(<-msgs, &channed)
|
|
|
|
|
//assert.NoError(t, err)
|
|
|
|
|
//assert.Equal(t, "test", channed.Message)
|
|
|
|
|
})
|
2024-02-21 14:42:23 +00:00
|
|
|
|
bdd.Test(t, "send file passed", func() {
|
2022-11-02 18:52:02 +00:00
|
|
|
|
body := &bytes.Buffer{}
|
|
|
|
|
writer := multipart.NewWriter(body)
|
|
|
|
|
|
2024-02-21 14:42:23 +00:00
|
|
|
|
partf, _ := writer.CreateFormFile("image.jpg", "image.jpg")
|
|
|
|
|
f, err := os.OpenFile("./testfiles/image.jpg", os.O_RDWR, 0644)
|
2022-11-02 18:52:02 +00:00
|
|
|
|
assert.NoError(t, err)
|
2024-02-21 14:42:23 +00:00
|
|
|
|
defer f.Close()
|
|
|
|
|
io.Copy(partf, f)
|
|
|
|
|
|
|
|
|
|
partf, _ = writer.CreateFormFile("image2.png", "image2.png")
|
|
|
|
|
f, err = os.OpenFile("./testfiles/image2.png", os.O_RDWR, 0644)
|
|
|
|
|
assert.NoError(t, err)
|
|
|
|
|
defer f.Close()
|
|
|
|
|
io.Copy(partf, f)
|
|
|
|
|
|
|
|
|
|
partf, _ = writer.CreateFormFile("gtaV.mp4", "gtaV.mp4")
|
|
|
|
|
f, err = os.OpenFile("./testfiles/gtaV.mp4", os.O_RDWR, 0644)
|
|
|
|
|
assert.NoError(t, err)
|
|
|
|
|
defer f.Close()
|
|
|
|
|
io.Copy(partf, f)
|
|
|
|
|
|
|
|
|
|
partf, _ = writer.CreateFormFile("test.csv", "test.csv")
|
|
|
|
|
f, err = os.OpenFile("./testfiles/test.csv", os.O_RDWR, 0644)
|
|
|
|
|
assert.NoError(t, err)
|
|
|
|
|
defer f.Close()
|
|
|
|
|
io.Copy(partf, f)
|
|
|
|
|
|
|
|
|
|
partf, _ = writer.CreateFormFile("test.doc", "test.doc")
|
|
|
|
|
f, err = os.OpenFile("./testfiles/test.doc", os.O_RDWR, 0644)
|
|
|
|
|
assert.NoError(t, err)
|
|
|
|
|
defer f.Close()
|
|
|
|
|
io.Copy(partf, f)
|
|
|
|
|
|
|
|
|
|
partf, _ = writer.CreateFormFile("test.docx", "test.docx")
|
|
|
|
|
f, err = os.OpenFile("./testfiles/test.docx", os.O_RDWR, 0644)
|
|
|
|
|
assert.NoError(t, err)
|
|
|
|
|
defer f.Close()
|
|
|
|
|
io.Copy(partf, f)
|
|
|
|
|
|
|
|
|
|
partf, _ = writer.CreateFormFile("test.pdf", "test.pdf")
|
|
|
|
|
f, err = os.OpenFile("./testfiles/test.pdf", os.O_RDWR, 0644)
|
|
|
|
|
assert.NoError(t, err)
|
|
|
|
|
defer f.Close()
|
|
|
|
|
io.Copy(partf, f)
|
|
|
|
|
|
|
|
|
|
partf, _ = writer.CreateFormFile("test.txt", "test.txt")
|
|
|
|
|
f, err = os.OpenFile("./testfiles/test.txt", os.O_RDWR, 0644)
|
|
|
|
|
assert.NoError(t, err)
|
|
|
|
|
defer f.Close()
|
|
|
|
|
io.Copy(partf, f)
|
|
|
|
|
|
|
|
|
|
partf, _ = writer.CreateFormFile("test.xlsx", "test.xlsx")
|
|
|
|
|
f, err = os.OpenFile("./testfiles/test.xlsx", os.O_RDWR, 0644)
|
|
|
|
|
assert.NoError(t, err)
|
|
|
|
|
defer f.Close()
|
2022-11-02 18:52:02 +00:00
|
|
|
|
io.Copy(partf, f)
|
|
|
|
|
|
|
|
|
|
assert.NoError(t, writer.WriteField("ticket", ticket.Ticket))
|
|
|
|
|
|
|
|
|
|
writer.Close()
|
2024-02-20 14:23:04 +00:00
|
|
|
|
req, err := http.NewRequestWithContext(ctx, http.MethodPost, "http://localhost:1488/sendFiles", body)
|
2022-11-02 18:52:02 +00:00
|
|
|
|
req.Header.Set("Content-Type", "multipart/form-data; boundary="+writer.Boundary())
|
2024-02-20 14:23:04 +00:00
|
|
|
|
req.Header.Set("Referer", "http://localhost:1488")
|
|
|
|
|
req.Header.Add(jwt_adapter.DefaultHeaderKey, "Bearer "+token)
|
2022-11-02 18:52:02 +00:00
|
|
|
|
|
|
|
|
|
resp, err := http.DefaultClient.Do(req)
|
|
|
|
|
assert.NoError(t, err)
|
|
|
|
|
assert.Equal(t, http.StatusOK, resp.StatusCode)
|
|
|
|
|
|
|
|
|
|
str, err := ioutil.ReadAll(resp.Body)
|
|
|
|
|
fmt.Println("resp files", err, string(str))
|
2021-04-11 09:48:15 +00:00
|
|
|
|
})
|
2024-02-21 14:42:23 +00:00
|
|
|
|
bdd.Test(t, "send mp3 file", func() {
|
|
|
|
|
body := &bytes.Buffer{}
|
|
|
|
|
writer := multipart.NewWriter(body)
|
|
|
|
|
|
|
|
|
|
partf, _ := writer.CreateFormFile("audio.mp3", "audio.mp3")
|
|
|
|
|
f, err := os.OpenFile("./testfiles/audio.mp3", os.O_RDWR, 0644)
|
|
|
|
|
assert.NoError(t, err)
|
|
|
|
|
io.Copy(partf, f)
|
|
|
|
|
|
|
|
|
|
assert.NoError(t, writer.WriteField("ticket", ticket.Ticket))
|
|
|
|
|
|
|
|
|
|
writer.Close()
|
|
|
|
|
req, err := http.NewRequestWithContext(ctx, http.MethodPost, "http://localhost:1488/sendFiles", body)
|
|
|
|
|
req.Header.Set("Content-Type", "multipart/form-data; boundary="+writer.Boundary())
|
|
|
|
|
req.Header.Set("Referer", "http://localhost:1488")
|
|
|
|
|
req.Header.Add(jwt_adapter.DefaultHeaderKey, "Bearer "+token)
|
|
|
|
|
|
|
|
|
|
resp, err := http.DefaultClient.Do(req)
|
|
|
|
|
assert.NoError(t, err)
|
|
|
|
|
assert.Equal(t, http.StatusNotAcceptable, resp.StatusCode)
|
|
|
|
|
|
|
|
|
|
str, err := ioutil.ReadAll(resp.Body)
|
|
|
|
|
fmt.Println("resp files", err, string(str))
|
|
|
|
|
})
|
|
|
|
|
bdd.Test(t, "send file big size", func() {
|
|
|
|
|
body := &bytes.Buffer{}
|
|
|
|
|
writer := multipart.NewWriter(body)
|
|
|
|
|
|
|
|
|
|
partf, _ := writer.CreateFormFile("gtaV+size.mp4", "gtaV+size.mp4")
|
|
|
|
|
f, err := os.OpenFile("./testfiles/gtaV+size.mp4", os.O_RDWR, 0644)
|
|
|
|
|
assert.NoError(t, err)
|
|
|
|
|
io.Copy(partf, f)
|
|
|
|
|
|
|
|
|
|
assert.NoError(t, writer.WriteField("ticket", ticket.Ticket))
|
|
|
|
|
|
|
|
|
|
writer.Close()
|
|
|
|
|
req, err := http.NewRequestWithContext(ctx, http.MethodPost, "http://localhost:1488/sendFiles", body)
|
|
|
|
|
req.Header.Set("Content-Type", "multipart/form-data; boundary="+writer.Boundary())
|
|
|
|
|
req.Header.Set("Referer", "http://localhost:1488")
|
|
|
|
|
req.Header.Add(jwt_adapter.DefaultHeaderKey, "Bearer "+token)
|
|
|
|
|
|
|
|
|
|
resp, err := http.DefaultClient.Do(req)
|
|
|
|
|
assert.NoError(t, err)
|
|
|
|
|
assert.Equal(t, http.StatusRequestEntityTooLarge, resp.StatusCode)
|
|
|
|
|
|
|
|
|
|
str, err := ioutil.ReadAll(resp.Body)
|
|
|
|
|
fmt.Println("resp files", err, string(str))
|
|
|
|
|
})
|
2024-02-20 18:43:12 +00:00
|
|
|
|
//todo
|
|
|
|
|
bdd.Test(t, "/subscribe, tools.SseWrapper(h.GetList)", func() {
|
|
|
|
|
client := &http.Client{}
|
2024-02-20 14:23:04 +00:00
|
|
|
|
|
2024-02-21 13:04:55 +00:00
|
|
|
|
r, err := http.NewRequest("GET", "http://localhost:1488/subscribe?Authorization=eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJwZW5hIiwiZXhwIjoxNzA4NjAyNDUxLCJpc3MiOiJwZW5hLWF1dGgtc2VydmljZSIsInN1YiI6InRlc3QifQ.Ipa3ZQt184AyyZFCKAIgU9ijYuvGLQClfyF7cJ74CxzV2NvCMIQU0dImPRwglnY1C3rmhjYxnV_AIHVxxXu-nQ", nil)
|
2024-02-20 18:43:12 +00:00
|
|
|
|
assert.NoError(t, err)
|
|
|
|
|
r.Header.Set("Referer", "http://localhost:1488")
|
|
|
|
|
r.Header.Set("Accept", "text/event-stream")
|
|
|
|
|
r.Header.Set("Cache-Control", "no-cache")
|
|
|
|
|
r.Header.Set("Connection", "keep-alive")
|
|
|
|
|
resp, err := client.Do(r)
|
|
|
|
|
assert.NoError(t, err)
|
|
|
|
|
|
2024-02-21 13:08:43 +00:00
|
|
|
|
//assert.Equal(t, http.StatusOK, resp.StatusCode)
|
2024-02-20 18:43:12 +00:00
|
|
|
|
|
|
|
|
|
sc := bufio.NewScanner(resp.Body)
|
|
|
|
|
|
|
|
|
|
fmt.Println(sc.Bytes())
|
|
|
|
|
})
|
|
|
|
|
bdd.Test(t, "/getTickets, tools.HandlerWrapper(h.GetTickets)", func() {
|
|
|
|
|
client := &http.Client{}
|
2024-11-27 09:03:13 +00:00
|
|
|
|
reqBody := tickets.GetTicketsReq{
|
2024-02-20 18:43:12 +00:00
|
|
|
|
Amount: 10,
|
|
|
|
|
Page: 1,
|
|
|
|
|
Search: "test",
|
|
|
|
|
Status: "open",
|
|
|
|
|
}
|
|
|
|
|
reqBytes, err := json.Marshal(reqBody)
|
|
|
|
|
assert.NoError(t, err)
|
|
|
|
|
|
|
|
|
|
req, err := http.NewRequest("POST", "http://localhost:1488/getTickets", bytes.NewBuffer(reqBytes))
|
|
|
|
|
assert.NoError(t, err)
|
|
|
|
|
req.Header.Set("Referer", "sadmin.pena")
|
|
|
|
|
req.Header.Add(jwt_adapter.DefaultHeaderKey, "Bearer "+token)
|
2024-02-20 14:23:04 +00:00
|
|
|
|
|
2024-02-20 18:43:12 +00:00
|
|
|
|
resp, err := client.Do(req)
|
2024-02-20 14:23:04 +00:00
|
|
|
|
|
2024-02-20 18:43:12 +00:00
|
|
|
|
assert.Equal(t, http.StatusOK, resp.StatusCode)
|
2024-02-20 14:23:04 +00:00
|
|
|
|
|
2024-11-27 09:03:13 +00:00
|
|
|
|
var respBody tickets.GetTicketsResp
|
2024-02-20 18:43:12 +00:00
|
|
|
|
err = json.NewDecoder(resp.Body).Decode(&respBody)
|
|
|
|
|
assert.NoError(t, err)
|
|
|
|
|
fmt.Println(respBody)
|
|
|
|
|
})
|
2024-02-21 10:44:28 +00:00
|
|
|
|
bdd.Test(t, "/getMessages, tools.HandlerWrapper(h.GetMessages)", func() {
|
|
|
|
|
client := &http.Client{}
|
2024-11-27 09:03:13 +00:00
|
|
|
|
reqBody := tickets.GetMessagesReq{
|
2024-02-21 10:44:28 +00:00
|
|
|
|
Amount: 0,
|
|
|
|
|
Page: 0,
|
|
|
|
|
Search: "test",
|
|
|
|
|
TicketID: ticket.Ticket,
|
|
|
|
|
}
|
|
|
|
|
reqBytes, err := json.Marshal(reqBody)
|
|
|
|
|
assert.NoError(t, err)
|
|
|
|
|
|
|
|
|
|
req, err := http.NewRequest("POST", "http://localhost:1488/getMessages", bytes.NewBuffer(reqBytes))
|
|
|
|
|
assert.NoError(t, err)
|
|
|
|
|
req.Header.Set("Referer", "http://localhost:1488")
|
|
|
|
|
req.Header.Add(jwt_adapter.DefaultHeaderKey, "Bearer "+token)
|
|
|
|
|
|
|
|
|
|
resp, err := client.Do(req)
|
|
|
|
|
|
|
|
|
|
assert.Equal(t, http.StatusOK, resp.StatusCode)
|
|
|
|
|
|
|
|
|
|
var respBody []model.Message
|
|
|
|
|
err = json.NewDecoder(resp.Body).Decode(&respBody)
|
|
|
|
|
assert.NoError(t, err)
|
|
|
|
|
fmt.Println(respBody)
|
|
|
|
|
})
|
2024-02-20 14:23:04 +00:00
|
|
|
|
})
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
|
2022-11-02 18:52:02 +00:00
|
|
|
|
func containsDoubleNewline(data []byte) (int, int) {
|
|
|
|
|
// Ищем все возможные переносы строки
|
|
|
|
|
crcr := bytes.Index(data, []byte("\r\r"))
|
|
|
|
|
lflf := bytes.Index(data, []byte("\n\n"))
|
|
|
|
|
crlflf := bytes.Index(data, []byte("\r\n\n"))
|
|
|
|
|
lfcrlf := bytes.Index(data, []byte("\n\r\n"))
|
|
|
|
|
crlfcrlf := bytes.Index(data, []byte("\r\n\r\n"))
|
|
|
|
|
// Находим первый двойной перенос строки
|
|
|
|
|
minPos := minPosInt(crcr, minPosInt(lflf, minPosInt(crlflf, minPosInt(lfcrlf, crlfcrlf))))
|
|
|
|
|
// Определяем длину
|
|
|
|
|
nlen := 2
|
|
|
|
|
if minPos == crlfcrlf {
|
|
|
|
|
nlen = 4
|
|
|
|
|
} else if minPos == crlflf || minPos == lfcrlf {
|
|
|
|
|
nlen = 3
|
|
|
|
|
}
|
|
|
|
|
return minPos, nlen
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func minPosInt(a, b int) int {
|
|
|
|
|
if a < 0 {
|
|
|
|
|
return b
|
|
|
|
|
}
|
|
|
|
|
if b < 0 {
|
|
|
|
|
return a
|
|
|
|
|
}
|
|
|
|
|
if a > b {
|
|
|
|
|
return b
|
|
|
|
|
}
|
|
|
|
|
return a
|
|
|
|
|
}
|