-// func TestLogin(t *testing.T) {
-//
-// tests := []struct {
-// name string
-// client *Client
-// }{
-// {
-// name: "when login is successful",
-// client: NewClient("guest", NewTestLogger()),
-// },
-// }
-// for _, test := range tests {
-// t.Run(test.name, func(t *testing.T) {
-//
-// })
-// }
-// }
-
-func TestNewUser(t *testing.T) {
- srv, _, _ := StartTestServer()
-
- tests := []testCase{
- // {
- // name: "a valid new account",
- // mockHandler: func() mockClientHandler {
- // mh := mockClientHandler{}
- // mh.On("Handle", mock.AnythingOfType("*hotline.Client"), mock.MatchedBy(func(t *Transaction) bool {
- // println("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@")
- // spew.Dump(t.Type)
- // spew.Dump(bytes.Equal(t.Type, []byte{0x01, 0x5e}))
- // //if !bytes.Equal(t.GetField(fieldError).Data, []byte("You are not allowed to create new accounts.")) {
- // // return false
- // //}
- // return bytes.Equal(t.Type, []byte{0x01, 0x5e},
- // )
- // })).Return(
- // []Transaction{}, nil,
- // )
- //
- // clientHandlers[tranNewUser] = mh
- // return mh
- // }(),
- // client: func() *Client {
- // c := NewClient("testUser", NewTestLogger())
- // return c
- // }(),
- // teardown: func() {
- // _ = srv.DeleteUser("testUser")
- // },
- // account: Account{
- // Login: "test",
- // Name: "unnamed",
- // Password: "test",
- // Access: &[]byte{255, 255, 255, 255, 255, 255, 255, 255},
- // },
- // request: NewTransaction(
- // tranNewUser, nil,
- // NewField(fieldUserLogin, []byte(NegatedUserString([]byte("testUser")))),
- // NewField(fieldUserName, []byte("testUserName")),
- // NewField(fieldUserPassword, []byte(NegatedUserString([]byte("testPw")))),
- // NewField(fieldUserAccess, []byte{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}),
- // ),
- // want: &Transaction{
- // Fields: []Field{},
- // },
- // },
- // {
- // name: "a newUser request from a user without the required access",
- // mockHandler: func() *mockClientHandler {
- // mh := mockClientHandler{}
- // mh.On("Handle", mock.AnythingOfType("*hotline.Client"), mock.MatchedBy(func(t *Transaction) bool {
- // if !bytes.Equal(t.GetField(fieldError).Data, []byte("You are not allowed to create new accounts.")) {
- // return false
- // }
- // return bytes.Equal(t.Type, []byte{0x01, 0x5e})
- // })).Return(
- // []Transaction{}, nil,
- // )
- // return &mh
- // }(),
- // teardown: func() {
- // _ = srv.DeleteUser("testUser")
- // },
- // account: Account{
- // Login: "test",
- // Name: "unnamed",
- // Password: "test",
- // Access: &[]byte{0, 0, 0, 0, 0, 0, 0, 0},
- // },
- // request: NewTransaction(
- // tranNewUser, nil,
- // NewField(fieldUserLogin, []byte(NegatedUserString([]byte("testUser")))),
- // NewField(fieldUserName, []byte("testUserName")),
- // NewField(fieldUserPassword, []byte(NegatedUserString([]byte("testPw")))),
- // NewField(fieldUserAccess, []byte{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}),
- // ),
- // },
- // {
- // name: "when user does not have required permission",
- // mockHandler: func() map[int]*mockClientHandler {
- // mockHandlers := make(map[int]*mockClientHandler)
- //
- // mh := mockClientHandler{}
- // mh.On("Handle", mock.AnythingOfType("*hotline.Client"), mock.MatchedBy(func(t *Transaction) bool {
- // return t.equal(Transaction{
- // Type: []byte{0x01, 0x5e},
- // IsReply: 1,
- // ErrorCode: []byte{0, 0, 0, 1},
- // Fields: []Field{
- // NewField(fieldError, []byte("You are not allowed to create new accounts.")),
- // },
- // })
- // })).Return(
- // []Transaction{}, nil,
- // )
- // mockHandlers[tranNewUser] = &mh
- //
- // return mockHandlers
- // }(),
- //
- // teardown: func() {
- // _ = srv.DeleteUser("testUser")
- // },
- // account: Account{
- // Login: "test",
- // Name: "unnamed",
- // Password: "test",
- // Access: &[]byte{0, 0, 0, 0, 0, 0, 0, 0},
- // },
- // request: NewTransaction(
- // tranNewUser, nil,
- // NewField(fieldUserLogin, []byte(NegatedUserString([]byte("testUser")))),
- // NewField(fieldUserName, []byte("testUserName")),
- // NewField(fieldUserPassword, []byte(NegatedUserString([]byte("testPw")))),
- // NewField(fieldUserAccess, []byte{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}),
- // ),
- // },
-
- // {
- // name: "a request to create a user that already exists",
- // setup: func() {
- //
- // },
- // teardown: func() {
- // _ = srv.DeleteUser("testUser")
- // },
- // account: Account{
- // Login: "test",
- // Name: "unnamed",
- // Password: "test",
- // Access: &[]byte{255, 255, 255, 255, 255, 255, 255, 255},
- // },
- // request: NewTransaction(
- // tranNewUser, nil,
- // NewField(fieldUserLogin, []byte(NegatedUserString([]byte("guest")))),
- // NewField(fieldUserName, []byte("testUserName")),
- // NewField(fieldUserPassword, []byte(NegatedUserString([]byte("testPw")))),
- // NewField(fieldUserAccess, []byte{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}),
- // ),
- // want: &Transaction{
- // Fields: []Field{
- // NewField(fieldError, []byte("Cannot create account guest because there is already an account with that login.")),
- // },
- // },
- // },
- }
-
- for _, test := range tests {
- t.Run(test.name, func(t *testing.T) {
- test.Setup(srv)
-
- // move to Setup?
- c := NewClient(test.account.Name, NewTestLogger())
- err := c.JoinServer(fmt.Sprintf(":%v", srv.APIPort()), test.account.Login, test.account.Password)
- if err != nil {
- t.Errorf("login failed: %v", err)
- }
- // end move to Setup??