github.com/Axway/agent-sdk@v1.1.101/pkg/apic/apiserver/models/api/v1/owner_test.go (about)

     1  package v1
     2  
     3  import (
     4  	"encoding/json"
     5  	"testing"
     6  
     7  	"github.com/stretchr/testify/assert"
     8  )
     9  
    10  func TestOwner_MarshalJSON(t *testing.T) {
    11  	o := &Owner{}
    12  	o.SetID("123")
    13  
    14  	b, err := o.MarshalJSON()
    15  	assert.Nil(t, err)
    16  
    17  	o2 := &Owner{}
    18  	err = json.Unmarshal(b, o2)
    19  	assert.Nil(t, err)
    20  	assert.Equal(t, o.Type, o2.Type)
    21  	assert.Equal(t, o.ID, o2.ID)
    22  
    23  	o = &Owner{}
    24  	o.SetType(TeamOwner)
    25  	o.SetID("123")
    26  
    27  	b, err = o.MarshalJSON()
    28  	assert.Nil(t, err)
    29  	assert.NotContains(t, string(b), "organization")
    30  
    31  	o2 = &Owner{}
    32  	err = json.Unmarshal(b, o2)
    33  	assert.Nil(t, err)
    34  	assert.Equal(t, o.Type, o2.Type)
    35  	assert.Equal(t, o.ID, o2.ID)
    36  	assert.Equal(t, o.Organization, o2.Organization)
    37  
    38  	invalid := []byte(`{"type":"fake","id":"123"}`)
    39  	err = json.Unmarshal(invalid, o2)
    40  	assert.NotNilf(t, err, "should fail when given an invalid type")
    41  
    42  	validNoOwnerType := []byte(`{"id":"123"}`)
    43  	err = json.Unmarshal(validNoOwnerType, o2)
    44  	assert.Nil(t, err)
    45  	assert.Equal(t, o.Type, TeamOwner)
    46  	assert.Equal(t, o.ID, o2.ID)
    47  
    48  	o3 := &Owner{}
    49  	o3.SetType(TeamOwner)
    50  	o3.SetID("123")
    51  	o3.Organization = Organization{ID: "321"}
    52  
    53  	b, err = o3.MarshalJSON()
    54  	assert.Nil(t, err)
    55  	assert.Contains(t, string(b), "organization")
    56  
    57  	o4 := &Owner{}
    58  	err = json.Unmarshal(b, o4)
    59  	assert.Nil(t, err)
    60  	assert.Equal(t, o3.Type, o4.Type)
    61  	assert.Equal(t, o3.ID, o4.ID)
    62  	assert.Equal(t, o3.Organization, o4.Organization)
    63  }