package writeas import ( "fmt" "net/http" "strings" "testing" "time" ) func TestGetCollection(t *testing.T) { wac := NewClient() res, err := wac.GetCollection("blog") if err != nil { t.Errorf("Unexpected fetch results: %+v, err: %v\n", res, err) } else { t.Logf("Collection: %+v", res) if res.Title != "write.as" { t.Errorf("Unexpected fetch results: %+v\n", res) } } } func TestGetCollectionPosts(t *testing.T) { wac := NewClient() res, err := wac.GetCollectionPosts("blog") if err != nil { t.Errorf("Unexpected fetch results: %+v, err: %v\n", res, err) } else { if len(*res) == 0 { t.Errorf("No posts returned!") } } } func TestGetUserCollections(t *testing.T) { wac := NewDevClient() _, err := wac.LogIn("demo", "demo") if err != nil { t.Fatalf("Unable to log in: %v", err) } defer wac.LogOut() res, err := wac.GetUserCollections() if err != nil { t.Errorf("Unexpected fetch results: %+v, err: %v\n", res, err) } else { t.Logf("User collections: %+v", res) if len(*res) == 0 { t.Errorf("No collections returned!") } } } func TestCreateAndDeleteCollection(t *testing.T) { wac := NewDevClient() _, err := wac.LogIn("demo", "demo") if err != nil { t.Fatalf("Unable to log in: %v", err) } defer wac.LogOut() now := time.Now().Unix() alias := fmt.Sprintf("test-collection-%v", now) c, err := wac.CreateCollection(&CollectionParams{ Alias: alias, Title: fmt.Sprintf("Test Collection %v", now), }) if err != nil { t.Fatalf("Unable to create collection %q: %v", alias, err) } p := &DeleteCollectionParams{Alias: c.Alias} if err := wac.DeleteCollection(p); err != nil { t.Fatalf("Unable to delete collection %q: %v", alias, err) } } func TestDeleteCollectionUnauthenticated(t *testing.T) { wac := NewDevClient() now := time.Now().Unix() alias := fmt.Sprintf("test-collection-does-not-exist-%v", now) p := &DeleteCollectionParams{Alias: alias} err := wac.DeleteCollection(p) if err == nil { t.Fatalf("Should not be able to delete collection %q unauthenticated.", alias) } if !strings.Contains(err.Error(), "Not authenticated") { t.Fatalf("Error message should be more informative: %v", err) } } func ExampleClient_GetCollection() { c := NewClient() coll, err := c.GetCollection("blog") if err != nil { fmt.Printf("%v", err) return } fmt.Printf("%s", coll.Title) // Output: write.as } func TestCollectPostsAnonymous(t *testing.T) { // Create a post anonymously. wac := NewDevClient() p, err := wac.CreatePost(&PostParams{ Title: "Title!", Content: "This is a post.", Font: "sans", }) if err != nil { t.Errorf("Post create failed: %v", err) return } t.Logf("Post created: %+v", p) // Log in. if _, err := wac.LogIn("demo", "demo"); err != nil { t.Fatalf("Unable to log in: %v", err) } defer wac.LogOut() now := time.Now().Unix() alias := fmt.Sprintf("test-collection-%v", now) // Create a collection. _, err = wac.CreateCollection(&CollectionParams{ Alias: alias, Title: fmt.Sprintf("Test Collection %v", now), }) if err != nil { t.Fatalf("Unable to create collection %q: %v", alias, err) } defer wac.DeleteCollection(&DeleteCollectionParams{Alias: alias}) // Move the anonymous post to this collection. res, err := wac.CollectPosts(&CollectPostParams{ Alias: alias, Posts: []*CollectPost{ { ID: p.ID, Token: p.Token, }, }, }) if err != nil { t.Fatalf("Could not collect post %q: %v", p.ID, err) } for _, cr := range res { if cr.Code != http.StatusOK { t.Errorf("Failed to move post: %v", cr.ErrorMessage) } else { t.Logf("Moved post %q", cr.Post.ID) } } }