github.com/fastly/go-fastly/v5@v5.3.0/fastly/director_test.go (about)

     1  package fastly
     2  
     3  import (
     4  	"testing"
     5  )
     6  
     7  func TestClient_Directors(t *testing.T) {
     8  	t.Parallel()
     9  
    10  	var err error
    11  	var tv *Version
    12  	record(t, "directors/version", func(c *Client) {
    13  		tv = testVersion(t, c)
    14  	})
    15  
    16  	// Create
    17  	var b *Director
    18  	record(t, "directors/create", func(c *Client) {
    19  		b, err = c.CreateDirector(&CreateDirectorInput{
    20  			ServiceID:      testServiceID,
    21  			ServiceVersion: tv.Number,
    22  			Name:           "test-director",
    23  			Quorum:         Uint(50),
    24  			Type:           DirectorTypeRandom,
    25  			Retries:        Uint(5),
    26  		})
    27  	})
    28  	if err != nil {
    29  		t.Fatal(err)
    30  	}
    31  
    32  	// Ensure deleted
    33  	defer func() {
    34  		record(t, "directors/cleanup", func(c *Client) {
    35  			c.DeleteDirector(&DeleteDirectorInput{
    36  				ServiceID:      testServiceID,
    37  				ServiceVersion: tv.Number,
    38  				Name:           "test-director",
    39  			})
    40  
    41  			c.DeleteDirector(&DeleteDirectorInput{
    42  				ServiceID:      testServiceID,
    43  				ServiceVersion: tv.Number,
    44  				Name:           "new-test-director",
    45  			})
    46  		})
    47  	}()
    48  
    49  	if b.Name != "test-director" {
    50  		t.Errorf("bad name: %q", b.Name)
    51  	}
    52  	if b.Quorum != 50 {
    53  		t.Errorf("bad quorum: %q", b.Quorum)
    54  	}
    55  	if b.Type != DirectorTypeRandom {
    56  		t.Errorf("bad type: %d", b.Type)
    57  	}
    58  	if b.Retries != 5 {
    59  		t.Errorf("bad retries: %d", b.Retries)
    60  	}
    61  
    62  	// List
    63  	var bs []*Director
    64  	record(t, "directors/list", func(c *Client) {
    65  		bs, err = c.ListDirectors(&ListDirectorsInput{
    66  			ServiceID:      testServiceID,
    67  			ServiceVersion: tv.Number,
    68  		})
    69  	})
    70  	if err != nil {
    71  		t.Fatal(err)
    72  	}
    73  	if len(bs) < 1 {
    74  		t.Errorf("bad directors: %v", bs)
    75  	}
    76  
    77  	// Get
    78  	var nb *Director
    79  	record(t, "directors/get", func(c *Client) {
    80  		nb, err = c.GetDirector(&GetDirectorInput{
    81  			ServiceID:      testServiceID,
    82  			ServiceVersion: tv.Number,
    83  			Name:           "test-director",
    84  		})
    85  	})
    86  	if err != nil {
    87  		t.Fatal(err)
    88  	}
    89  	if b.Name != nb.Name {
    90  		t.Errorf("bad name: %q (%q)", b.Name, nb.Name)
    91  	}
    92  	if b.Quorum != nb.Quorum {
    93  		t.Errorf("bad quorum: %q (%q)", b.Quorum, nb.Quorum)
    94  	}
    95  	if b.Type != nb.Type {
    96  		t.Errorf("bad type: %q (%q)", b.Type, nb.Type)
    97  	}
    98  	if b.Retries != nb.Retries {
    99  		t.Errorf("bad retries: %q (%q)", b.Retries, nb.Retries)
   100  	}
   101  
   102  	// Update
   103  	var ub *Director
   104  	record(t, "directors/update", func(c *Client) {
   105  		ub, err = c.UpdateDirector(&UpdateDirectorInput{
   106  			ServiceID:      testServiceID,
   107  			ServiceVersion: tv.Number,
   108  			Name:           "test-director",
   109  			NewName:        String("new-test-director"),
   110  			Quorum:         Uint(100),
   111  		})
   112  	})
   113  	if err != nil {
   114  		t.Fatal(err)
   115  	}
   116  	if ub.Quorum != 100 {
   117  		t.Errorf("bad quorum: %q", ub.Quorum)
   118  	}
   119  
   120  	// Delete
   121  	record(t, "directors/delete", func(c *Client) {
   122  		err = c.DeleteDirector(&DeleteDirectorInput{
   123  			ServiceID:      testServiceID,
   124  			ServiceVersion: tv.Number,
   125  			Name:           "test-director",
   126  		})
   127  	})
   128  	if err != nil {
   129  		t.Fatal(err)
   130  	}
   131  }
   132  
   133  func TestClient_ListDirectors_validation(t *testing.T) {
   134  	var err error
   135  	_, err = testClient.ListDirectors(&ListDirectorsInput{
   136  		ServiceID: "",
   137  	})
   138  	if err != ErrMissingServiceID {
   139  		t.Errorf("bad error: %s", err)
   140  	}
   141  
   142  	_, err = testClient.ListDirectors(&ListDirectorsInput{
   143  		ServiceID:      "foo",
   144  		ServiceVersion: 0,
   145  	})
   146  	if err != ErrMissingServiceVersion {
   147  		t.Errorf("bad error: %s", err)
   148  	}
   149  }
   150  
   151  func TestClient_CreateDirector_validation(t *testing.T) {
   152  	var err error
   153  	_, err = testClient.CreateDirector(&CreateDirectorInput{
   154  		ServiceID: "",
   155  	})
   156  	if err != ErrMissingServiceID {
   157  		t.Errorf("bad error: %s", err)
   158  	}
   159  
   160  	_, err = testClient.CreateDirector(&CreateDirectorInput{
   161  		ServiceID:      "foo",
   162  		ServiceVersion: 0,
   163  	})
   164  	if err != ErrMissingServiceVersion {
   165  		t.Errorf("bad error: %s", err)
   166  	}
   167  }
   168  
   169  func TestClient_GetDirector_validation(t *testing.T) {
   170  	var err error
   171  	_, err = testClient.GetDirector(&GetDirectorInput{
   172  		ServiceID: "",
   173  	})
   174  	if err != ErrMissingServiceID {
   175  		t.Errorf("bad error: %s", err)
   176  	}
   177  
   178  	_, err = testClient.GetDirector(&GetDirectorInput{
   179  		ServiceID:      "foo",
   180  		ServiceVersion: 0,
   181  	})
   182  	if err != ErrMissingServiceVersion {
   183  		t.Errorf("bad error: %s", err)
   184  	}
   185  
   186  	_, err = testClient.GetDirector(&GetDirectorInput{
   187  		ServiceID:      "foo",
   188  		ServiceVersion: 1,
   189  		Name:           "",
   190  	})
   191  	if err != ErrMissingName {
   192  		t.Errorf("bad error: %s", err)
   193  	}
   194  }
   195  
   196  func TestClient_UpdateDirector_validation(t *testing.T) {
   197  	var err error
   198  	_, err = testClient.UpdateDirector(&UpdateDirectorInput{
   199  		ServiceID: "",
   200  	})
   201  	if err != ErrMissingServiceID {
   202  		t.Errorf("bad error: %s", err)
   203  	}
   204  
   205  	_, err = testClient.UpdateDirector(&UpdateDirectorInput{
   206  		ServiceID:      "foo",
   207  		ServiceVersion: 0,
   208  	})
   209  	if err != ErrMissingServiceVersion {
   210  		t.Errorf("bad error: %s", err)
   211  	}
   212  
   213  	_, err = testClient.UpdateDirector(&UpdateDirectorInput{
   214  		ServiceID:      "foo",
   215  		ServiceVersion: 1,
   216  		Name:           "",
   217  	})
   218  	if err != ErrMissingName {
   219  		t.Errorf("bad error: %s", err)
   220  	}
   221  }
   222  
   223  func TestClient_DeleteDirector_validation(t *testing.T) {
   224  	var err error
   225  	err = testClient.DeleteDirector(&DeleteDirectorInput{
   226  		ServiceID: "",
   227  	})
   228  	if err != ErrMissingServiceID {
   229  		t.Errorf("bad error: %s", err)
   230  	}
   231  
   232  	err = testClient.DeleteDirector(&DeleteDirectorInput{
   233  		ServiceID:      "foo",
   234  		ServiceVersion: 0,
   235  	})
   236  	if err != ErrMissingServiceVersion {
   237  		t.Errorf("bad error: %s", err)
   238  	}
   239  
   240  	err = testClient.DeleteDirector(&DeleteDirectorInput{
   241  		ServiceID:      "foo",
   242  		ServiceVersion: 1,
   243  		Name:           "",
   244  	})
   245  	if err != ErrMissingName {
   246  		t.Errorf("bad error: %s", err)
   247  	}
   248  }