github.com/akamai/AkamaiOPEN-edgegrid-golang@v1.2.2/configgtm-v1_5/datacenter_test.go (about)

     1  package configgtm
     2  
     3  import (
     4  	"testing"
     5  
     6  	"github.com/akamai/AkamaiOPEN-edgegrid-golang/jsonhooks-v1"
     7  	//edge "github.com/akamai/AkamaiOPEN-edgegrid-golang/edgegrid"
     8  	"github.com/stretchr/testify/assert"
     9  	"gopkg.in/h2non/gock.v1"
    10  
    11  	"fmt"
    12  )
    13  
    14  var GtmTestDC1 = "testDC1"
    15  var GtmTestDC2 = "testDC2"
    16  var dcMap = map[string]string{"GtmTestDC1": GtmTestDC1, "GtmTestDC2": GtmTestDC2}
    17  
    18  func instantiateDatacenter() *Datacenter {
    19  
    20  	dc := NewDatacenter()
    21  	dcData := []byte(`{
    22                                  "datacenterId" : 3131,
    23                                  "nickname" : "testDC1",
    24                                  "scorePenalty" : 0,
    25                                  "city" : null,
    26                                  "stateOrProvince" : null,
    27                                  "country" : null,
    28                                  "latitude" : null,
    29                                  "longitude" : null,
    30                                  "cloneOf" : null,
    31                                  "virtual" : true,
    32                                  "defaultLoadObject" : null,
    33                                  "continent" : null,
    34                                  "servermonitorPool" : null,
    35                                  "servermonitorLivenessCount" : null,
    36                                  "servermonitorLoadCount" : null,
    37                                  "pingInterval" : null,
    38                                  "pingPacketSize" : null,
    39                                  "cloudServerTargeting" : false,
    40                                  "cloudServerHostHeaderOverride" : false
    41                         }`)
    42  	jsonhooks.Unmarshal(dcData, dc)
    43  
    44  	return dc
    45  
    46  }
    47  
    48  // Verify ListDatacenters. Should pass, e.g. no API errors and non nil list.
    49  func TestListDatacenters(t *testing.T) {
    50  
    51  	defer gock.Off()
    52  
    53  	mock := gock.New("https://akaa-baseurl-xxxxxxxxxxx-xxxxxxxxxxxxx.luna.akamaiapis.net/config-gtm/v1/domains/" + gtmTestDomain + "/datacenters")
    54  	mock.
    55  		Get("/config-gtm/v1/domains/"+gtmTestDomain+"/datacenters").
    56  		HeaderPresent("Authorization").
    57  		Reply(200).
    58  		SetHeader("Content-Type", "application/vnd.config-gtm.v1.5+json;charset=UTF-8").
    59  		BodyString(`{
    60                          "items" : [ {
    61                                  "datacenterId" : 3131,
    62                                  "nickname" : "testDC1",
    63                                  "scorePenalty" : 0,
    64                                  "city" : null,                            
    65                                  "stateOrProvince" : null,
    66                                  "country" : null,
    67                                  "latitude" : null,
    68                                  "longitude" : null,
    69                                  "cloneOf" : null,
    70                                  "virtual" : true,
    71                                  "defaultLoadObject" : null,
    72                                  "continent" : null,
    73                                  "servermonitorPool" : null,
    74                                  "servermonitorLivenessCount" : null,
    75                                  "servermonitorLoadCount" : null,
    76                                  "pingInterval" : null,
    77                                  "pingPacketSize" : null,
    78                                  "cloudServerTargeting" : false,
    79                                  "cloudServerHostHeaderOverride" : false,
    80                                  "links" : [ {
    81                                          "rel" : "self",
    82                                          "href" : "https://akaa-baseurl-xxxxxxxxxxx-xxxxxxxxxxxxx.luna.akamaiapis.net/config-gtm/v1/domains/gtmdomtest.akadns.net/datacenters/3131"
    83                                  } ]
    84                          } ]
    85                  }`)
    86  
    87  	Init(config)
    88  
    89  	dcList, err := ListDatacenters(gtmTestDomain)
    90  	assert.NoError(t, err)
    91  	assert.NotEqual(t, dcList, nil)
    92  
    93  	if len(dcList) > 0 {
    94  		firstDC := dcList[0]
    95  		assert.Equal(t, firstDC.Nickname, GtmTestDC1)
    96  	} else {
    97  		assert.Equal(t, 0, 1, "ListDatacenters: empty list")
    98  		fmt.Println("ListDatacenters: empty list")
    99  	}
   100  
   101  }
   102  
   103  // Verify GetDatacenter. Name hardcoded. Should pass, e.g. no API errors and property returned
   104  // Depends on CreateDatacenter
   105  func TestGetDatacenter(t *testing.T) {
   106  
   107  	defer gock.Off()
   108  
   109  	mock := gock.New("https://akaa-baseurl-xxxxxxxxxxx-xxxxxxxxxxxxx.luna.akamaiapis.net/config-gtm/v1/domains/" + gtmTestDomain + "/datacenters/3131")
   110  	mock.
   111  		Get("/config-gtm/v1/domains/"+gtmTestDomain+"/datacenters/3131").
   112  		HeaderPresent("Authorization").
   113  		Reply(200).
   114  		SetHeader("Content-Type", "application/vnd.config-gtm.v1.5+json;charset=UTF-8").
   115  		BodyString(`{
   116                                  "datacenterId" : 3131,
   117                                  "nickname" : "testDC1",
   118                                  "scorePenalty" : 0,
   119                                  "city" : null,
   120                                  "stateOrProvince" : null,
   121                                  "country" : null,
   122                                  "latitude" : null,
   123                                  "longitude" : null,
   124                                  "cloneOf" : null,
   125                                  "virtual" : true,
   126                                  "defaultLoadObject" : null,
   127                                  "continent" : null,
   128                                  "servermonitorPool" : null,
   129                                  "servermonitorLivenessCount" : null,
   130                                  "servermonitorLoadCount" : null,
   131                                  "pingInterval" : null,
   132                                  "pingPacketSize" : null,
   133                                  "cloudServerTargeting" : false,
   134                                  "cloudServerHostHeaderOverride" : false,
   135                                  "links" : [ {
   136                                          "rel" : "self",
   137                                          "href" : "https://akaa-32qkzqewderdchot-d3uwbyqc4pqi2c5l.luna-dev.akamaiapis.net/config-gtm/v1/domains/gtmdomtest.akadns.net/datacenters/3131"
   138                                  } ]
   139                }`)
   140  
   141  	Init(config)
   142  
   143  	testDC, err := GetDatacenter(3131, gtmTestDomain)
   144  	assert.NoError(t, err)
   145  	assert.Equal(t, 3131, testDC.DatacenterId)
   146  
   147  }
   148  
   149  // Verify failed case for GetDatacenter. Should pass, e.g. no API errors and domain not found
   150  func TestGetBadDatacenter(t *testing.T) {
   151  
   152  	defer gock.Off()
   153  
   154  	mock := gock.New("https://akaa-baseurl-xxxxxxxxxxx-xxxxxxxxxxxxx.luna.akamaiapis.net/config-gtm/v1/domains/" + gtmTestDomain + "/datacenters/9999")
   155  	mock.
   156  		Get("/config-gtm/v1/domains/"+gtmTestDomain+"/datacenters/9999").
   157  		HeaderPresent("Authorization").
   158  		Reply(404).
   159  		SetHeader("Content-Type", "application/vnd.config-gtm.v1.5+json;charset=UTF-8").
   160  		BodyString(`{
   161                  }`)
   162  
   163  	Init(config)
   164  
   165  	_, err := GetDatacenter(9999, gtmTestDomain)
   166  	assert.Error(t, err)
   167  
   168  }
   169  
   170  // Test Create datacenter.
   171  func TestCreateDatacenter(t *testing.T) {
   172  
   173  	defer gock.Off()
   174  
   175  	mock := gock.New("https://akaa-baseurl-xxxxxxxxxxx-xxxxxxxxxxxxx.luna.akamaiapis.net/config-gtm/v1/domains/" + gtmTestDomain + "/datacenters")
   176  	mock.
   177  		Post("/config-gtm/v1/domains/"+gtmTestDomain+"/datacenters").
   178  		HeaderPresent("Authorization").
   179  		Reply(201).
   180  		SetHeader("Content-Type", "application/vnd.config-gtm.v1.5+json;charset=UTF-8").
   181  		BodyString(`{
   182                          "resource" : {
   183                                  "datacenterId" : 3131,
   184                                  "nickname" : "testDC1",
   185                                  "scorePenalty" : 0,
   186                                  "city" : null,
   187                                  "stateOrProvince" : null,
   188                                  "country" : null,
   189                                  "latitude" : null,
   190                                  "longitude" : null,
   191                                  "cloneOf" : null,
   192                                  "virtual" : true,
   193                                  "defaultLoadObject" : null,
   194                                  "continent" : null,
   195                                  "servermonitorPool" : null,
   196                                  "servermonitorLivenessCount" : null,
   197                                  "servermonitorLoadCount" : null,
   198                                  "pingInterval" : null,
   199                                  "pingPacketSize" : null,
   200                                  "cloudServerTargeting" : false,
   201                                  "cloudServerHostHeaderOverride" : false,
   202                                  "links" : [ {
   203                                          "rel" : "self",
   204                                          "href" : "https://akaa-32qkzqewderdchot-d3uwbyqc4pqi2c5l.luna-dev.akamaiapis.net/config-gtm/v1/domains/gtmdomtest.akadns.net/datacenters/3131"
   205                                  } ]
   206                          },
   207                          "status" : {
   208                                  "message" : "Change Pending",
   209                                  "changeId" : "4c7e6466-84e1-4895-bdf5-e3608d708d69",
   210                                  "propagationStatus" : "PENDING",
   211                                  "propagationStatusDate" : "2019-05-30T17:47:02.831+00:00",
   212                                  "passingValidation" : true,
   213                                  "links" : [ {
   214                                          "rel" : "self",
   215                                          "href" : "https://akaa-32qkzqewderdchot-d3uwbyqc4pqi2c5l.luna-dev.akamaiapis.net/config-gtm/v1/domains/gtmdomtest.akadns.net/status/current"
   216                                  } ]
   217                          }
   218                  }`)
   219  
   220  	testDC := NewDatacenter()
   221  	testDC.Nickname = GtmTestDC1
   222  	statresp, err := testDC.Create(gtmTestDomain)
   223  	assert.NoError(t, err)
   224  	assert.Equal(t, GtmTestDC1, statresp.Resource.Nickname)
   225  
   226  }
   227  
   228  func TestUpdateDatacenter(t *testing.T) {
   229  
   230  	defer gock.Off()
   231  
   232  	mock := gock.New("https://akaa-baseurl-xxxxxxxxxxx-xxxxxxxxxxxxx.luna.akamaiapis.net/config-gtm/v1/domains/" + gtmTestDomain + "/datacenters/3131")
   233  	mock.
   234  		Put("/config-gtm/v1/domains/"+gtmTestDomain+"/datacenters/3131").
   235  		HeaderPresent("Authorization").
   236  		Reply(200).
   237  		SetHeader("Content-Type", "application/vnd.config-gtm.v1.5+json;charset=UTF-8").
   238  		BodyString(`{
   239                          "resource" : {
   240                                  "datacenterId" : 3131,
   241                                  "nickname" : "testDC1",
   242                                  "scorePenalty" : 0,
   243                                  "city" : null,
   244                                  "stateOrProvince" : null,
   245                                  "country" : null,
   246                                  "latitude" : null,
   247                                  "longitude" : null,
   248                                  "cloneOf" : null,
   249                                  "virtual" : true,
   250                                  "defaultLoadObject" : null,
   251                                  "continent" : null,
   252                                  "servermonitorPool" : null,
   253                                  "servermonitorLivenessCount" : null,
   254                                  "servermonitorLoadCount" : null,
   255                                  "pingInterval" : null,
   256                                  "pingPacketSize" : null,
   257                                  "cloudServerTargeting" : false,
   258                                  "cloudServerHostHeaderOverride" : false,
   259                                  "links" : [ {
   260                                          "rel" : "self",
   261                                          "href" : "https://akaa-32qkzqewderdchot-d3uwbyqc4pqi2c5l.luna-dev.akamaiapis.net/config-gtm/v1/domains/gtmdomtest.akadns.net/datacenters/3131"
   262                                  } ]
   263                          },
   264                          "status" : {
   265                                  "message" : "Change Pending",
   266                                  "changeId" : "4c7e6466-84e1-4895-bdf5-e3608d708d69",
   267                                  "propagationStatus" : "PENDING",
   268                                  "propagationStatusDate" : "2019-05-30T17:47:02.831+00:00",
   269                                  "passingValidation" : true,
   270                                  "links" : [ {
   271                                          "rel" : "self",
   272                                          "href" : "https://akaa-32qkzqewderdchot-d3uwbyqc4pqi2c5l.luna-dev.akamaiapis.net/config-gtm/v1/domains/gtmdomtest.akadns.net/status/current"
   273                                  } ]
   274                          }
   275                 }`)
   276  
   277  	Init(config)
   278  
   279  	testDC := instantiateDatacenter()
   280  	stat, err := testDC.Update(gtmTestDomain)
   281  	assert.NoError(t, err)
   282  	assert.Equal(t, stat.ChangeId, "4c7e6466-84e1-4895-bdf5-e3608d708d69")
   283  
   284  }
   285  
   286  func TestDeleteDatacenter(t *testing.T) {
   287  
   288  	defer gock.Off()
   289  
   290  	mock := gock.New("https://akaa-baseurl-xxxxxxxxxxx-xxxxxxxxxxxxx.luna.akamaiapis.net/config-gtm/v1/domains/" + gtmTestDomain + "/datacenters/3131")
   291  	mock.
   292  		Delete("/config-gtm/v1/domains/"+gtmTestDomain+"/datacenters/3131").
   293  		HeaderPresent("Authorization").
   294  		Reply(200).
   295  		SetHeader("Content-Type", "application/vnd.config-gtm.v1.5+json;charset=UTF-8").
   296  		BodyString(`{
   297                          "resource" : {
   298                          },
   299                          "status" : {
   300                                  "message" : "Change Pending",
   301                                  "changeId" : "4c7e6466-84e1-4895-bdf5-e3608d708d69",
   302                                  "propagationStatus" : "PENDING",
   303                                  "propagationStatusDate" : "2019-05-30T17:47:02.831+00:00",
   304                                  "passingValidation" : true,
   305                                  "links" : [ {
   306                                          "rel" : "self",
   307                                          "href" : "https://akaa-32qkzqewderdchot-d3uwbyqc4pqi2c5l.luna-dev.akamaiapis.net/config-gtm/v1/domains/gtmdomtest.akadns.net/status/current"
   308                                  } ]
   309                          }
   310                  }`)
   311  
   312  	Init(config)
   313  
   314  	testDC := instantiateDatacenter()
   315  	_, err := testDC.Delete(gtmTestDomain)
   316  	assert.NoError(t, err)
   317  
   318  }
   319  
   320  func TestCreateMapsDefaultDatacenter(t *testing.T) {
   321  
   322  	defer gock.Off()
   323  
   324  	mock1 := gock.New("https://akaa-baseurl-xxxxxxxxxxx-xxxxxxxxxxxxx.luna.akamaiapis.net/config-gtm/v1/domains/" + gtmTestDomain + "/datacenters/5400")
   325  	mock1.
   326  		Get("/config-gtm/v1/domains/"+gtmTestDomain+"/datacenters/5400").
   327  		HeaderPresent("Authorization").
   328  		Reply(404).
   329  		SetHeader("Content-Type", "application/vnd.config-gtm.v1.5+json;charset=UTF-8")
   330  
   331  	mock := gock.New("https://akaa-baseurl-xxxxxxxxxxx-xxxxxxxxxxxxx.luna.akamaiapis.net/config-gtm/v1/domains/" + gtmTestDomain + "/datacenters/default-datacenter-for-maps")
   332  	mock.
   333  		Post("/config-gtm/v1/domains/"+gtmTestDomain+"/datacenters/default-datacenter-for-maps").
   334  		HeaderPresent("Authorization").
   335  		Reply(200).
   336  		SetHeader("Content-Type", "application/vnd.config-gtm.v1.5+json;charset=UTF-8").
   337  		BodyString(`{
   338                          "resource" : {
   339                                  "datacenterId" : 5400,
   340                                  "nickname" : "Default Datacenter",
   341                                  "scorePenalty" : 0,
   342                                  "city" : null,
   343                                  "stateOrProvince" : null,
   344                                  "country" : null,
   345                                  "latitude" : null,
   346                                  "longitude" : null,
   347                                  "cloneOf" : null,
   348                                  "virtual" : true,
   349                                  "defaultLoadObject" : null,
   350                                  "continent" : null,
   351                                  "servermonitorPool" : null,
   352                                  "servermonitorLivenessCount" : null,
   353                                  "servermonitorLoadCount" : null,
   354                                  "pingInterval" : null,
   355                                  "pingPacketSize" : null,
   356                                  "cloudServerTargeting" : false,
   357                                  "cloudServerHostHeaderOverride" : false,
   358                                  "links" : [ {
   359                                          "rel" : "self",
   360                                          "href" : "https://akaa-baseurl-xxxxxxxxxxx-xxxxxxxxxxxxx.luna.akamaiapis.net/config-gtm/v1/domains/gtmdomtest.akadns.net/datacenters/5400"
   361                                  } ]
   362                          },
   363                          "status" : {
   364                                  "message" : "Change Pending",
   365                                  "changeId" : "4c7e6466-84e1-4895-bdf5-e3608d708d69",
   366                                  "propagationStatus" : "PENDING",
   367                                  "propagationStatusDate" : "2019-05-30T17:47:02.831+00:00",
   368                                  "passingValidation" : true,
   369                                  "links" : [ {
   370                                          "rel" : "self",
   371                                          "href" : "https://akaa-baseurl-xxxxxxxxxxx-xxxxxxxxxxxxx.luna.akamaiapis.net/config-gtm/v1/domains/gtmdomtest.akadns.net/status/current"
   372                                  } ]
   373                          }
   374                  }`)
   375  
   376  	Init(config)
   377  	defDC, err := CreateMapsDefaultDatacenter(gtmTestDomain)
   378  	assert.NoError(t, err)
   379  	assert.Equal(t, defDC.DatacenterId, 5400)
   380  
   381  }