Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add dynamic servers support #142

Merged
merged 20 commits into from
Jan 29, 2020
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
add tests for server api
  • Loading branch information
asobrien committed Jan 10, 2020
commit 738dcee695ce74f28b1a93f95faf9d3145c69266
36 changes: 35 additions & 1 deletion fastly/fastly_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -182,6 +182,40 @@ func deleteTestACL(t *testing.T, acl *ACL, deleteFixture string) {
}
}

func createTestPool(t *testing.T, createFixture string, serviceId string, version int, poolNameSuffix string) *Pool {

var err error
var pool *Pool

record(t, createFixture, func(client *Client) {
pool, err = client.CreatePool(&CreatePoolInput{
Service: serviceId,
Version: version,
Name: fmt.Sprintf("test_pool_%s", poolNameSuffix),
})
})
if err != nil {
t.Fatal(err)
}
return pool
}

func deleteTestPool(t *testing.T, pool *Pool, deleteFixture string) {

var err error

record(t, deleteFixture, func(client *Client) {
err = client.DeletePool(&DeletePoolInput{
Service: pool.ServiceID,
Version: pool.Version,
Name: pool.Name,
})
})
if err != nil {
t.Fatal(err)
}
}

func deleteTestService(t *testing.T, cleanupFixture string, serviceId string) {

var err error
Expand Down Expand Up @@ -285,4 +319,4 @@ P/0WahbwNjP68QYVLBeK9Sfo0XxLU0hJP4RJUZSXy9kUuZ8xhAM/6PdE04cDq71v
Zfq6/HA3phy85qyj
-----END CERTIFICATE-----
`
}
}
252 changes: 252 additions & 0 deletions fastly/server_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,252 @@
package fastly

import "testing"

func TestClient_Servers(t *testing.T) {
var err error
var tv *Version
record(t, "servers/version", func(c *Client) {
tv = testVersion(t, c)
})

testPool := createTestPool(t, "servers/create_pool", testServiceID, tv.Number, "servers22")

// Create
var server *Server
var altServer *Server
record(t, "servers/create", func(c *Client) {
server, err = c.CreateServer(&CreateServerInput{
Service: testServiceID,
Pool: testPool.ID,
Address: "127.0.0.1",
})
if err != nil {
t.Fatal(err)
}

// additional pool server for DeleteServer usage
altServer, err = c.CreateServer(&CreateServerInput{
Service: testServiceID,
Pool: testPool.ID,
Address: "altserver.example.com",
})
if err != nil {
t.Fatal(err)
}
})

// Ensure deleted
defer func() {
// Delete the pool from this version.
deleteTestPool(t, testPool, "servers/delete_pool")

record(t, "servers/cleanup", func(c *Client) {
// Expected to fail as this was explicitly deleted in the test.
c.DeleteServer(&DeleteServerInput{
Service: testServiceID,
Pool: testPool.ID,
Server: altServer.ID,
})

// Expected to fail as the API forbids deleting the last server in
// the pool. The pool is deleted from this version but it still
// exists as it may be associated with other versions.
c.DeleteServer(&DeleteServerInput{
Service: testServiceID,
Pool: testPool.ID,
Server: server.ID,
})
})
}()

if server.ServiceID != testServiceID {
t.Errorf("bad server service: %q", server.ServiceID)
}
if server.PoolID != testPool.ID {
t.Errorf("bad server pool: %q", server.PoolID)
}
if server.Address != "127.0.0.1" {
t.Errorf("bad server address: %q", server.Address)
}

// List
var ss []*Server
record(t, "servers/list", func(c *Client) {
ss, err = c.ListServers(&ListServersInput{
Service: testServiceID,
Pool: testPool.ID,
})
})
if err != nil {
t.Fatal(err)
}
if len(ss) < 1 {
t.Errorf("bad servers: %v", ss)
}

// Get
var ns *Server
record(t, "servers/get", func(c *Client) {
ns, err = c.GetServer(&GetServerInput{
Service: testServiceID,
Pool: testPool.ID,
Server: server.ID,
})
})
if server.ID != ns.ID {
t.Errorf("bad ID: %q (%q)", server.ID, ns.ID)
}
if server.Address != ns.Address {
t.Errorf("bad address: %q (%q)", server.Address, ns.Address)
}

// Update
var us *Server
record(t, "servers/update", func(c *Client) {
us, err = c.UpdateServer(&UpdateServerInput{
Service: testServiceID,
Pool: testPool.ID,
Server: server.ID,
Address: "0.0.0.0",
Weight: 50,
})
})
if err != nil {
t.Fatal(err)
}
if us.Address == server.Address {
t.Errorf("bad address: %s", us.Address)
}
if us.Weight != 50 {
t.Errorf("bad weight: %q", 50)
}

// Delete
record(t, "servers/delete", func(c *Client) {
err = c.DeleteServer(&DeleteServerInput{
Service: testServiceID,
Pool: testPool.ID,
Server: altServer.ID,
})
})
if err != nil {
t.Fatal(err)
}
}

func TestClient_ListServers_validation(t *testing.T) {
var err error
_, err = testClient.ListServers(&ListServersInput{
Service: "",
})
if err != ErrMissingService {
t.Errorf("bad error: %s", err)
}

_, err = testClient.ListServers(&ListServersInput{
Service: "foo",
Pool: "",
})
if err != ErrMissingPool {
t.Errorf("bad error: %q", err)
}
}

func TestClient_CreateServer_validation(t *testing.T) {
var err error
_, err = testClient.CreateServer(&CreateServerInput{
Service: "",
})
if err != ErrMissingService {
t.Errorf("bad error: %s", err)
}

_, err = testClient.CreateServer(&CreateServerInput{
Service: "foo",
Pool: "",
})
if err != ErrMissingPool {
t.Errorf("bad error: %q", err)
}
}

func TestClient_GetServer_validation(t *testing.T) {
var err error
_, err = testClient.GetServer(&GetServerInput{
Service: "",
})
if err != ErrMissingService {
t.Errorf("bad error: %s", err)
}

_, err = testClient.GetServer(&GetServerInput{
Service: "foo",
Pool: "",
})
if err != ErrMissingPool {
t.Errorf("bad error: %q", err)
}

_, err = testClient.GetServer(&GetServerInput{
Service: "foo",
Pool: "bar",
Server: "",
})
if err != ErrMissingServer {
t.Errorf("bad error: %q", err)
}
}

func TestClient_UpdateServer_validation(t *testing.T) {
var err error
_, err = testClient.UpdateServer(&UpdateServerInput{
Service: "",
})
if err != ErrMissingService {
t.Errorf("bad error: %s", err)
}

_, err = testClient.UpdateServer(&UpdateServerInput{
Service: "foo",
Pool: "",
})
if err != ErrMissingPool {
t.Errorf("bad error: %q", err)
}

_, err = testClient.UpdateServer(&UpdateServerInput{
Service: "foo",
Pool: "bar",
Server: "",
})
if err != ErrMissingServer {
t.Errorf("bad error: %q", err)
}
}

func TestClient_DeleteServer_validation(t *testing.T) {
var err error
err = testClient.DeleteServer(&DeleteServerInput{
Service: "",
})
if err != ErrMissingService {
t.Errorf("bad error: %s", err)
}

err = testClient.DeleteServer(&DeleteServerInput{
Service: "foo",
Pool: "",
})
if err != ErrMissingPool {
t.Errorf("bad error: %q", err)
}

err = testClient.DeleteServer(&DeleteServerInput{
Service: "foo",
Pool: "bar",
Server: "",
})
if err != ErrMissingServer {
t.Errorf("bad error: %q", err)
}
}