update tests

This commit is contained in:
Pavel 2024-02-20 21:43:12 +03:00
parent 90cab29e48
commit 68300ed480
4 changed files with 94 additions and 73 deletions

@ -372,7 +372,7 @@ func (d *DAL) WatchTickets(
for cs.Next(ctx) {
var (
piece model.Ticket
piece model.Ticket
change Change
)
if err := cs.Decode(&change); err != nil {
@ -443,6 +443,7 @@ func (d *DAL) YieldUserTickets(ctx context.Context, userID string, limit, offset
query := bson.M{
"UserID": userID,
}
fmt.Println("UserID", userID)
sort := bson.D{{"State", -1}, {"UpdatedAt", -1}}
@ -489,7 +490,7 @@ func (d *DAL) WatchAllTickets(ctx context.Context, yield func(ticket model.Ticke
for cs.Next(ctx) {
var (
piece model.Ticket
piece model.Ticket
change Change
)
@ -624,10 +625,10 @@ func (d *DAL) WatchMessages(
for cs.Next(ctx) {
var (
piece model.Message
piece model.Message
change Change
)
if err := cs.Decode(&change); err != nil {
return err
}

@ -173,13 +173,14 @@ func (h *Heruvym) CreateTicket(w http.ResponseWriter, r *http.Request) {
var _ tools.DataEmitter = (&Heruvym{}).GetList
func (h *Heruvym) GetList(ctx context.Context) chan interface{} {
fmt.Println("GetList")
defer func() {
if rec := recover(); rec != nil {
fmt.Println(rec)
}
}()
sess := jwt_adapter.Get(ctx)
fmt.Println("sess", sess)
if sess == nil {
return nil
}
@ -305,7 +306,7 @@ func (h *Heruvym) PutMessage(
request.TicketID,
[]string{},
)
fmt.Println("PUTMES00", err)
fmt.Println("PUTMES00", err)
if err != nil {
fmt.Println("PUTMES1", err)
return errors.New("can not put message"), http.StatusInternalServerError
@ -356,7 +357,7 @@ func (h *Heruvym) PutMessage(
//return errors.New("can not update ticket"), http.StatusInternalServerError
}
fmt.Println("PUTMES03" )
fmt.Println("PUTMES03")
return nil, http.StatusOK
}

@ -25,15 +25,22 @@ import (
"heruvym/jwt_adapter"
)
var ticket service.CreateTicketResp
var msgs = make(chan []byte)
var token string
///create+
///subscribe todo
///ticket+
///send+
///sendFile+
///getTickets
///getMessages
func TestTicket(t *testing.T) {
fmt.Println("start test")
ctx, cancel := context.WithCancel(context.Background())
defer cancel()
bdd.Scenario(t, "SupportChat", func(t *testing.T, runID string) {
var ticket service.CreateTicketResp
var msgs = make(chan []byte)
var token string
go func() {
time.Sleep(3 * time.Second)
@ -154,33 +161,33 @@ func TestTicket(t *testing.T) {
}()
})
//bdd.Test(t, "send message", func() {
//
// buf, err := json.Marshal(service.ReqPutMessage{
// 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)
// resp, err := http.DefaultClient.Do(req)
// fmt.Println(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)
//})
bdd.Test(t, "send message", func() {
buf, err := json.Marshal(service.ReqPutMessage{
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)
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)
})
bdd.Test(t, "send file", func() {
body := &bytes.Buffer{}
writer := multipart.NewWriter(body)
@ -205,45 +212,54 @@ func TestTicket(t *testing.T) {
str, err := ioutil.ReadAll(resp.Body)
fmt.Println("resp files", err, string(str))
})
//todo
bdd.Test(t, "/subscribe, tools.SseWrapper(h.GetList)", func() {
client := &http.Client{}
SomeTests(t)
r, err := http.NewRequest("GET", "http://localhost:1488/subscribe?Authorization="+token+"&ticket="+ticket.Ticket, nil)
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)
assert.Equal(t, http.StatusOK, resp.StatusCode)
sc := bufio.NewScanner(resp.Body)
fmt.Println(sc.Bytes())
})
bdd.Test(t, "/getTickets, tools.HandlerWrapper(h.GetTickets)", func() {
client := &http.Client{}
reqBody := service.GetTicketsReq{
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)
resp, err := client.Do(req)
assert.Equal(t, http.StatusOK, resp.StatusCode)
var respBody service.GetTicketsResp
err = json.NewDecoder(resp.Body).Decode(&respBody)
assert.NoError(t, err)
fmt.Println(respBody)
})
})
})
}
func SomeTests(t *testing.T) {
ctx := context.Background()
fmt.Println(token)
bdd.Test(t, "send message", func() {
buf, err := json.Marshal(service.ReqPutMessage{
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)
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)
})
}
func containsDoubleNewline(data []byte) (int, int) {
// Ищем все возможные переносы строки
crcr := bytes.Index(data, []byte("\r\r"))

@ -21,6 +21,7 @@ func SseWrapper(emitter DataEmitter) http.HandlerFunc {
}
}()
// Отправляем header event-stream
fmt.Println("SseWrapper")
w.Header().Set("Content-Type", "text/event-stream")
w.Header().Set("Cache-Control", "no-cache")
@ -28,6 +29,7 @@ func SseWrapper(emitter DataEmitter) http.HandlerFunc {
flusher, ok := w.(http.Flusher)
if !ok {
fmt.Println("!ok")
http.Error(
w,
"flushing is not allowed",
@ -35,7 +37,7 @@ func SseWrapper(emitter DataEmitter) http.HandlerFunc {
)
return
}
fmt.Println("SseWrapper")
ctx := context.WithValue(
r.Context(),
ContextURLKey,
@ -45,6 +47,7 @@ func SseWrapper(emitter DataEmitter) http.HandlerFunc {
dE := emitter(ctx)
if dE == nil {
fmt.Println("dE")
http.Error(w, "no token", http.StatusUnauthorized)
return
}
@ -57,7 +60,7 @@ func SseWrapper(emitter DataEmitter) http.HandlerFunc {
case <-time.After(time.Second * 10):
SSEPing(w)
case m := <-dE:
fmt.Println("datatatata", m)
fmt.Println("datatatata", m)
if m == nil {
continue
}