github.com/1and1/oneandone-cloudserver-sdk-go@v1.4.1/usages_test.go (about)

     1  package oneandone
     2  
     3  import (
     4  	"fmt"
     5  	"testing"
     6  	"time"
     7  )
     8  
     9  // /usages tests
    10  
    11  func TestListUsages(t *testing.T) {
    12  	fmt.Println("Listing all usages...")
    13  
    14  	usages, err := api.ListUsages("LAST_7D", nil, nil)
    15  	if err != nil {
    16  		t.Errorf("ListUsages failed. Error: " + err.Error())
    17  		return
    18  	}
    19  	if len(usages.Servers) == 0 && len(usages.Images) == 0 && len(usages.LoadBalancers) == 0 &&
    20  		len(usages.PublicIPs) == 0 && len(usages.SharedStorages) == 0 {
    21  		t.Errorf("No usage found.")
    22  	}
    23  
    24  	usages, err = api.ListUsages("LAST_24H", nil, nil, 0, 0, "", "", "SERVERS.id,SERVERS.name")
    25  
    26  	if err != nil {
    27  		t.Errorf("ListUsages with parameter options failed. Error: " + err.Error())
    28  		return
    29  	}
    30  	if len(usages.Servers) == 0 {
    31  		t.Errorf("No usage found.")
    32  	}
    33  	if len(usages.Images) != 0 {
    34  		t.Errorf("Filtering a list of usages failed.")
    35  	}
    36  	if len(usages.LoadBalancers) != 0 {
    37  		t.Errorf("Filtering a list of usages failed.")
    38  	}
    39  	if len(usages.SharedStorages) != 0 {
    40  		t.Errorf("Filtering a list of usages failed.")
    41  	}
    42  	if len(usages.PublicIPs) != 0 {
    43  		t.Errorf("Filtering a list of usages failed.")
    44  	}
    45  
    46  	n := time.Now()
    47  	ed := time.Date(n.Year(), n.Month(), n.Day(), n.Hour(), n.Minute(), n.Second(), 0, time.UTC)
    48  	sd := ed.Add(-(time.Hour * 5))
    49  
    50  	usages, err = api.ListUsages("CUSTOM", &sd, &ed)
    51  
    52  	if err != nil {
    53  		t.Errorf("Getting usages in custom date range failed. Error: " + err.Error())
    54  		return
    55  	}
    56  	if len(usages.Servers) > 0 {
    57  		sd1, _ := time.Parse(time.RFC3339, usages.Servers[0].Services[0].Details[0].StartDate)
    58  		ed1, _ := time.Parse(time.RFC3339, usages.Servers[0].Services[0].Details[0].EndDate)
    59  		if sd1.Unix() > sd.Unix() || ed1.Unix() > ed.Unix() {
    60  			t.Errorf("Getting usages in custom date range failed.")
    61  		}
    62  	}
    63  	// Tests for error response
    64  	usages, err = api.ListUsages("LAST_24H", nil, nil, true)
    65  	if usages != nil || err == nil {
    66  		t.Errorf("ListUsages failed to handle incorrect argument type.")
    67  	}
    68  	usages, err = api.ListUsages("LAST_24H", &ed, &sd)
    69  	if usages != nil || err == nil {
    70  		t.Errorf("ListUsages failed to handle 'start_date > end_date' case.")
    71  	}
    72  }