func TestLogin(t *testing.T) { is := is.New(t) userRepositoryMock := &UserRepositoryMock{} userRepositoryMock.CheckCredentialsCall.Returns.UserType = "freelancer" userRepositoryMock.CheckCredentialsCall.Returns.User = User{ Model: Model{ ID: 1, }, FirstName: "firstname", LastName: "lastname", Password: "******", Email: "*****@*****.**", } userContext := &ApplicationContext{ UserRepository: userRepositoryMock, } r := getRequest(userContext, ` { "email": "*****@*****.**", "password": "******" } `) w := httptest.NewRecorder() Login(w, r) is.Equal(w.Code, http.StatusOK) var body map[string]interface{} is.NoErr(json.Unmarshal(w.Body.Bytes(), &body)) is.Equal(body["id"], 1) is.OK(body["token"]) is.Equal(body["type"], "freelancer") }
func TestAddFreelancerReferenceByID(t *testing.T) { is := is.New(t) referenceRepositoryMock := &ReferenceRepositoryMock{} var freelancerContext = &ApplicationContext{ ReferenceRepository: referenceRepositoryMock, } w := httptest.NewRecorder() r := getRequest(freelancerContext, ``) reference := Reference{ Title: "title", Content: "content", Media: Media{ Image: "image", Video: "video", }, } addFreelancerReferenceByID{3, &reference}.ServeHTTP(w, r) receivedReference := referenceRepositoryMock.AddReferenceCall.Receives.Reference is.Equal(receivedReference.Title, "title") is.Equal(receivedReference.Content, "content") is.Equal(receivedReference.Media.Image, "image") is.Equal(receivedReference.Media.Video, "video") is.Equal(referenceRepositoryMock.AddReferenceCall.Receives.ID, 3) }
func TestAddFreelancer(t *testing.T) { is := is.New(t) freelancerRepositoryMock := &FreelancerRepositoryMock{} freelancerContext := &ApplicationContext{ FreelancerRepository: freelancerRepositoryMock, } r := getRequest(freelancerContext, ``) w := httptest.NewRecorder() user := &User{ Model: Model{ ID: 1, }, FirstName: "first", LastName: "last", Email: "*****@*****.**", } AddFreelancer(user).ServeHTTP(w, r) is.Equal(w.Code, http.StatusOK) is.Equal(freelancerRepositoryMock.AddFreelancerCall.Receives.Freelancer.User.Model.ID, 1) is.Equal(freelancerRepositoryMock.AddFreelancerCall.Receives.Freelancer.User.FirstName, "first") is.Equal(freelancerRepositoryMock.AddFreelancerCall.Receives.Freelancer.User.LastName, "last") is.Equal(freelancerRepositoryMock.AddFreelancerCall.Receives.Freelancer.User.Email, "*****@*****.**") }
func TestIndexFreelancer(t *testing.T) { is := is.New(t) freelancerRepositoryMock := &FreelancerRepositoryMock{} freelancerRepositoryMock.GetAllFreelancersCall.Returns.Freelancers = []Freelancer{ Freelancer{ User: User{ Model: Model{ ID: 1, }, }, }, Freelancer{ User: User{ Model: Model{ ID: 2, }, }, }, } freelancerContext := &ApplicationContext{ FreelancerRepository: freelancerRepositoryMock, } r := getRequest(freelancerContext, ``) w := httptest.NewRecorder() IndexFreelancer(w, r) is.Equal(w.Code, http.StatusOK) var body []Freelancer is.NoErr(json.Unmarshal(w.Body.Bytes(), &body)) is.Equal(body[0].Model.ID, 1) is.Equal(body[1].Model.ID, 2) }
func TestWithReference(t *testing.T) { is := is.New(t) referenceRepositoryMock := &ReferenceRepositoryMock{} var freelancerContext = &ApplicationContext{ ReferenceRepository: referenceRepositoryMock, } w := httptest.NewRecorder() r := getRequest(freelancerContext, ` { "content": "content", "title": "title", "media": { "image": "image", "video": "video" } }`) next := func(reference *Reference) http.Handler { return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { is.Equal(reference.Title, "title") is.Equal(reference.Content, "content") is.Equal(reference.Media.Image, "image") is.Equal(reference.Media.Video, "video") }) } withReference{next}.ServeHTTP(w, r) }
func TestGetFreelancerByID(t *testing.T) { is := is.New(t) freelancerRepositoryMock := &FreelancerRepositoryMock{} freelancerRepositoryMock.GetFreelancerCall.Returns.Freelancer = Freelancer{ User: User{ Model: Model{ ID: 1, }, }, } freelancerContext := &ApplicationContext{ FreelancerRepository: freelancerRepositoryMock, } r := getRequest(freelancerContext, ``) w := httptest.NewRecorder() GetFreelancerByID(1).ServeHTTP(w, r) is.Equal(w.Code, http.StatusOK) is.Equal(freelancerRepositoryMock.GetFreelancerCall.Receives.ID, 1) var body Freelancer is.NoErr(json.Unmarshal(w.Body.Bytes(), &body)) is.Equal(body.Model.ID, 1) }
func TestValueEqual(t *testing.T) { is := is.New(t) v := ParseValue([]byte("something")) is.True(v.Equal("something")) is.False(v.Equal("else")) is.Equal("string", v.Type()) v = ParseValue([]byte("123")) is.Equal("float64", v.Type()) v = ParseValue([]byte("/^2.{2}$/")) is.True(v.Equal(200)) is.True(v.Equal(201)) is.False(v.Equal(404)) is.Equal("regex", v.Type()) v = ParseValue([]byte("/application/json/")) is.True(v.Equal("application/json")) is.True(v.Equal("application/json; charset=utf-8")) is.True(v.Equal("text/xml; application/json; charset=utf-8")) is.False(v.Equal("text/xml; charset=utf-8")) is.Equal("regex", v.Type()) }
func TestJobWithJob(t *testing.T) { var jobContext = &ApplicationContext{} is := is.New(t) w := httptest.NewRecorder() requestBody := `{ "name": "Name1", "details": "Details1", "summary": "Summary1", "clientId": 1 }` r := getRequest(jobContext, requestBody) next := func(job *Job) http.Handler { return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { is.Equal(job.Name, "Name1") is.Equal(job.Details, "Details1") is.Equal(job.Summary, "Summary1") is.Equal(job.ClientID, 1) }) } WithJob{next}.ServeHTTP(w, r) is.Equal(w.Code, http.StatusOK) }
func TestAppendOrder(t *testing.T) { is := is.New(t) byteData := [4][]byte{ {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 58}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x0d, 0x24}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0xfa, 0x28}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0xac, 0xad, 0x10}, } expectedIDs := [4]string{ `c41111111111111111111111111111111111111111111111111111111111111111111111111111111111111121`, `c41111111111111111111111111111111111111111111111111111111111111111111111111111111111111211`, `c41111111111111111111111111111111111111111111111111111111111111111111111111111111111112111`, `c41111111111111111111111111111111111111111111111111111111111111111111111111111111111121111`, } for k := 0; k < 4; k++ { b := byteData[k] bignum := big.NewInt(0) bignum = bignum.SetBytes(b) id := asset.ID(*bignum) is.Equal(id.String(), expectedIDs[k]) id2, err := asset.ParseID(expectedIDs[k]) is.NoErr(err) bignum2 := big.Int(*id2) b = (&bignum2).Bytes() size := len(b) for size < 64 { b = append([]byte{0}, b...) size++ } for i, bb := range b { is.Equal(bb, byteData[k][i]) } } }
func TestWithUser(t *testing.T) { is := is.New(t) userContext := &ApplicationContext{} r := getRequest(userContext, ` { "firstName": "firstname", "lastName": "lastname", "email": "*****@*****.**", "password": "******" } `) w := httptest.NewRecorder() withUser := WithUser{ next: func(u *User) http.Handler { return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { is.Equal(u.FirstName, "firstname") is.Equal(u.LastName, "lastname") is.Equal(u.Email, "*****@*****.**") is.Equal(u.Password, "password") }) }, } withUser.ServeHTTP(w, r) is.Equal(w.Code, http.StatusOK) }
func TestOnceReset(t *testing.T) { is := is.New(t) var calls int var c resync.Once c.Do(func() { calls++ }) c.Do(func() { calls++ }) c.Do(func() { calls++ }) is.Equal(calls, 1) c.Reset() c.Do(func() { calls++ }) c.Do(func() { calls++ }) c.Do(func() { calls++ }) is.Equal(calls, 2) }
func TestValueEqual(t *testing.T) { is := is.New(t) v := ParseValue([]byte("something")) is.True(v.Equal("something")) is.False(v.Equal("else")) is.Equal("string", v.Type()) v = ParseValue([]byte("123")) is.Equal("float64", v.Type()) v = ParseValue([]byte("/^2.{2}$/")) is.True(v.Equal(200)) is.True(v.Equal(201)) is.False(v.Equal(404)) is.Equal("regex", v.Type()) v = ParseValue([]byte("/application/json/")) is.True(v.Equal("application/json")) is.True(v.Equal("application/json; charset=utf-8")) is.True(v.Equal("text/xml; application/json; charset=utf-8")) is.False(v.Equal("text/xml; charset=utf-8")) is.Equal("regex", v.Type()) is.Equal(`/application/json/`, v.String()) v = ParseValue([]byte("/Silk/")) is.True(v.Equal("My name is Silk.")) is.True(v.Equal("Silk is my name.")) is.False(v.Equal("I don't contain that word!")) }
func TestIndexProject(t *testing.T) { is := is.New(t) projectRepositoryMock := &ProjectRepositoryMock{} projectRepositoryMock.GetAllProjectsCall.Returns.Projects = []Project{ Project{ Model: Model{ ID: 1, }, }, Project{ Model: Model{ ID: 2, }, }, } userContext := &ApplicationContext{ ProjectRepository: projectRepositoryMock, } r := getRequest(userContext, ``) w := httptest.NewRecorder() IndexProject(w, r) is.Equal(w.Code, http.StatusOK) var body []Project is.NoErr(json.Unmarshal(w.Body.Bytes(), &body)) is.Equal(body[0].Model.ID, 1) is.Equal(body[1].Model.ID, 2) }
func TestProjectGetByID(t *testing.T) { projectRepositoryMock := ProjectRepositoryMock{} projectRepositoryMock.GetByIDCall.Returns.Project = Project{ Model: Model{ ID: 123456789, }, Name: "Name1", Description: "Description1", ClientID: 1, IsActive: true, } var context = &ApplicationContext{ ProjectRepository: &projectRepositoryMock, } is := is.New(t) w := httptest.NewRecorder() r := getRequest(context, "") GetProjectByID(0).ServeHTTP(w, r) is.Equal(w.Code, http.StatusOK) var body Project is.NoErr(json.Unmarshal(w.Body.Bytes(), &body)) is.Equal(body.Model.ID, uint(123456789)) is.Equal(body.Name, "Name1") is.Equal(body.Description, "Description1") is.Equal(body.IsActive, true) }
func TestWithError(t *testing.T) { is := is.New(t) w := httptest.NewRecorder() r := newTestRequest() err := errors.New("something went wrong") opts := &respond.Options{ Before: func(w http.ResponseWriter, r *http.Request, status int, data interface{}) (int, interface{}) { if err, ok := data.(error); ok { return status, map[string]interface{}{"error": err.Error()} } return status, data }, } testHandler := &testHandler{ status: http.StatusInternalServerError, data: err, } handler := opts.Handler(testHandler) handler.ServeHTTP(w, r) is.Equal(http.StatusInternalServerError, w.Code) var data map[string]interface{} is.NoErr(json.Unmarshal(w.Body.Bytes(), &data)) is.Equal(data, map[string]interface{}{"error": err.Error()}) is.Equal(w.HeaderMap.Get("Content-Type"), "application/json; charset=utf-8") }
func TestFileList(t *testing.T) { is := is.New(t) s := NewShell(shellUrl) list, err := s.FileList(fmt.Sprintf("/ipfs/%s", examplesHash)) is.Nil(err) is.Equal(list.Type, "Directory") is.Equal(list.Size, 0) is.Equal(len(list.Links), 6) // TODO: document difference in sice betwen 'ipfs ls' and 'ipfs file ls -v'. additional object encoding in data block? expected := map[string]UnixLsLink{ "about": {Type: "File", Hash: "QmZTR5bcpQD7cFgTorqxZDYaew1Wqgfbd2ud9QqGPAkK2V", Name: "about", Size: 1677}, "contact": {Type: "File", Hash: "QmYCvbfNbCwFR45HiNP45rwJgvatpiW38D961L5qAhUM5Y", Name: "contact", Size: 189}, "help": {Type: "File", Hash: "QmY5heUM5qgRubMDD1og9fhCPA6QdkMp3QCwd4s7gJsyE7", Name: "help", Size: 311}, "quick-start": {Type: "File", Hash: "QmUzLxaXnM8RYCPEqLDX5foToi5aNZHqfYr285w2BKhkft", Name: "quick-start", Size: 1686}, "readme": {Type: "File", Hash: "QmPZ9gcCEpqKTo6aq61g2nXGUhM4iCL3ewB6LDXZCtioEB", Name: "readme", Size: 1091}, "security-notes": {Type: "File", Hash: "QmTumTjvcYCAvRRwQ8sDRxh8ezmrcr88YFU7iYNroGGTBZ", Name: "security-notes", Size: 1016}, } for _, l := range list.Links { el, ok := expected[l.Name] is.True(ok) is.NotNil(el) is.Equal(*l, el) } }
func TestUpdateClientByID(t *testing.T) { is := is.New(t) clientRepositoryMock := &ClientRepositoryMock{} clientRepositoryMock.GetClientCall.Returns.Client = &Client{ User: User{ Model: Model{ ID: 1, }, }, } userContext := &ApplicationContext{ ClientRepository: clientRepositoryMock, } r := getRequest(userContext, ` { "timezone": "UTC", "payment": "paypal", "industry": "feet cartoon drawings" }`) w := httptest.NewRecorder() UpdateClientByID(1).ServeHTTP(w, r) is.Equal(w.Code, http.StatusOK) is.Equal(clientRepositoryMock.GetClientCall.Receives.ID, 1) is.Equal(clientRepositoryMock.UpdateClientCall.Receives.Client.Timezone, "UTC") is.Equal(clientRepositoryMock.UpdateClientCall.Receives.Client.Payment, "paypal") is.Equal(clientRepositoryMock.UpdateClientCall.Receives.Client.Industry, "feet cartoon drawings") }
func TestEncoder(t *testing.T) { is := is.New(t) options := &respond.Options{} var encodercall map[string]interface{} options.Encoder = func(w http.ResponseWriter, r *http.Request) respond.Encoder { encodercall = map[string]interface{}{ "w": w, "r": r, } return &testEncoder{} } testHandler := &testHandler{ status: http.StatusOK, data: testdata, } handler := options.Handler(testHandler) w := httptest.NewRecorder() r := newTestRequest() handler.ServeHTTP(w, r) is.OK(encodercall) is.Equal(encodercall["w"], w) is.Equal(encodercall["r"], r) is.Equal(http.StatusOK, w.Code) is.Equal(w.Body.String(), "testEncoder") is.Equal(w.HeaderMap.Get("Content-Type"), "test/encoder") }
func TestPlaceJSON(t *testing.T) { is := is.New(t) var e meander.Place j := `{ "geometry" : { "location" : { "lat" : -33.870775, "lng" : 151.199025 } }, "icon" : "http://maps.gstatic.com/mapfiles/place_api/icons/travel_agent-71.png", "id" : "21a0b251c9b8392186142c798263e289fe45b4aa", "name" : "Rhythmboat Cruises" }` is.NoErr(json.NewDecoder(strings.NewReader(j)).Decode(&e)) is.Equal("Rhythmboat Cruises", e.Name) is.Equal("http://maps.gstatic.com/mapfiles/place_api/icons/travel_agent-71.png", e.Icon) is.Equal(-33.870775, e.Lat) is.Equal(151.199025, e.Lng) }
func TestAddClient(t *testing.T) { is := is.New(t) clientRepositoryMock := &ClientRepositoryMock{} userContext := &ApplicationContext{ ClientRepository: clientRepositoryMock, } r := getRequest(userContext, ``) w := httptest.NewRecorder() user := &User{ Model: Model{ ID: 1, }, } AddClient(user).ServeHTTP(w, r) is.Equal(w.Code, http.StatusOK) is.Equal(clientRepositoryMock.AddClientCall.Receives.Client.User.ID, 1) var body map[string]interface{} is.NoErr(json.Unmarshal(w.Body.Bytes(), &body)) userMap := body["user"].(map[string]interface{}) is.Equal(userMap["id"], 1) is.Equal(body["type"], "client") }
func TestCostString(t *testing.T) { is := is.New(t) is.Equal(meander.Cost1.String(), "$") is.Equal(meander.Cost2.String(), "$$") is.Equal(meander.Cost3.String(), "$$$") is.Equal(meander.Cost4.String(), "$$$$") is.Equal(meander.Cost5.String(), "$$$$$") }
func TestCostValues(t *testing.T) { is := is.New(t) is.Equal(int(Cost1), 1) is.Equal(int(Cost1), 2) is.Equal(int(Cost1), 3) is.Equal(int(Cost1), 4) is.Equal(int(Cost1), 5) }
func TestFindString(t *testing.T) { is := is.New(t) s := "This is a #long string written by @mat containing links to https://downlist.io/." notes, err := anno.FindString(anno.URLs, s) is.NoErr(err) is.Equal(len(notes), 1) is.Equal(notes[0].String(), "https://downlist.io/") }
func TestParseCost(t *testing.T) { is := is.New(t) is.Equal(meander.Cost1, meander.ParseCost("$")) is.Equal(meander.Cost2, meander.ParseCost("$$")) is.Equal(meander.Cost3, meander.ParseCost("$$$")) is.Equal(meander.Cost4, meander.ParseCost("$$$$")) is.Equal(meander.Cost5, meander.ParseCost("$$$$$")) }
func TestGet(t *testing.T) { is := is.New(t) for _, test := range getTests { actual, ok := m.GetOK(test.M, test.K) is.Equal(actual, test.V) is.Equal(ok, test.OK) } }
func TestLineDetail(t *testing.T) { is := is.New(t) l, err := parse.ParseLine(0, []byte(`* Key-Here: "Value"`)) is.NoErr(err) detail := l.Detail() is.Equal(detail.Key, "Key-Here") is.Equal(detail.Value.Data, "Value") }
func TestParseCost(t *testing.T) { is := is.New(t) is.Equal(Cost1, ParseCost("$")) is.Equal(Cost2, ParseCost("$$")) is.Equal(Cost3, ParseCost("$$$")) is.Equal(Cost4, ParseCost("$$$$")) is.Equal(Cost5, ParseCost("$$$$$")) }
func TestCostValues(t *testing.T) { is := is.New(t) is.Equal(int(meander.Cost1), 1) is.Equal(int(meander.Cost2), 2) is.Equal(int(meander.Cost3), 3) is.Equal(int(meander.Cost4), 4) is.Equal(int(meander.Cost5), 5) }
func TestHas(t *testing.T) { is := is.New(t) d := map[string]interface{}{"name": "Mat", "book": "Go Programming Blueprints"} is.Equal(true, m.OK(d, "name")) is.Equal(true, m.OK(d, "book")) is.Equal(false, m.OK(d, "sausages")) }
func TestParseCostRange(t *testing.T) { is := is.New(t) var l *meander.CostRange l = meander.ParseCostRange("$$...$$$") is.Equal(l.From, meander.Cost2) is.Equal(l.To, meander.Cost3) l = meander.ParseCostRange("$...$$$$$") is.Equal(l.From, meander.Cost1) is.Equal(l.To, meander.Cost5) }