github.com/bitcubate/cryptojournal@v1.2.5-0.20171102134152-f578b3d788ab/src/lib/resource/resource_test.go (about)

     1  package resource
     2  
     3  import (
     4  	"testing"
     5  )
     6  
     7  var r = Base{ID: 99, TableName: "images", KeyName: "id"}
     8  
     9  func TestValidate(t *testing.T) {
    10  
    11  	// TEST NIL VALUES in db
    12  	// most validation is to ensure nil db columns return zero values rather than panic
    13  
    14  	// Test against nil bool
    15  	if ValidateBoolean(nil) != false {
    16  		t.Fatalf("Validate does not match expected:%v got:%v", false, ValidateBoolean(nil))
    17  	}
    18  
    19  	// Test against nil float
    20  	if ValidateFloat(nil) != 0 {
    21  		t.Fatalf("Validate does not match expected:%v got:%v", 0, ValidateFloat(nil))
    22  	}
    23  
    24  	// Test against nil int64
    25  	if ValidateInt(nil) != 0 {
    26  		t.Fatalf("Validate does not match expected:%v got:%v", 0, ValidateInt(nil))
    27  	}
    28  
    29  	// Test against nil time
    30  	if !ValidateTime(nil).IsZero() {
    31  		t.Fatalf("Validate does not match expected:%v got:%v", "zero time", ValidateTime(nil))
    32  	}
    33  
    34  	// Test against nil string
    35  	if ValidateString(nil) != "" {
    36  		t.Fatalf("Validate does not match expected:%v got:%v", "", ValidateString(nil))
    37  	}
    38  
    39  	// TEST VALUES
    40  
    41  	if ValidateBoolean(true) != true { // yes, I know!
    42  		t.Fatalf("Validate does not match expected:%v got:%v", true, ValidateBoolean(true))
    43  	}
    44  
    45  	// Test against range of ints as sanity check on casts
    46  	ints := []int{99, 5, 0, 1, 1110011, -1200}
    47  	for _, i := range ints {
    48  		if ValidateInt(i) != int64(i) {
    49  			t.Fatalf("Validate float does not match expected:%v got:%v", i, ValidateInt(i))
    50  		}
    51  	}
    52  
    53  	// Test against range of floats as sanity check
    54  	floats := []float64{5.0, 0.0, 0.0001, -0.40}
    55  	for _, f := range floats {
    56  		if ValidateFloat(f) != f {
    57  			t.Fatalf("Validate float does not match expected:%v got:%v", f, ValidateFloat(f))
    58  		}
    59  	}
    60  	// Check success of cast of int column values to floats
    61  	for _, f := range ints {
    62  		if ValidateFloat(f) != float64(f) {
    63  			t.Fatalf("Validate float does not match expected:%v got:%v", f, ValidateFloat(f))
    64  		}
    65  	}
    66  
    67  }
    68  
    69  // TestValidateParams tests we remove params correctly when not authorised
    70  // the default set is an empty set
    71  func TestValidateParams(t *testing.T) {
    72  	allowed := []string{"name"}
    73  	params := map[string]string{"name_asdfasdf_name": "asdf", "name": "foo", "bar": "baz"}
    74  	params = r.ValidateParams(params, allowed)
    75  	if len(params) > 1 {
    76  		t.Fatalf("Validate params does not match expected:%v got:%v", "[]", params)
    77  	}
    78  }
    79  
    80  // We should probably have an in-memory adapter for query which lets us test creation etc easily
    81  
    82  // TestURLs tests the url functions in urls.go
    83  func TestURLs(t *testing.T) {
    84  
    85  	expected := "/images"
    86  	if r.IndexURL() != expected {
    87  		t.Fatalf("URL does not match expected:%s got:%s", expected, r.IndexURL())
    88  	}
    89  	expected = "/images/create"
    90  	if r.CreateURL() != expected {
    91  		t.Fatalf("URL does not match expected:%s got:%s", expected, r.CreateURL())
    92  	}
    93  	expected = "/images/99/update"
    94  	if r.UpdateURL() != expected {
    95  		t.Fatalf("URL does not match expected:%s got:%s", expected, r.UpdateURL())
    96  	}
    97  	expected = "/images/99"
    98  	if r.ShowURL() != expected {
    99  		t.Fatalf("URL does not match expected:%s got:%s", expected, r.ShowURL())
   100  	}
   101  	expected = "/images/99/destroy"
   102  	if r.DestroyURL() != expected {
   103  		t.Fatalf("URL does not match expected:%s got:%s", expected, r.DestroyURL())
   104  	}
   105  
   106  }