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

     1  package configgtm
     2  
     3  import (
     4  	"testing"
     5  
     6  	"github.com/akamai/AkamaiOPEN-edgegrid-golang/jsonhooks-v1"
     7  
     8  	"github.com/stretchr/testify/assert"
     9  	"gopkg.in/h2non/gock.v1"
    10  )
    11  
    12  var GtmTestGeoMap = "testGeoMap"
    13  
    14  func instantiateGeoMap() *GeoMap {
    15  
    16  	geoMap := NewGeoMap(GtmTestGeoMap)
    17  	geoMapData := []byte(`{
    18                          "assignments": [ {
    19                                  "countries": [ "GB", "IE" ],
    20                                  "datacenterId": 3133,
    21                                  "nickname": "UK and Ireland users"
    22                          } ],
    23                          "defaultDatacenter": {
    24                                  "datacenterId": 5400,
    25                                  "nickname": "Default Mapping"
    26                          },
    27                          "links": [ {
    28                                  "href": "/config-gtm/v1/domains/example.akadns.net/geographic-maps/UK%20Delivery",
    29                                  "rel": "self"
    30                          } ],
    31                          "name": "testGeoMap"
    32                }`)
    33  	jsonhooks.Unmarshal(geoMapData, geoMap)
    34  
    35  	return geoMap
    36  
    37  }
    38  
    39  // Verify ListGeoMap. Name hardcoded. Should pass, e.g. no API errors and resource returned
    40  func TestListGeoMaps(t *testing.T) {
    41  
    42  	defer gock.Off()
    43  
    44  	mock := gock.New("https://akaa-baseurl-xxxxxxxxxxx-xxxxxxxxxxxxx.luna.akamaiapis.net/config-gtm/v1/domains/" + gtmTestDomain + "/geographic-maps")
    45  	mock.
    46  		Get("/config-gtm/v1/domains/"+gtmTestDomain+"/geographic-maps").
    47  		HeaderPresent("Authorization").
    48  		Reply(200).
    49  		SetHeader("Content-Type", "application/vnd.config-gtm.v1.5+json;charset=UTF-8").
    50  		BodyString(`{
    51                      "items" : [ {
    52                          "assignments": [ {
    53                                  "countries": [ "GB", "IE" ],
    54                                  "datacenterId": 3133,
    55                                  "nickname": "UK and Ireland users"
    56                          } ],
    57                          "defaultDatacenter": {
    58                                  "datacenterId": 5400,
    59                                  "nickname": "Default Mapping"
    60                          },
    61                          "links": [ {
    62                                  "href": "/config-gtm/v1/domains/example.akadns.net/geographic-maps/UK%20Delivery",
    63                                  "rel": "self"
    64                          } ],
    65                          "name": "testGeoMap"
    66                      } ]
    67                 }`)
    68  
    69  	Init(config)
    70  
    71  	testGeoMap, err := ListGeoMaps(gtmTestDomain)
    72  	assert.NoError(t, err)
    73  	assert.IsType(t, &GeoMap{}, testGeoMap[0])
    74  	assert.Equal(t, GtmTestGeoMap, testGeoMap[0].Name)
    75  
    76  }
    77  
    78  // Verify GetGeoMap. Name hardcoded. Should pass, e.g. no API errors and resource returned
    79  func TestGetGeoMap(t *testing.T) {
    80  
    81  	defer gock.Off()
    82  
    83  	mock := gock.New("https://akaa-baseurl-xxxxxxxxxxx-xxxxxxxxxxxxx.luna.akamaiapis.net/config-gtm/v1/domains/" + gtmTestDomain + "/geographic-maps/" + GtmTestGeoMap)
    84  	mock.
    85  		Get("/config-gtm/v1/domains/"+gtmTestDomain+"/geographic-maps/"+GtmTestGeoMap).
    86  		HeaderPresent("Authorization").
    87  		Reply(200).
    88  		SetHeader("Content-Type", "application/vnd.config-gtm.v1.5+json;charset=UTF-8").
    89  		BodyString(`{
    90                          "assignments": [ {
    91                                  "countries": [ "GB", "IE" ],
    92                                  "datacenterId": 3133,
    93                                  "nickname": "UK and Ireland users"
    94                          } ],
    95                          "defaultDatacenter": {
    96                                  "datacenterId": 5400,
    97                                  "nickname": "Default Mapping"
    98                          },
    99                          "links": [ {
   100                                  "href": "/config-gtm/v1/domains/example.akadns.net/geographic-maps/UK%20Delivery",
   101                                  "rel": "self"
   102                          } ],
   103                          "name": "testGeoMap"
   104                 }`)
   105  
   106  	Init(config)
   107  
   108  	testGeoMap, err := GetGeoMap(GtmTestGeoMap, gtmTestDomain)
   109  	assert.NoError(t, err)
   110  	assert.IsType(t, &GeoMap{}, testGeoMap)
   111  	assert.Equal(t, GtmTestGeoMap, testGeoMap.Name)
   112  
   113  }
   114  
   115  // Verify failed case for GetGeoMap. Should pass, e.g. no API errors and domain not found
   116  func TestGetBadGeoMap(t *testing.T) {
   117  
   118  	badName := "somebadname"
   119  	defer gock.Off()
   120  
   121  	mock := gock.New("https://akaa-baseurl-xxxxxxxxxxx-xxxxxxxxxxxxx.luna.akamaiapis.net/config-gtm/v1/domains/" + gtmTestDomain + "/geographic-maps/" + badName)
   122  	mock.
   123  		Get("/config-gtm/v1/domains/"+gtmTestDomain+"/geographic-maps/"+badName).
   124  		HeaderPresent("Authorization").
   125  		Reply(404).
   126  		SetHeader("Content-Type", "application/vnd.config-gtm.v1.5+json;charset=UTF-8").
   127  		BodyString(`{
   128                  }`)
   129  
   130  	Init(config)
   131  
   132  	_, err := GetGeoMap(badName, gtmTestDomain)
   133  	assert.Error(t, err)
   134  
   135  }
   136  
   137  // Test Create GeoMap.
   138  func TestCreateGeoMap(t *testing.T) {
   139  
   140  	defer gock.Off()
   141  
   142  	mock := gock.New("https://akaa-baseurl-xxxxxxxxxxx-xxxxxxxxxxxxx.luna.akamaiapis.net/config-gtm/v1/domains/" + gtmTestDomain + "/geographic-maps/" + GtmTestGeoMap)
   143  	mock.
   144  		Put("/config-gtm/v1/domains/"+gtmTestDomain+"/geographic-maps/"+GtmTestGeoMap).
   145  		HeaderPresent("Authorization").
   146  		Reply(200).
   147  		SetHeader("Content-Type", "application/vnd.config-gtm.v1.5+json;charset=UTF-8").
   148  		BodyString(`{
   149                      "resource" : {
   150                          "assignments": [ {
   151                                  "countries": [ "GB", "IE" ],
   152                                  "datacenterId": 3133,
   153                                  "nickname": "UK and Ireland users"
   154                          } ],
   155                          "defaultDatacenter": {
   156                                  "datacenterId": 5400,
   157                                  "nickname": "Default Mapping"
   158                          },
   159                          "links": [ {
   160                                  "href": "/config-gtm/v1/domains/example.akadns.net/geographic-maps/UK%20Delivery",
   161                                  "rel": "self"
   162                          } ],
   163                          "name": "testGeoMap"
   164                      },
   165                      "status" : {
   166                             "changeId": "93a48b86-4fc3-4a5f-9ca2-036835034cc6",
   167                             "links": [
   168                                 {
   169                                    "href": "/config-gtm/v1/domains/example.akadns.net/status/current",
   170                                    "rel": "self"
   171                                 }
   172                             ],
   173                             "message": "Change Pending",
   174                             "passingValidation": true,
   175                             "propagationStatus": "PENDING",
   176                             "propagationStatusDate": "2014-04-15T11:30:27.000+0000"
   177                      }
   178                 }`)
   179  
   180  	Init(config)
   181  
   182  	testGeoMap := instantiateGeoMap()
   183  	statresp, err := testGeoMap.Create(gtmTestDomain)
   184  	assert.NoError(t, err)
   185  
   186  	assert.IsType(t, &GeoMap{}, statresp.Resource)
   187  	assert.Equal(t, GtmTestGeoMap, statresp.Resource.Name)
   188  
   189  }
   190  
   191  func TestUpdateGeoMap(t *testing.T) {
   192  
   193  	defer gock.Off()
   194  
   195  	mock := gock.New("https://akaa-baseurl-xxxxxxxxxxx-xxxxxxxxxxxxx.luna.akamaiapis.net/config-gtm/v1/domains/" + gtmTestDomain + "/geographic-maps/" + GtmTestGeoMap)
   196  	mock.
   197  		Put("/config-gtm/v1/domains/"+gtmTestDomain+"/geographic-maps/"+GtmTestGeoMap).
   198  		HeaderPresent("Authorization").
   199  		Reply(200).
   200  		SetHeader("Content-Type", "application/vnd.config-gtm.v1.5+json;charset=UTF-8").
   201  		BodyString(`{
   202                      "resource" : {
   203                          "assignments": [ {
   204                                  "countries": [ "GB", "IE" ],
   205                                  "datacenterId": 3133,
   206                                  "nickname": "UK and Ireland users"
   207                          } ],
   208                          "defaultDatacenter": {
   209                                  "datacenterId": 5400,
   210                                  "nickname": "Default Mapping"
   211                          },
   212                          "links": [ {
   213                                  "href": "/config-gtm/v1/domains/example.akadns.net/geographic-maps/UK%20Delivery",
   214                                  "rel": "self"
   215                          } ],
   216                          "name": "testGeoMap"
   217                      },
   218                      "status" : {
   219                             "changeId": "93a48b86-4fc3-4a5f-9ca2-036835034cc6",
   220                             "links": [
   221                                 {
   222                                    "href": "/config-gtm/v1/domains/example.akadns.net/status/current",
   223                                    "rel": "self"
   224                                 }
   225                             ],
   226                             "message": "Change Pending",
   227                             "passingValidation": true,
   228                             "propagationStatus": "PENDING",
   229                             "propagationStatusDate": "2014-04-15T11:30:27.000+0000"
   230                      }
   231                 }`)
   232  
   233  	Init(config)
   234  
   235  	testGeoMap := instantiateGeoMap()
   236  	_, err := testGeoMap.Update(gtmTestDomain)
   237  	assert.NoError(t, err)
   238  
   239  }
   240  
   241  func TestDeleteGeoMap(t *testing.T) {
   242  
   243  	defer gock.Off()
   244  
   245  	mock := gock.New("https://akaa-baseurl-xxxxxxxxxxx-xxxxxxxxxxxxx.luna.akamaiapis.net/config-gtm/v1/domains/" + gtmTestDomain + "/geographic-maps/" + GtmTestGeoMap)
   246  	mock.
   247  		Delete("/config-gtm/v1/domains/"+gtmTestDomain+"/geographic-maps/"+GtmTestGeoMap).
   248  		HeaderPresent("Authorization").
   249  		Reply(200).
   250  		SetHeader("Content-Type", "application/vnd.config-gtm.v1.5+json;charset=UTF-8").
   251  		BodyString(`{
   252                      "resource" : {
   253                      },
   254                      "status" : {
   255                             "changeId": "93a48b86-4fc3-4a5f-9ca2-036835034cc6",
   256                             "links": [
   257                                 {
   258                                    "href": "/config-gtm/v1/domains/example.akadns.net/status/current",
   259                                    "rel": "self"
   260                                 }
   261                             ],
   262                             "message": "Change Pending",
   263                             "passingValidation": true,
   264                             "propagationStatus": "PENDING",
   265                             "propagationStatusDate": "2014-04-15T11:30:27.000+0000"
   266                      }
   267                 }`)
   268  
   269  	Init(config)
   270  
   271  	getGeoMap := instantiateGeoMap()
   272  	stat, err := getGeoMap.Delete(gtmTestDomain)
   273  	assert.NoError(t, err)
   274  	assert.Equal(t, "93a48b86-4fc3-4a5f-9ca2-036835034cc6", stat.ChangeId)
   275  
   276  }