mirror of
				https://github.com/aclindsa/moneygo.git
				synced 2025-11-03 18:13:27 -05:00 
			
		
		
		
	testing: Add GET, DELETE, PUT helper functions too
This commit is contained in:
		@@ -41,12 +41,12 @@ type TransactType interface {
 | 
				
			|||||||
	Read(string) error
 | 
						Read(string) error
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func create(c *http.Client, input TransactType, output TransactType, urlsuffix, key string) error {
 | 
					func create(client *http.Client, input, output TransactType, urlsuffix, key string) error {
 | 
				
			||||||
	bytes, err := json.Marshal(input)
 | 
						bytes, err := json.Marshal(input)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		return err
 | 
							return err
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	response, err := c.PostForm(server.URL+urlsuffix, url.Values{key: {string(bytes)}})
 | 
						response, err := client.PostForm(server.URL+urlsuffix, url.Values{key: {string(bytes)}})
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		return err
 | 
							return err
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
@@ -63,7 +63,7 @@ func create(c *http.Client, input TransactType, output TransactType, urlsuffix,
 | 
				
			|||||||
		return err
 | 
							return err
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	if e.ErrorId != 0 || len(e.ErrorString) != 0 {
 | 
						if e.ErrorId != 0 || len(e.ErrorString) != 0 {
 | 
				
			||||||
		return fmt.Errorf("Error when creating %s: %+v", key, e)
 | 
							return fmt.Errorf("Error when creating %s: %+v", urlsuffix, e)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	err = output.Read(string(body))
 | 
						err = output.Read(string(body))
 | 
				
			||||||
@@ -74,6 +74,92 @@ func create(c *http.Client, input TransactType, output TransactType, urlsuffix,
 | 
				
			|||||||
	return nil
 | 
						return nil
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func read(client *http.Client, output TransactType, urlsuffix, key string) error {
 | 
				
			||||||
 | 
						response, err := client.Get(server.URL + urlsuffix)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						body, err := ioutil.ReadAll(response.Body)
 | 
				
			||||||
 | 
						response.Body.Close()
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						var e handlers.Error
 | 
				
			||||||
 | 
						err = (&e).Read(string(body))
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						if e.ErrorId != 0 || len(e.ErrorString) != 0 {
 | 
				
			||||||
 | 
							return fmt.Errorf("Error when updating %s: %+v", urlsuffix, e)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						err = output.Read(string(body))
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func update(client *http.Client, input, output TransactType, urlsuffix, key string) error {
 | 
				
			||||||
 | 
						bytes, err := json.Marshal(input)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						response, err := PutForm(client, server.URL+urlsuffix, url.Values{key: {string(bytes)}})
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						body, err := ioutil.ReadAll(response.Body)
 | 
				
			||||||
 | 
						response.Body.Close()
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						var e handlers.Error
 | 
				
			||||||
 | 
						err = (&e).Read(string(body))
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						if e.ErrorId != 0 || len(e.ErrorString) != 0 {
 | 
				
			||||||
 | 
							return fmt.Errorf("Error when updating %s: %+v", urlsuffix, e)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						err = output.Read(string(body))
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func remove(client *http.Client, urlsuffix, key string) error {
 | 
				
			||||||
 | 
						response, err := Delete(client, server.URL+urlsuffix)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						body, err := ioutil.ReadAll(response.Body)
 | 
				
			||||||
 | 
						response.Body.Close()
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						var e handlers.Error
 | 
				
			||||||
 | 
						err = (&e).Read(string(body))
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						if e.ErrorId != 0 || len(e.ErrorString) != 0 {
 | 
				
			||||||
 | 
							return fmt.Errorf("Error when removing %s: %+v", urlsuffix, e)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func RunWith(t *testing.T, d *TestData, fn TestDataFunc) {
 | 
					func RunWith(t *testing.T, d *TestData, fn TestDataFunc) {
 | 
				
			||||||
	testdata, err := d.Initialize()
 | 
						testdata, err := d.Initialize()
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -3,7 +3,6 @@ package handlers_test
 | 
				
			|||||||
import (
 | 
					import (
 | 
				
			||||||
	"fmt"
 | 
						"fmt"
 | 
				
			||||||
	"github.com/aclindsa/moneygo/internal/handlers"
 | 
						"github.com/aclindsa/moneygo/internal/handlers"
 | 
				
			||||||
	"io/ioutil"
 | 
					 | 
				
			||||||
	"net/http"
 | 
						"net/http"
 | 
				
			||||||
	"net/http/cookiejar"
 | 
						"net/http/cookiejar"
 | 
				
			||||||
	"net/url"
 | 
						"net/url"
 | 
				
			||||||
@@ -28,22 +27,7 @@ func newSession(user *User) (*http.Client, error) {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
func getSession(client *http.Client) (*handlers.Session, error) {
 | 
					func getSession(client *http.Client) (*handlers.Session, error) {
 | 
				
			||||||
	var s handlers.Session
 | 
						var s handlers.Session
 | 
				
			||||||
	response, err := client.Get(server.URL + "/session/")
 | 
						read(client, &s, "/session/", "session")
 | 
				
			||||||
	if err != nil {
 | 
					 | 
				
			||||||
		return nil, err
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	body, err := ioutil.ReadAll(response.Body)
 | 
					 | 
				
			||||||
	response.Body.Close()
 | 
					 | 
				
			||||||
	if err != nil {
 | 
					 | 
				
			||||||
		return nil, err
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	err = (&s).Read(string(body))
 | 
					 | 
				
			||||||
	if err != nil {
 | 
					 | 
				
			||||||
		return nil, err
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	return &s, nil
 | 
						return &s, nil
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,12 +1,7 @@
 | 
				
			|||||||
package handlers_test
 | 
					package handlers_test
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
	"encoding/json"
 | 
					 | 
				
			||||||
	"fmt"
 | 
					 | 
				
			||||||
	"github.com/aclindsa/moneygo/internal/handlers"
 | 
					 | 
				
			||||||
	"io/ioutil"
 | 
					 | 
				
			||||||
	"net/http"
 | 
						"net/http"
 | 
				
			||||||
	"net/url"
 | 
					 | 
				
			||||||
	"strconv"
 | 
						"strconv"
 | 
				
			||||||
	"testing"
 | 
						"testing"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
@@ -17,102 +12,32 @@ func createUser(user *User) (*User, error) {
 | 
				
			|||||||
	return &u, err
 | 
						return &u, err
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func updateUser(client *http.Client, user *User) (*User, error) {
 | 
					func getUser(client *http.Client, userid int64) (*User, error) {
 | 
				
			||||||
	bytes, err := json.Marshal(user)
 | 
					 | 
				
			||||||
	if err != nil {
 | 
					 | 
				
			||||||
		return nil, err
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	response, err := PutForm(client, server.URL+"/user/"+strconv.FormatInt(user.UserId, 10), url.Values{"user": {string(bytes)}})
 | 
					 | 
				
			||||||
	if err != nil {
 | 
					 | 
				
			||||||
		return nil, err
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	body, err := ioutil.ReadAll(response.Body)
 | 
					 | 
				
			||||||
	response.Body.Close()
 | 
					 | 
				
			||||||
	if err != nil {
 | 
					 | 
				
			||||||
		return nil, err
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	var e handlers.Error
 | 
					 | 
				
			||||||
	err = (&e).Read(string(body))
 | 
					 | 
				
			||||||
	if err != nil {
 | 
					 | 
				
			||||||
		return nil, err
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	if e.ErrorId != 0 || len(e.ErrorString) != 0 {
 | 
					 | 
				
			||||||
		return nil, fmt.Errorf("Error when updating user %+v", e)
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	var u User
 | 
						var u User
 | 
				
			||||||
	err = (&u).Read(string(body))
 | 
						err := read(client, &u, "/user/"+strconv.FormatInt(userid, 10), "user")
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		return nil, err
 | 
							return nil, err
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
						return &u, nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if u.UserId == 0 || len(u.Username) == 0 {
 | 
					func updateUser(client *http.Client, user *User) (*User, error) {
 | 
				
			||||||
		return nil, fmt.Errorf("Unable to update user: %+v", user)
 | 
						var u User
 | 
				
			||||||
 | 
						err := update(client, user, &u, "/user/"+strconv.FormatInt(user.UserId, 10), "user")
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return nil, err
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					 | 
				
			||||||
	return &u, nil
 | 
						return &u, nil
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func deleteUser(client *http.Client, u *User) error {
 | 
					func deleteUser(client *http.Client, u *User) error {
 | 
				
			||||||
	response, err := Delete(client, server.URL+"/user/"+strconv.FormatInt(u.UserId, 10))
 | 
						err := remove(client, "/user/"+strconv.FormatInt(u.UserId, 10), "user")
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		return err
 | 
							return err
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					 | 
				
			||||||
	body, err := ioutil.ReadAll(response.Body)
 | 
					 | 
				
			||||||
	response.Body.Close()
 | 
					 | 
				
			||||||
	if err != nil {
 | 
					 | 
				
			||||||
		return err
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	var e handlers.Error
 | 
					 | 
				
			||||||
	err = (&e).Read(string(body))
 | 
					 | 
				
			||||||
	if err != nil {
 | 
					 | 
				
			||||||
		return err
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	if e.ErrorId != 0 || len(e.ErrorString) != 0 {
 | 
					 | 
				
			||||||
		return fmt.Errorf("Error when deleting user %+v", e)
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	return nil
 | 
						return nil
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func getUser(client *http.Client, userid int64) (*User, error) {
 | 
					 | 
				
			||||||
	response, err := client.Get(server.URL + "/user/" + strconv.FormatInt(userid, 10))
 | 
					 | 
				
			||||||
	if err != nil {
 | 
					 | 
				
			||||||
		return nil, err
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	body, err := ioutil.ReadAll(response.Body)
 | 
					 | 
				
			||||||
	response.Body.Close()
 | 
					 | 
				
			||||||
	if err != nil {
 | 
					 | 
				
			||||||
		return nil, err
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	var e handlers.Error
 | 
					 | 
				
			||||||
	err = (&e).Read(string(body))
 | 
					 | 
				
			||||||
	if err != nil {
 | 
					 | 
				
			||||||
		return nil, err
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	if e.ErrorId != 0 || len(e.ErrorString) != 0 {
 | 
					 | 
				
			||||||
		return nil, fmt.Errorf("Error when get user %+v", e)
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	var u User
 | 
					 | 
				
			||||||
	err = (&u).Read(string(body))
 | 
					 | 
				
			||||||
	if err != nil {
 | 
					 | 
				
			||||||
		return nil, err
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	if u.UserId == 0 || len(u.Username) == 0 {
 | 
					 | 
				
			||||||
		return nil, fmt.Errorf("Unable to get userid: %d", userid)
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	return &u, nil
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
func TestCreateUser(t *testing.T) {
 | 
					func TestCreateUser(t *testing.T) {
 | 
				
			||||||
	RunWith(t, &data[0], func(t *testing.T, d *TestData) {
 | 
						RunWith(t, &data[0], func(t *testing.T, d *TestData) {
 | 
				
			||||||
		if d.users[0].UserId == 0 || len(d.users[0].Username) == 0 {
 | 
							if d.users[0].UserId == 0 || len(d.users[0].Username) == 0 {
 | 
				
			||||||
@@ -134,6 +59,9 @@ func TestGetUser(t *testing.T) {
 | 
				
			|||||||
		if u.UserId != d.users[0].UserId {
 | 
							if u.UserId != d.users[0].UserId {
 | 
				
			||||||
			t.Errorf("UserId doesn't match")
 | 
								t.Errorf("UserId doesn't match")
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
							if len(u.Username) == 0 {
 | 
				
			||||||
 | 
								t.Fatalf("Empty username for: %d", d.users[0].UserId)
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
	})
 | 
						})
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -150,11 +78,14 @@ func TestUpdateUser(t *testing.T) {
 | 
				
			|||||||
		if u.UserId != user.UserId {
 | 
							if u.UserId != user.UserId {
 | 
				
			||||||
			t.Errorf("UserId doesn't match")
 | 
								t.Errorf("UserId doesn't match")
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
							if u.Username != u.Username {
 | 
				
			||||||
 | 
								t.Errorf("Username doesn't match")
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
		if u.Name != user.Name {
 | 
							if u.Name != user.Name {
 | 
				
			||||||
			t.Errorf("UserId doesn't match")
 | 
								t.Errorf("Name doesn't match")
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		if u.Email != user.Email {
 | 
							if u.Email != user.Email {
 | 
				
			||||||
			t.Errorf("UserId doesn't match")
 | 
								t.Errorf("Email doesn't match")
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	})
 | 
						})
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user