本文整理汇总了Golang中github.com/speedland/wcg/gae/test.RunTestServer函数的典型用法代码示例。如果您正苦于以下问题:Golang RunTestServer函数的具体用法?Golang RunTestServer怎么用?Golang RunTestServer使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了RunTestServer函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: TestDelChannelApi
func TestDelChannelApi(t *testing.T) {
test.RunTestServer(func(ts *test.TestServer) {
assert := test.NewAssert(t)
// prepare
d := NewTvChannelDriver(TEST_APP_KEY, ts.Context, wcg.NewLogger(nil))
ent1 := &tv.TvChannel{"c1", "s1", "foo", "bar"}
ent2 := &tv.TvChannel{"c2", "s2", "hoge", "piyo"}
d.Put(d.NewKey(ent1.Key(), 0, nil), ent1)
d.Put(d.NewKey(ent2.Key(), 0, nil), ent2)
err := util.WaitFor(func() bool {
c, _ := d.NewQuery().Count()
return c == 2
}, util.DefaultWaitForTimeout)
assert.Nil(err, "Confirm TvChannel entities has been stored within a timeout window.")
p := app.Api.Path("/channels/c1/s1.json")
req := ts.Delete(p)
lib.SetApiTokenForTest(req, lib.Admin)
res := req.RouteTo(app.Routes())
assert.HttpStatus(200, res)
err = util.WaitFor(func() bool {
c, _ := d.NewQuery().Count()
return c == 1
}, util.DefaultWaitForTimeout)
assert.Nil(err, "DELETE %s Confirm TvChannel entities has been deleted via API within a timeout window.", p)
// Confirm cache invalidation
mc := memcache.NewDriver(ts.Context, wcg.NewLogger(nil))
assert.Ok(!mc.Exists(MC_KEY_CHANNELS), "DELETE %s should invalidate the cache", p)
})
}
示例2: TestRedirect
func TestRedirect(t *testing.T) {
test.RunTestServer(func(ts *test.TestServer) {
assert := test.NewAssert(t)
GAEServer.Routes().Get("/l/", Redirect)
res := ts.Get("/l/").RouteTo(GAEServer.Routes())
assert.HttpStatus(404, res)
res = ts.Get("/l/?u=foobar").RouteTo(GAEServer.Routes())
assert.HttpStatus(404, res)
res = ts.
Get(fmt.Sprintf("/l/?u=%s", url.QueryEscape("http://foobar.example.com/"))).
RouteTo(GAEServer.Routes())
assert.HttpStatus(302, res)
assert.HttpHeader("http://foobar.example.com/", res, "Location")
res = ts.
Get(fmt.Sprintf("/l/?u=%s", url.QueryEscape("http://foobar.example.com/?foobar"))).
RouteTo(GAEServer.Routes())
assert.HttpStatus(302, res)
assert.HttpHeader("http://foobar.example.com/?foobar", res, "Location")
res = ts.
Get(fmt.Sprintf("/l/?u=%s", url.QueryEscape("http://foobar.example.com/?var=val&hoge=fuga"))).
RouteTo(GAEServer.Routes())
assert.HttpStatus(302, res)
assert.HttpHeader("http://foobar.example.com/?var=val&hoge=fuga", res, "Location")
res = ts.
Get(fmt.Sprintf("/l/?u=%s", url.QueryEscape("http://foobar.example.com/?var=val&hoge=fuga#hashhoge"))).
RouteTo(GAEServer.Routes())
assert.HttpStatus(302, res)
assert.HttpHeader("http://foobar.example.com/?var=val&hoge=fuga#hashhoge", res, "Location")
})
}
示例3: TestSave
func TestSave(t *testing.T) {
test.RunTestServer(func(ts *test.TestServer) {
assert := test.NewAssert(t)
appCtx := apptest.NewAppContextFromTestServer(app.App, ts)
// TODO: fixture
// prepare
p := &blog.Post{
Title: "test post",
Content: "test content",
Tags: []string{},
IsDraft: false,
IsHidden: false,
PublishAt: time.Now(),
}
d := NewPostDriver(appCtx)
_, err := d.Save(p)
assert.Nil(err, "Save() should not return an error on creating a new post")
assert.Ok(len(p.Id) > 0, "post Id should be set after Save().")
lastUpdate := p.UpdatedAt
_, err = d.Save(p)
assert.Nil(err, "Save() should not return an error on updating an exising post")
assert.Ok(p.UpdatedAt.After(lastUpdate), "UpdatedAt should be updated afeter Save()")
})
}
示例4: TestAddKeywordApi
func TestAddKeywordApi(t *testing.T) {
test.RunTestServer(func(ts *test.TestServer) {
assert := test.NewAssert(t)
p := app.Api.Path("/keywords/")
req := ts.PostForm(p, url.Values{
"keyword": []string{"モーニング娘。'15"},
"category": []string{"モーニング娘。"},
"scope": []string{"1"},
})
lib.SetApiTokenForTest(req, lib.Admin)
var got map[string]interface{}
res := req.RouteTo(app.Routes())
res.Json(&got)
assert.HttpStatus(201, res)
assert.EqStr(
"http://localhost:8080/api/pt/keywords/モーニング娘。'15.json",
got["location"].(string),
"POST %s location",
p,
)
// Confirm cache invalidation
mc := memcache.NewDriver(ts.Context, wcg.NewLogger(nil))
assert.Ok(!mc.Exists(MC_KEY_KEYWORDS), "POST %s should invalidate the cache", p)
})
}
示例5: TestChannel_AddAndDelCrawlerConfig
func TestChannel_AddAndDelCrawlerConfig(t *testing.T) {
test.RunTestServer(func(ts *test.TestServer) {
assert := wcg.NewAssert(t)
// prepare
d := NewCrawlerConfigDriver(TEST_APP_KEY, ts.Context, wcg.NewLogger(nil))
d.Add(&tv.CrawlerConfig{
Keyword: "キーワード1",
Category: "カテゴリー1",
Scope: 1,
})
d.Add(&tv.CrawlerConfig{
Keyword: "キーワード2",
Category: "カテゴリー2",
Scope: 1,
})
err := util.WaitFor(func() bool {
c, _ := d.NewQuery().Count()
return c == 2
}, util.DefaultWaitForTimeout)
assert.Nil(err, "Confirm CrawlerConfig entities has been stored within a timeout window.")
d.Delete("キーワード1")
err = util.WaitFor(func() bool {
c, _ := d.NewQuery().Count()
return c == 1
}, util.DefaultWaitForTimeout)
assert.Nil(err, "Confirm CrawlerConfig entities has been deleted within a timeout window.")
err = d.Delete("Not Exists")
assert.Nil(err, "Delete should not return even trying to delete the unexising keyword.")
})
}
示例6: TestAddChannelApi
func TestAddChannelApi(t *testing.T) {
test.RunTestServer(func(ts *test.TestServer) {
assert := test.NewAssert(t)
p := app.Api.Path("/channels/")
req := ts.PostForm(p, url.Values{
"cid": []string{"c1"},
"sid": []string{"s1"},
"name": []string{"foo"},
"iepg_station_id": []string{"bar"},
})
lib.SetApiTokenForTest(req, lib.Admin)
var got map[string]interface{}
res := req.RouteTo(app.Routes())
res.Json(&got)
assert.HttpStatus(201, res)
assert.EqStr(
"http://localhost:8080/api/pt/channels/c1/s1.json",
got["location"].(string),
"POST %s location",
p,
)
// Confirm cache invalidation
mc := memcache.NewDriver(ts.Context, wcg.NewLogger(nil))
assert.Ok(!mc.Exists(MC_KEY_CHANNELS), "POST %s should invalidate the cache", p)
})
}
示例7: TestApiUpdateEvent
func TestApiUpdateEvent(t *testing.T) {
test.RunTestServer(func(ts *test.TestServer) {
assert := test.NewAssert(t)
appCtx := apptest.NewAppContextFromTestServer(app.TestApp().App, ts)
test.DatastoreFixture(ts.Context, "./fixtures/TestApiUpdateEvent.json", nil)
d := NewEventDriver(appCtx)
var e event.Event
p := app.TestApp().Api.Path("/events/event1.json")
req := ts.PutForm(p, url.Values{
"title": []string{"Updated Title"},
"link": []string{"http://www.up.example.com/"},
"image_link": []string{"http://www.up.example.com/img.png"},
})
lib.SetApiTokenForTest(req, lib.Admin)
res := req.RouteTo(app.TestApp().Routes())
assert.HttpStatus(200, res)
err := util.WaitFor(func() bool {
d.Load("event1", &e)
return e.Title == "Updated Title"
}, util.DefaultWaitForTimeout)
assert.Nil(err, "Confirm the show has been inserted within timeout window.")
assert.EqStr("Updated Title", e.Title, "Title")
assert.EqStr("http://www.up.example.com/", e.Link, "Link")
assert.EqStr("http://www.up.example.com/img.png", e.ImageLink, "ImageLink")
})
}
示例8: TestApiCreateEvent_201
func TestApiCreateEvent_201(t *testing.T) {
test.RunTestServer(func(ts *test.TestServer) {
assert := test.NewAssert(t)
appCtx := apptest.NewAppContextFromTestServer(app.TestApp().App, ts)
d := NewEventDriver(appCtx)
var respJson map[string]interface{}
var e event.Event
p := app.TestApp().Api.Path("/events/")
req := ts.PostForm(p, url.Values{
"title": []string{"test tour title"},
"link": []string{"http://www.example.com/"},
"image_link": []string{"http://www.example.com/img.png"},
})
lib.SetApiTokenForTest(req, lib.Admin)
res := req.RouteTo(app.TestApp().Routes())
assert.HttpStatus(201, res)
err := util.WaitFor(func() bool {
c, _ := d.NewQuery().Count()
return c == 1
}, util.DefaultWaitForTimeout)
assert.Nil(err, "Confirm the show has been inserted within timeout window.")
res.Json(&respJson)
d.Load(respJson["id"].(string), &e)
assert.EqStr("test tour title", e.Title, "Title")
assert.EqStr("http://www.example.com/", e.Link, "Link")
assert.EqStr("http://www.example.com/img.png", e.ImageLink, "ImageLink")
})
}
示例9: TestApiCreateEvent_400
func TestApiCreateEvent_400(t *testing.T) {
var genParams = func(omitName string) url.Values {
params := url.Values{
"title": []string{"test tour title"},
"link": []string{"http://www.example.com/"},
"image_link": []string{"http://www.example.com/img.png"},
}
params.Del(omitName)
return params
}
test.RunTestServer(func(ts *test.TestServer) {
assert := test.NewAssert(t)
test.DatastoreFixture(ts.Context, "./fixtures/TestApiCreateEventShow.json", nil)
p := app.TestApp().Api.Path("/events/")
var testOmitParams = []string{
"title", "link", "image_link",
}
for _, paramName := range testOmitParams {
req := ts.PostForm(p, genParams(paramName))
lib.SetApiTokenForTest(req, lib.Admin)
res := req.RouteTo(app.TestApp().Routes())
assert.HttpStatus(400, res)
}
})
}
示例10: TestApiCreateEventShow_400
func TestApiCreateEventShow_400(t *testing.T) {
var genParams = func(omitName string) url.Values {
params := url.Values{
"open_at": []string{"2015-01-02T06:00:00Z"},
"start_at": []string{"2015-01-02T07:00:00Z"},
"latitude": []string{"37.39"},
"longitude": []string{"140.38"},
"venue_id": []string{"153237058036933"},
"venue_name": []string{"郡山市民文化センター"},
"pia_link": []string{"http://pia.jp/link"},
"ya_keyword": []string{"郡山"},
}
params.Del(omitName)
return params
}
test.RunTestServer(func(ts *test.TestServer) {
assert := test.NewAssert(t)
test.DatastoreFixture(ts.Context, "./fixtures/TestApiCreateEventShow.json", nil)
p := app.TestApp().Api.Path("/events/event1/shows")
var testOmitParams = []string{
"open_at", "start_at", "latitude", "longitude", "venue_id", "venue_name", // "pia_link", "ya_keyword",
}
for _, paramName := range testOmitParams {
req := ts.PostForm(p, genParams(paramName))
lib.SetApiTokenForTest(req, lib.Admin)
res := req.RouteTo(app.TestApp().Routes())
assert.HttpStatus(400, res)
}
})
}
示例11: TestDeleteAmebloContents
func TestDeleteAmebloContents(t *testing.T) {
test.RunTestServer(func(ts *test.TestServer) {
assert := test.NewAssert(t)
appCtx := apptest.NewAppContextFromTestServer(app.TestApp().App, ts)
// prepare
amUrl := "http://ameblo.jp/eriko--imai/entry-11980960390.html"
d := NewAmebloEntryDriver(appCtx)
t1 := time.Now()
ent := &ameblo.AmebloEntry{
Title: "切り替え〜る",
Owner: "今井絵理子",
Url: amUrl,
UpdatedAt: t1,
CrawledAt: time.Time{},
Content: "",
AmLikes: 5,
AmComments: 10,
}
err := updateIndexes(appCtx, []*ameblo.AmebloEntry{ent})
assert.Nil(err, "UpdateIndexes() should not return an error on creating an ameblo entry")
p := app.TestApp().Api.Path("/ameblo/contents/今井絵理子.json")
req := ts.Delete(p)
lib.SetApiTokenForTest(req, lib.Admin)
res := req.RouteTo(app.TestApp().Routes())
assert.HttpStatus(200, res)
// confirm the content updated.
var ent1 ameblo.AmebloEntry
err = d.Get(d.NewKey(amUrl, 0, nil), &ent1)
assert.Ok(ent1.CrawledAt.Equal(time.Time{}), "DELETE %s should delete the cralwing timestamp.", p)
})
}
示例12: TestUpdateApiToken
func TestUpdateApiToken(t *testing.T) {
test.RunTestServer(func(ts *test.TestServer) {
assert := test.NewAssert(t)
appCtx := apptest.NewAppContextFromTestServer(app, ts)
// prepare
d := lib.NewApiTokenDriver(appCtx)
tok, _ := d.Issue("token1")
d.Issue("token2")
util.WaitFor(func() bool {
c, _ := d.NewQuery().Count()
return c == 2
}, util.DefaultWaitForTimeout)
var tokUrl = fmt.Sprintf("/api/admin/api_tokens/%s/", tok.Key())
// Case 400
req := ts.PutForm(tokUrl, url.Values{
"desc": []string{"updated"},
"alert_on": []string{"-20"},
})
lib.SetApiTokenForTest(req, lib.Admin)
res := req.RouteTo(app.Routes())
assert.HttpStatus(400, res)
// Case 200
req = ts.PutForm(tokUrl, url.Values{
"desc": []string{"updated"},
"alert_on": []string{"30"},
})
lib.SetApiTokenForTest(req, lib.Admin)
res = req.RouteTo(app.Routes())
assert.HttpStatus(200, res)
})
}
示例13: TestCreateAndDeleteEvent
func TestCreateAndDeleteEvent(t *testing.T) {
test.RunTestServer(func(ts *test.TestServer) {
assert := test.NewAssert(t)
appCtx := apptest.NewAppContextFromTestServer(app.TestApp().App, ts)
d := NewEventDriver(appCtx)
t, err := d.Save(&event.Event{
Title: "Test Tour",
Link: "http://example.com",
ImageLink: "http://example.com/foo.jpg",
})
assert.Nil(err, "TourDriver#Save should not return an error.")
assert.Ok(t.Id != "", "TourDriver#Save should set Id for the given tour object.")
err = util.WaitFor(func() bool {
c, _ := d.NewQuery().Count()
return c == 1
}, util.DefaultWaitForTimeout)
assert.Nil(err, "Confirm the tour has been inserted within timeout window.")
err = d.Delete(t.Id)
assert.Nil(err, "TourDriver#Delete should not return an error.")
err = util.WaitFor(func() bool {
c, _ := d.NewQuery().Count()
return c == 1
}, util.DefaultWaitForTimeout)
assert.Nil(err, "Confirm the tour has been deleted within timeout window.")
})
}
示例14: TestGetOverlaps
func TestGetOverlaps(t *testing.T) {
test.RunTestServer(func(ts *test.TestServer) {
var found []*tv.TvRecord
const timeForm = "2006/01/02 15:04:05"
assert := wcg.NewAssert(t)
d := NewTvRecordDriver(TEST_APP_KEY, ts.Context, wcg.NewLogger(nil))
base := genTestRecord()
base.StartAt, _ = time.Parse(timeForm, "2014/01/01 12:00:00")
base.EndAt, _ = time.Parse(timeForm, "2014/01/01 13:00:00")
d.Save(base)
err := util.WaitFor(func() bool {
c, _ := d.NewQuery().Count()
return c == 1
}, util.DefaultWaitForTimeout)
assert.Nil(err, "Confirm TvRecord entities has been stored within a timeout window.")
// case1: no overlaps
r := genTestRecord()
r.StartAt, _ = time.Parse(timeForm, "2014/01/01 10:50:00")
r.EndAt, _ = time.Parse(timeForm, "2014/01/01 11:10:00")
found, err = d.GetOverlaps(r)
assert.Nil(err, "TvRecordDriver#GetOverlaps should not return an error (case1)")
assert.EqInt(0, len(found), "TvRecordDriver#GetOverlaps should return empty array (case1)")
// case 2: base.end < r.start
r = genTestRecord()
r.StartAt, _ = time.Parse(timeForm, "2014/01/01 13:50:00")
r.EndAt, _ = time.Parse(timeForm, "2014/01/01 14:10:00")
found, err = d.GetOverlaps(r)
assert.Nil(err, "TvRecordDriver#GetOverlaps should not return an error (case2)")
assert.EqInt(0, len(found), "TvRecordDriver#GetOverlaps should return empty array (case2)")
// case 3: base.start < r.start < base.end
r = genTestRecord()
r.StartAt, _ = time.Parse(timeForm, "2014/01/01 11:50:00")
r.EndAt, _ = time.Parse(timeForm, "2014/01/01 12:10:00")
found, err = d.GetOverlaps(r)
assert.Nil(err, "TvRecordDriver#GetOverlaps should not return an error (case3)")
assert.EqInt(1, len(found), "TvRecordDriver#GetOverlaps should return an array with an entity (case3)")
// case 4: r.start < base.end < r.end
r = genTestRecord()
r.StartAt, _ = time.Parse(timeForm, "2014/01/01 12:50:00")
r.EndAt, _ = time.Parse(timeForm, "2014/01/01 13:10:00")
found, err = d.GetOverlaps(r)
assert.Nil(err, "TvRecordDriver#GetOverlaps should not return an error (case4)")
assert.EqInt(1, len(found), "TvRecordDriver#GetOverlaps should return an array with an entity (case4)")
// case 5: r.start < base.start < base.end < r.end
r = genTestRecord()
r.StartAt, _ = time.Parse(timeForm, "2014/01/01 12:10:00")
r.EndAt, _ = time.Parse(timeForm, "2014/01/01 12:50:00")
found, err = d.GetOverlaps(r)
assert.Nil(err, "TvRecordDriver#GetOverlaps should not return an error (case4)")
assert.EqInt(1, len(found), "TvRecordDriver#GetOverlaps should return an array with an entity (case4)")
})
}
示例15: Test_updateIndexes
func Test_updateIndexes(t *testing.T) {
test.RunTestServer(func(ts *test.TestServer) {
assert := test.NewAssert(t)
appCtx := apptest.NewAppContextFromTestServer(app.TestApp().App, ts)
d := NewAmebloEntryDriver(appCtx)
amUrl := "http://ameblo.jp/foo/bar.html"
key := d.NewKey(amUrl, 0, nil)
t1 := time.Now()
ent := &ameblo.AmebloEntry{
Title: "Test Title",
Owner: "Myblog",
Url: amUrl,
UpdatedAt: t1,
CrawledAt: t1,
Content: "crawled content",
AmLikes: 5,
AmComments: 10,
}
err := updateIndexes(appCtx, []*ameblo.AmebloEntry{ent})
assert.Nil(err, "UpdateIndexes() should not return an error on creating an ameblo entry")
err = util.WaitFor(func() bool {
var ent ameblo.AmebloEntry
d.Get(key, &ent)
return ent.Url == amUrl
}, util.DefaultWaitForTimeout)
assert.Nil(err, "Confirm entry has been inserted within timeout window.")
// test confirm not to update content and crawled at
t2 := time.Now()
newent := &ameblo.AmebloEntry{
Title: "(Updated) Test Title",
Owner: "(Updated) Myblog",
Url: "http://ameblo.jp/foo/bar.html",
UpdatedAt: t2,
CrawledAt: t2,
Content: "",
AmLikes: 10,
AmComments: 15,
}
err = updateIndexes(appCtx, []*ameblo.AmebloEntry{newent})
assert.Nil(err, "UpdateIndexes() should not return an error on creating an ameblo entry")
err = util.WaitFor(func() bool {
var updatedent ameblo.AmebloEntry
d.Get(key, &updatedent)
return updatedent.AmLikes == 10 && updatedent.AmComments == 15
}, util.DefaultWaitForTimeout)
var updatedent ameblo.AmebloEntry
d.Get(key, &updatedent)
assert.Nil(err, "AmLikes and AmComments should be updated after UpdateIndexes() without timeout")
assert.EqStr("crawled content", updatedent.Content, "Content should not be updated after UpdateIndexes()")
assert.Ok(t1.Unix() == updatedent.CrawledAt.Unix(), "CrawledAt should not be updated UpdateIndexes")
})
}