]>
Commit | Line | Data |
---|---|---|
6988a057 JH |
1 | package hotline |
2 | ||
3 | // | |
4 | //import ( | |
5 | // "bytes" | |
6 | // "fmt" | |
7 | // "github.com/google/go-cmp/cmp" | |
8 | // "io/ioutil" | |
9 | // "math/big" | |
10 | // "net" | |
11 | // "strings" | |
12 | // "sync" | |
13 | // "testing" | |
14 | //) | |
15 | // | |
16 | //type transactionTest struct { | |
17 | // description string // Human understandable description | |
18 | // account Account // Account struct for a user that will test transaction will execute under | |
19 | // request Transaction // transaction that will be sent by the client to the server | |
20 | // want Transaction // transaction that the client expects to receive in response | |
21 | // setup func() // Optional setup required for the test scenario | |
22 | // teardown func() // Optional teardown for test scenario | |
23 | //} | |
24 | // | |
25 | //func (tt *transactionTest) Setup(srv *Server) error { | |
26 | // if err := srv.NewUser(tt.account.Login, tt.account.Name, NegatedUserString([]byte(tt.account.Password)), tt.account.Access); err != nil { | |
27 | // return err | |
28 | // } | |
29 | // | |
30 | // if tt.setup != nil { | |
31 | // tt.setup() | |
32 | // } | |
33 | // | |
34 | // return nil | |
35 | //} | |
36 | // | |
37 | //func (tt *transactionTest) Teardown(srv *Server) error { | |
38 | // if err := srv.DeleteUser(tt.account.Login); err != nil { | |
39 | // return err | |
40 | // } | |
41 | // | |
42 | // if tt.teardown != nil { | |
43 | // tt.teardown() | |
44 | // } | |
45 | // | |
46 | // return nil | |
47 | //} | |
48 | // | |
49 | //// StartTestServer | |
50 | //func StartTestServer() (srv *Server, lnPort int) { | |
51 | // hotlineServer, _ := NewServer("test/config/") | |
52 | // ln, err := net.Listen("tcp", ":0") | |
53 | // | |
54 | // if err != nil { | |
55 | // panic(err) | |
56 | // } | |
57 | // go func() { | |
58 | // for { | |
59 | // conn, _ := ln.Accept() | |
60 | // go hotlineServer.HandleConnection(conn) | |
61 | // } | |
62 | // }() | |
63 | // return hotlineServer, ln.Addr().(*net.TCPAddr).Port | |
64 | //} | |
65 | // | |
66 | //func StartTestClient(serverPort int, login, passwd string) (*Client, error) { | |
67 | // c := NewClient("") | |
68 | // | |
69 | // err := c.JoinServer(fmt.Sprintf(":%v", serverPort), login, passwd) | |
70 | // if err != nil { | |
71 | // return nil, err | |
72 | // } | |
73 | // | |
74 | // return c, nil | |
75 | //} | |
76 | // | |
77 | //func StartTestServerWithClients(clientCount int) ([]*Client, int) { | |
78 | // _, serverPort := StartTestServer() | |
79 | // | |
80 | // var clients []*Client | |
81 | // for i := 0; i < clientCount; i++ { | |
82 | // client, err := StartTestClient(serverPort, "admin", "") | |
83 | // if err != nil { | |
84 | // panic(err) | |
85 | // } | |
86 | // clients = append(clients, client) | |
87 | // } | |
88 | // clients[0].ReadN(2) | |
89 | // | |
90 | // return clients, serverPort | |
91 | //} | |
92 | // | |
93 | ||
94 | ||
95 | ////func TestHandleTranAgreed(t *testing.T) { | |
96 | //// clients, _ := StartTestServerWithClients(2) | |
97 | //// | |
98 | //// chatMsg := "Test Chat" | |
99 | //// | |
100 | //// // Assert that both clients should receive the user join notification | |
101 | //// var wg sync.WaitGroup | |
102 | //// for _, client := range clients { | |
103 | //// wg.Add(1) | |
104 | //// go func(wg *sync.WaitGroup, c *Client) { | |
105 | //// defer wg.Done() | |
106 | //// | |
107 | //// receivedMsg := c.ReadTransactions()[0].GetField(fieldData).Data | |
108 | //// | |
109 | //// want := []byte(fmt.Sprintf("test: %s\r", chatMsg)) | |
110 | //// if bytes.Compare(receivedMsg, want) != 0 { | |
111 | //// t.Errorf("%q, want %q", receivedMsg, want) | |
112 | //// } | |
113 | //// }(&wg, client) | |
114 | //// } | |
115 | //// | |
116 | //// trans := clients[1].ReadTransactions() | |
117 | //// spew.Dump(trans) | |
118 | //// | |
119 | //// // Send the agreement | |
120 | //// clients[1].Connection.Write( | |
121 | //// NewTransaction( | |
122 | //// tranAgreed, 0, | |
123 | //// []Field{ | |
124 | //// NewField(fieldUserName, []byte("testUser")), | |
125 | //// NewField(fieldUserIconID, []byte{0x00,0x07}), | |
126 | //// }, | |
127 | //// ).Payload(), | |
128 | //// ) | |
129 | //// | |
130 | //// wg.Wait() | |
131 | ////} | |
132 | // | |
133 | //func TestChatSend(t *testing.T) { | |
134 | // //srvPort := StartTestServer() | |
135 | // // | |
136 | // //senderClient := NewClient("senderClient") | |
137 | // //senderClient.JoinServer(fmt.Sprintf(":%v", srvPort), "", "") | |
138 | // // | |
139 | // //receiverClient := NewClient("receiverClient") | |
140 | // //receiverClient.JoinServer(fmt.Sprintf(":%v", srvPort), "", "") | |
141 | // | |
142 | // clients, _ := StartTestServerWithClients(2) | |
143 | // | |
144 | // chatMsg := "Test Chat" | |
145 | // | |
146 | // // Both clients should receive the chatMsg | |
147 | // var wg sync.WaitGroup | |
148 | // for _, client := range clients { | |
149 | // wg.Add(1) | |
150 | // go func(wg *sync.WaitGroup, c *Client) { | |
151 | // defer wg.Done() | |
152 | // | |
153 | // receivedMsg := c.ReadTransactions()[0].GetField(fieldData).Data | |
154 | // | |
155 | // want := []byte(fmt.Sprintf(" test: %s\r", chatMsg)) | |
156 | // if bytes.Compare(receivedMsg, want) != 0 { | |
157 | // t.Errorf("%q, want %q", receivedMsg, want) | |
158 | // } | |
159 | // }(&wg, client) | |
160 | // } | |
161 | // | |
162 | // // Send the chatMsg | |
163 | // clients[1].Send( | |
164 | // NewTransaction( | |
165 | // tranChatSend, 0, | |
166 | // []Field{ | |
167 | // NewField(fieldData, []byte(chatMsg)), | |
168 | // }, | |
169 | // ), | |
170 | // ) | |
171 | // | |
172 | // wg.Wait() | |
173 | //} | |
174 | // | |
175 | //func TestSetClientUserInfo(t *testing.T) { | |
176 | // clients, _ := StartTestServerWithClients(2) | |
177 | // | |
178 | // newIcon := []byte{0x00, 0x01} | |
179 | // newUserName := "newName" | |
180 | // | |
181 | // // Both clients should receive the chatMsg | |
182 | // var wg sync.WaitGroup | |
183 | // for _, client := range clients { | |
184 | // wg.Add(1) | |
185 | // go func(wg *sync.WaitGroup, c *Client) { | |
186 | // defer wg.Done() | |
187 | // | |
188 | // tran := c.ReadTransactions()[0] | |
189 | // | |
190 | // want := []byte(newUserName) | |
191 | // got := tran.GetField(fieldUserName).Data | |
192 | // if bytes.Compare(got, want) != 0 { | |
193 | // t.Errorf("%q, want %q", got, want) | |
194 | // } | |
195 | // }(&wg, client) | |
196 | // } | |
197 | // | |
198 | // _, err := clients[1].Connection.Write( | |
199 | // NewTransaction( | |
200 | // tranSetClientUserInfo, 0, | |
201 | // []Field{ | |
202 | // NewField(fieldUserIconID, newIcon), | |
203 | // NewField(fieldUserName, []byte(newUserName)), | |
204 | // }, | |
205 | // ).Payload(), | |
206 | // ) | |
207 | // if err != nil { | |
208 | // t.Errorf("%v", err) | |
209 | // } | |
210 | // | |
211 | // wg.Wait() | |
212 | //} | |
213 | // | |
214 | //// TestSendInstantMsg tests that client A can send an instant message to client B | |
215 | //// | |
216 | //func TestSendInstantMsg(t *testing.T) { | |
217 | // clients, _ := StartTestServerWithClients(2) | |
218 | // | |
219 | // instantMsg := "Test IM" | |
220 | // | |
221 | // var wg sync.WaitGroup | |
222 | // wg.Add(1) | |
223 | // go func(wg *sync.WaitGroup, c *Client) { | |
224 | // defer wg.Done() | |
225 | // | |
226 | // tran := c.WaitForTransaction(tranServerMsg) | |
227 | // | |
228 | // receivedMsg := tran.GetField(fieldData).Data | |
229 | // want := []byte(fmt.Sprintf("%s", instantMsg)) | |
230 | // if bytes.Compare(receivedMsg, want) != 0 { | |
231 | // t.Errorf("%q, want %q", receivedMsg, want) | |
232 | // } | |
233 | // }(&wg, clients[0]) | |
234 | // | |
235 | // _ = clients[1].Send( | |
236 | // NewTransaction(tranGetUserNameList, 0, []Field{}), | |
237 | // ) | |
238 | // //connectedUsersTran := clients[1].ReadTransactions()[0] | |
239 | // ////connectedUsers := connectedUsersTran.Fields[0].Data[0:2] | |
240 | // //spew.Dump(connectedUsersTran.Fields) | |
241 | // //firstUserID := connectedUsersTran.Fields[0].Data[0:2] | |
242 | // // | |
243 | // //spew.Dump(firstUserID) | |
244 | // | |
245 | // // Send the IM | |
246 | // err := clients[1].Send( | |
247 | // NewTransaction( | |
248 | // tranSendInstantMsg, 0, | |
249 | // []Field{ | |
250 | // NewField(fieldData, []byte(instantMsg)), | |
251 | // NewField(fieldUserName, clients[1].UserName), | |
252 | // NewField(fieldUserID, []byte{0, 2}), | |
253 | // NewField(fieldOptions, []byte{0, 1}), | |
254 | // }, | |
255 | // ), | |
256 | // ) | |
257 | // if err != nil { | |
258 | // t.Error(err) | |
259 | // } | |
260 | // | |
261 | // wg.Wait() | |
262 | //} | |
263 | // | |
264 | //func TestOldPostNews(t *testing.T) { | |
265 | // clients, _ := StartTestServerWithClients(2) | |
266 | // | |
267 | // newsPost := "Test News Post" | |
268 | // | |
269 | // var wg sync.WaitGroup | |
270 | // wg.Add(1) | |
271 | // go func(wg *sync.WaitGroup, c *Client) { | |
272 | // defer wg.Done() | |
273 | // | |
274 | // receivedMsg := c.ReadTransactions()[0].GetField(fieldData).Data | |
275 | // | |
276 | // if strings.Contains(string(receivedMsg), newsPost) == false { | |
277 | // t.Errorf("news post missing") | |
278 | // } | |
279 | // }(&wg, clients[0]) | |
280 | // | |
281 | // clients[1].Connection.Write( | |
282 | // NewTransaction( | |
283 | // tranOldPostNews, 0, | |
284 | // []Field{ | |
285 | // NewField(fieldData, []byte(newsPost)), | |
286 | // }, | |
287 | // ).Payload(), | |
288 | // ) | |
289 | // | |
290 | // wg.Wait() | |
291 | //} | |
292 | // | |
293 | //// TODO: Fixme | |
294 | ////func TestGetFileNameList(t *testing.T) { | |
295 | //// clients, _ := StartTestServerWithClients(2) | |
296 | //// | |
297 | //// clients[0].Connection.Write( | |
298 | //// NewTransaction( | |
299 | //// tranGetFileNameList, 0, | |
300 | //// []Field{}, | |
301 | //// ).Payload(), | |
302 | //// ) | |
303 | //// | |
304 | //// ts := clients[0].ReadTransactions() | |
305 | //// testfileSit := ReadFileNameWithInfo(ts[0].Fields[1].Data) | |
306 | //// | |
307 | //// want := "testfile.sit" | |
308 | //// got := testfileSit.Name | |
309 | //// diff := cmp.Diff(want, got) | |
310 | //// if diff != "" { | |
311 | //// t.Fatalf(diff) | |
312 | //// } | |
313 | //// if testfileSit.Name != "testfile.sit" { | |
314 | //// t.Errorf("news post missing") | |
315 | //// t.Errorf("%q, want %q", testfileSit.Name, "testfile.sit") | |
316 | //// } | |
317 | ////} | |
318 | // | |
319 | //func TestNewsCategoryList(t *testing.T) { | |
320 | // clients, _ := StartTestServerWithClients(2) | |
321 | // client := clients[0] | |
322 | // | |
323 | // client.Send( | |
324 | // NewTransaction( | |
325 | // tranGetNewsCatNameList, 0, | |
326 | // []Field{}, | |
327 | // ), | |
328 | // ) | |
329 | // | |
330 | // ts := client.ReadTransactions() | |
331 | // cats := ts[0].GetFields(fieldNewsCatListData15) | |
332 | // | |
333 | // newsCat := ReadNewsCategoryListData(cats[0].Data) | |
334 | // want := "TestBundle" | |
335 | // got := newsCat.Name | |
336 | // diff := cmp.Diff(want, got) | |
337 | // if diff != "" { | |
338 | // t.Fatalf(diff) | |
339 | // } | |
340 | // | |
341 | // newsBundle := ReadNewsCategoryListData(cats[1].Data) | |
342 | // want = "TestCat" | |
343 | // got = newsBundle.Name | |
344 | // diff = cmp.Diff(want, got) | |
345 | // if diff != "" { | |
346 | // t.Fatalf(diff) | |
347 | // } | |
348 | //} | |
349 | // | |
350 | //func TestNestedNewsCategoryList(t *testing.T) { | |
351 | // clients, _ := StartTestServerWithClients(2) | |
352 | // client := clients[0] | |
353 | // newsPath := NewsPath{ | |
354 | // []string{ | |
355 | // "TestBundle", | |
356 | // "NestedBundle", | |
357 | // }, | |
358 | // } | |
359 | // | |
360 | // _, err := client.Connection.Write( | |
361 | // NewTransaction( | |
362 | // tranGetNewsCatNameList, 0, | |
363 | // []Field{ | |
364 | // NewField( | |
365 | // fieldNewsPath, | |
366 | // newsPath.Payload(), | |
367 | // ), | |
368 | // }, | |
369 | // ).Payload(), | |
370 | // ) | |
371 | // if err != nil { | |
372 | // t.Errorf("%v", err) | |
373 | // } | |
374 | // | |
375 | // ts := client.ReadTransactions() | |
376 | // cats := ts[0].GetFields(fieldNewsCatListData15) | |
377 | // | |
378 | // newsCat := ReadNewsCategoryListData(cats[0].Data) | |
379 | // want := "NestedCat" | |
380 | // got := newsCat.Name | |
381 | // diff := cmp.Diff(want, got) | |
382 | // if diff != "" { | |
383 | // t.Fatalf(diff) | |
384 | // } | |
385 | //} | |
386 | // | |
387 | //func TestFileDownload(t *testing.T) { | |
388 | // clients, _ := StartTestServerWithClients(2) | |
389 | // client := clients[0] | |
390 | // | |
391 | // type want struct { | |
392 | // fileSize []byte | |
393 | // transferSize []byte | |
394 | // waitingCount []byte | |
395 | // refNum []byte | |
396 | // } | |
397 | // var tests = []struct { | |
398 | // fileName string | |
399 | // want want | |
400 | // }{ | |
401 | // { | |
402 | // fileName: "testfile.sit", | |
403 | // want: want{ | |
404 | // fileSize: []byte{0x0, 0x0, 0x0, 0x13}, | |
405 | // transferSize: []byte{0x0, 0x0, 0x0, 0xa1}, | |
406 | // }, | |
407 | // }, | |
408 | // { | |
409 | // fileName: "testfile.txt", | |
410 | // want: want{ | |
411 | // fileSize: []byte{0x0, 0x0, 0x0, 0x17}, | |
412 | // transferSize: []byte{0x0, 0x0, 0x0, 0xa5}, | |
413 | // }, | |
414 | // }, | |
415 | // } | |
416 | // | |
417 | // for _, test := range tests { | |
418 | // _, err := client.Connection.Write( | |
419 | // NewTransaction( | |
420 | // tranDownloadFile, 0, | |
421 | // []Field{ | |
422 | // NewField(fieldFileName, []byte(test.fileName)), | |
423 | // NewField(fieldFilePath, []byte("")), | |
424 | // }, | |
425 | // ).Payload(), | |
426 | // ) | |
427 | // if err != nil { | |
428 | // t.Errorf("%v", err) | |
429 | // } | |
430 | // tran := client.ReadTransactions()[0] | |
431 | // | |
432 | // if got := tran.GetField(fieldFileSize).Data; bytes.Compare(got, test.want.fileSize) != 0 { | |
433 | // t.Errorf("TestFileDownload: fileSize got %#v, want %#v", got, test.want.fileSize) | |
434 | // } | |
435 | // | |
436 | // if got := tran.GetField(fieldTransferSize).Data; bytes.Compare(got, test.want.transferSize) != 0 { | |
437 | // t.Errorf("TestFileDownload: fieldTransferSize: %s: got %#v, want %#v", test.fileName, got, test.want.transferSize) | |
438 | // } | |
439 | // } | |
440 | //} | |
441 | // | |
442 | //func TestFileUpload(t *testing.T) { | |
443 | // clients, _ := StartTestServerWithClients(2) | |
444 | // client := clients[0] | |
445 | // | |
446 | // var tests = []struct { | |
447 | // fileName string | |
448 | // want Transaction | |
449 | // }{ | |
450 | // { | |
451 | // fileName: "testfile.sit", | |
452 | // want: Transaction{ | |
453 | // Fields: []Field{ | |
454 | // NewField(fieldRefNum, []byte{0x16, 0x3f, 0x5f, 0xf}), | |
455 | // }, | |
456 | // }, | |
457 | // }, | |
458 | // } | |
459 | // | |
460 | // for _, test := range tests { | |
461 | // err := client.Send( | |
462 | // NewTransaction( | |
463 | // tranUploadFile, 0, | |
464 | // []Field{ | |
465 | // NewField(fieldFileName, []byte(test.fileName)), | |
466 | // NewField(fieldFilePath, []byte("")), | |
467 | // }, | |
468 | // ), | |
469 | // ) | |
470 | // if err != nil { | |
471 | // t.Errorf("%v", err) | |
472 | // } | |
473 | // tran := client.ReadTransactions()[0] | |
474 | // | |
475 | // for _, f := range test.want.Fields { | |
476 | // got := tran.GetField(f.Uint16ID()).Data | |
477 | // want := test.want.GetField(fieldRefNum).Data | |
478 | // if bytes.Compare(got, want) != 0 { | |
479 | // t.Errorf("xxx: yyy got %#v, want %#v", got, want) | |
480 | // } | |
481 | // } | |
482 | // } | |
483 | //} | |
484 | // | |
485 | //// TODO: Make canonical | |
486 | //func TestNewUser(t *testing.T) { | |
487 | // srv, port := StartTestServer() | |
488 | // | |
489 | // var tests = []struct { | |
490 | // description string | |
491 | // setup func() | |
492 | // teardown func() | |
493 | // account Account | |
494 | // request Transaction | |
495 | // want Transaction | |
496 | // }{ | |
497 | // { | |
498 | // description: "a valid new account", | |
499 | // teardown: func() { | |
500 | // _ = srv.DeleteUser("testUser") | |
501 | // }, | |
502 | // account: Account{ | |
503 | // Login: "test", | |
504 | // Name: "unnamed", | |
505 | // Password: "test", | |
506 | // Access: []byte{255, 255, 255, 255, 255, 255, 255, 255}, | |
507 | // }, | |
508 | // request: NewTransaction( | |
509 | // tranNewUser, 0, | |
510 | // []Field{ | |
511 | // NewField(fieldUserLogin, []byte(NegatedUserString([]byte("testUser")))), | |
512 | // NewField(fieldUserName, []byte("testUserName")), | |
513 | // NewField(fieldUserPassword, []byte(NegatedUserString([]byte("testPw")))), | |
514 | // NewField(fieldUserAccess, []byte{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}), | |
515 | // }, | |
516 | // ), | |
517 | // want: Transaction{ | |
518 | // Fields: []Field{}, | |
519 | // }, | |
520 | // }, | |
521 | // { | |
522 | // description: "a newUser request from a user without the required access", | |
523 | // teardown: func() { | |
524 | // _ = srv.DeleteUser("testUser") | |
525 | // }, | |
526 | // account: Account{ | |
527 | // Login: "test", | |
528 | // Name: "unnamed", | |
529 | // Password: "test", | |
530 | // Access: []byte{0, 0, 0, 0, 0, 0, 0, 0}, | |
531 | // }, | |
532 | // request: NewTransaction( | |
533 | // tranNewUser, 0, | |
534 | // []Field{ | |
535 | // NewField(fieldUserLogin, []byte(NegatedUserString([]byte("testUser")))), | |
536 | // NewField(fieldUserName, []byte("testUserName")), | |
537 | // NewField(fieldUserPassword, []byte(NegatedUserString([]byte("testPw")))), | |
538 | // NewField(fieldUserAccess, []byte{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}), | |
539 | // }, | |
540 | // ), | |
541 | // want: Transaction{ | |
542 | // Fields: []Field{ | |
543 | // NewField(fieldError, []byte("You are not allowed to create new accounts.")), | |
544 | // }, | |
545 | // }, | |
546 | // }, | |
547 | // { | |
548 | // description: "a request to create a user that already exists", | |
549 | // teardown: func() { | |
550 | // _ = srv.DeleteUser("testUser") | |
551 | // }, | |
552 | // account: Account{ | |
553 | // Login: "test", | |
554 | // Name: "unnamed", | |
555 | // Password: "test", | |
556 | // Access: []byte{255, 255, 255, 255, 255, 255, 255, 255}, | |
557 | // }, | |
558 | // request: NewTransaction( | |
559 | // tranNewUser, 0, | |
560 | // []Field{ | |
561 | // NewField(fieldUserLogin, []byte(NegatedUserString([]byte("guest")))), | |
562 | // NewField(fieldUserName, []byte("testUserName")), | |
563 | // NewField(fieldUserPassword, []byte(NegatedUserString([]byte("testPw")))), | |
564 | // NewField(fieldUserAccess, []byte{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}), | |
565 | // }, | |
566 | // ), | |
567 | // want: Transaction{ | |
568 | // Fields: []Field{ | |
569 | // NewField(fieldError, []byte("Cannot create account guest because there is already an account with that login.")), | |
570 | // }, | |
571 | // }, | |
572 | // }, | |
573 | // } | |
574 | // | |
575 | // for _, test := range tests { | |
576 | // if test.setup != nil { | |
577 | // test.setup() | |
578 | // } | |
579 | // | |
580 | // if err := srv.NewUser(test.account.Login, test.account.Name, NegatedUserString([]byte(test.account.Password)), test.account.Access); err != nil { | |
581 | // t.Errorf("%v", err) | |
582 | // } | |
583 | // | |
584 | // c := NewClient("") | |
585 | // err := c.JoinServer(fmt.Sprintf(":%v", port), test.account.Login, test.account.Password) | |
586 | // if err != nil { | |
587 | // t.Errorf("login failed: %v", err) | |
588 | // } | |
589 | // | |
590 | // if err := c.Send(test.request); err != nil { | |
591 | // t.Errorf("%v", err) | |
592 | // } | |
593 | // | |
594 | // tran := c.ReadTransactions()[0] | |
595 | // for _, want := range test.want.Fields { | |
596 | // got := tran.GetField(want.Uint16ID()) | |
597 | // if bytes.Compare(got.Data, want.Data) != 0 { | |
598 | // t.Errorf("%v: field mismatch: want: %#v got: %#v", test.description, want.Data, got.Data) | |
599 | // } | |
600 | // } | |
601 | // | |
602 | // srv.DeleteUser(test.account.Login) | |
603 | // | |
604 | // if test.teardown != nil { | |
605 | // test.teardown() | |
606 | // } | |
607 | // } | |
608 | //} | |
609 | // | |
610 | //func TestDeleteUser(t *testing.T) { | |
611 | // srv, port := StartTestServer() | |
612 | // | |
613 | // var tests = []transactionTest{ | |
614 | // { | |
615 | // description: "a deleteUser request from a user without the required access", | |
616 | // account: Account{ | |
617 | // Login: "test", | |
618 | // Name: "unnamed", | |
619 | // Password: "test", | |
620 | // Access: []byte{0, 0, 0, 0, 0, 0, 0, 0}, | |
621 | // }, | |
622 | // request: NewTransaction( | |
623 | // tranDeleteUser, 0, | |
624 | // []Field{ | |
625 | // NewField(fieldUserLogin, []byte(NegatedUserString([]byte("foo")))), | |
626 | // }, | |
627 | // ), | |
628 | // want: Transaction{ | |
629 | // Fields: []Field{ | |
630 | // NewField(fieldError, []byte("You are not allowed to delete accounts.")), | |
631 | // }, | |
632 | // }, | |
633 | // }, | |
634 | // { | |
635 | // description: "a valid deleteUser request", | |
636 | // setup: func() { | |
637 | // _ = srv.NewUser("foo", "foo", "foo", []byte{0, 0, 0, 0, 0, 0, 0, 0}) | |
638 | // }, | |
639 | // account: Account{ | |
640 | // Login: "test", | |
641 | // Name: "unnamed", | |
642 | // Password: "test", | |
643 | // Access: []byte{255, 255, 255, 255, 255, 255, 255, 255}, | |
644 | // }, | |
645 | // request: NewTransaction( | |
646 | // tranDeleteUser, 0, | |
647 | // []Field{ | |
648 | // NewField(fieldUserLogin, []byte(NegatedUserString([]byte("foo")))), | |
649 | // }, | |
650 | // ), | |
651 | // want: Transaction{ | |
652 | // Fields: []Field{}, | |
653 | // }, | |
654 | // }, | |
655 | // } | |
656 | // | |
657 | // for _, test := range tests { | |
658 | // test.Setup(srv) | |
659 | // | |
660 | // c := NewClient("") | |
661 | // err := c.JoinServer(fmt.Sprintf(":%v", port), test.account.Login, test.account.Password) | |
662 | // if err != nil { | |
663 | // t.Errorf("login failed: %v", err) | |
664 | // } | |
665 | // | |
666 | // if err := c.Send(test.request); err != nil { | |
667 | // t.Errorf("%v", err) | |
668 | // } | |
669 | // | |
670 | // tran := c.ReadTransactions()[0] | |
671 | // for _, want := range test.want.Fields { | |
672 | // got := tran.GetField(want.Uint16ID()) | |
673 | // if bytes.Compare(got.Data, want.Data) != 0 { | |
674 | // t.Errorf("%v: field mismatch: want: %#v got: %#v", test.description, want.Data, got.Data) | |
675 | // } | |
676 | // } | |
677 | // | |
678 | // test.Teardown(srv) | |
679 | // } | |
680 | //} | |
681 | // | |
682 | //func TestDeleteFile(t *testing.T) { | |
683 | // srv, port := StartTestServer() | |
684 | // | |
685 | // var tests = []transactionTest{ | |
686 | // { | |
687 | // description: "a request without the required access", | |
688 | // account: Account{ | |
689 | // Login: "test", | |
690 | // Name: "unnamed", | |
691 | // Password: "test", | |
692 | // Access: []byte{0, 0, 0, 0, 0, 0, 0, 0}, | |
693 | // }, | |
694 | // request: NewTransaction( | |
695 | // tranDeleteFile, 0, | |
696 | // []Field{ | |
697 | // NewField(fieldFileName, []byte("testFile")), | |
698 | // NewField(fieldFilePath, []byte("")), | |
699 | // }, | |
700 | // ), | |
701 | // want: Transaction{ | |
702 | // Fields: []Field{}, | |
703 | // }, | |
704 | // }, | |
705 | // { | |
706 | // description: "a valid deleteFile request", | |
707 | // setup: func() { | |
708 | // _ = ioutil.WriteFile(srv.Config.FileRoot+"testFile", []byte{0x00}, 0666) | |
709 | // }, | |
710 | // account: Account{ | |
711 | // Login: "test", | |
712 | // Name: "unnamed", | |
713 | // Password: "test", | |
714 | // Access: []byte{255, 255, 255, 255, 255, 255, 255, 255}, | |
715 | // }, | |
716 | // request: NewTransaction( | |
717 | // tranDeleteFile, 0, | |
718 | // []Field{ | |
719 | // NewField(fieldFileName, []byte("testFile")), | |
720 | // NewField(fieldFilePath, []byte("")), | |
721 | // }, | |
722 | // ), | |
723 | // want: Transaction{ | |
724 | // Fields: []Field{}, | |
725 | // }, | |
726 | // }, | |
727 | // { | |
728 | // description: "an invalid request for a file that does not exist", | |
729 | // account: Account{ | |
730 | // Login: "test", | |
731 | // Name: "unnamed", | |
732 | // Password: "test", | |
733 | // Access: []byte{255, 255, 255, 255, 255, 255, 255, 255}, | |
734 | // }, | |
735 | // request: NewTransaction( | |
736 | // tranDeleteFile, 0, | |
737 | // []Field{ | |
738 | // NewField(fieldFileName, []byte("testFile")), | |
739 | // NewField(fieldFilePath, []byte("")), | |
740 | // }, | |
741 | // ), | |
742 | // want: Transaction{ | |
743 | // Fields: []Field{ | |
744 | // NewField(fieldError, []byte("Cannot delete file testFile because it does not exist or cannot be found.")), | |
745 | // }, | |
746 | // }, | |
747 | // }, | |
748 | // } | |
749 | // | |
750 | // for _, test := range tests { | |
751 | // test.Setup(srv) | |
752 | // | |
753 | // c := NewClient("") | |
754 | // | |
755 | // if err := c.JoinServer(fmt.Sprintf(":%v", port), test.account.Login, test.account.Password); err != nil { | |
756 | // t.Errorf("login failed: %v", err) | |
757 | // } | |
758 | // | |
759 | // if err := c.Send(test.request); err != nil { | |
760 | // t.Errorf("%v", err) | |
761 | // } | |
762 | // | |
763 | // tran := c.ReadTransactions()[0] | |
764 | // for _, want := range test.want.Fields { | |
765 | // got := tran.GetField(want.Uint16ID()) | |
766 | // if bytes.Compare(got.Data, want.Data) != 0 { | |
767 | // t.Errorf("%v: field mismatch: want: %#v got: %#v", test.description, want.Data, got.Data) | |
768 | // } | |
769 | // } | |
770 | // | |
771 | // test.Teardown(srv) | |
772 | // } | |
773 | //} | |
774 | // | |
775 | //func Test_authorize(t *testing.T) { | |
776 | // accessBitmap := big.NewInt(int64(0)) | |
777 | // accessBitmap.SetBit(accessBitmap, accessCreateFolder, 1) | |
778 | // fmt.Printf("%v %b %x\n", accessBitmap, accessBitmap, accessBitmap) | |
779 | // fmt.Printf("%b\n", 0b10000) | |
780 | // | |
781 | // type args struct { | |
782 | // access *[]byte | |
783 | // reqAccess int | |
784 | // } | |
785 | // tests := []struct { | |
786 | // name string | |
787 | // args args | |
788 | // want bool | |
789 | // }{ | |
790 | // { | |
791 | // name: "fooz", | |
792 | // args: args{ | |
793 | // access: &[]byte{4, 0, 0, 0, 0, 0, 0, 0x02}, | |
794 | // reqAccess: accessDownloadFile, | |
795 | // }, | |
796 | // want: true, | |
797 | // }, | |
798 | // } | |
799 | // for _, tt := range tests { | |
800 | // t.Run(tt.name, func(t *testing.T) { | |
801 | // if got := authorize(tt.args.access, tt.args.reqAccess); got != tt.want { | |
802 | // t.Errorf("authorize() = %v, want %v", got, tt.want) | |
803 | // } | |
804 | // }) | |
805 | // } | |
806 | //} |