github.com/opentelekomcloud/gophertelekomcloud@v0.9.3/openstack/identity/v3/federation/mappings/testing/requests_test.go (about)

     1  package testing
     2  
     3  import (
     4  	"fmt"
     5  	"net/http"
     6  	"testing"
     7  
     8  	"github.com/opentelekomcloud/gophertelekomcloud/openstack/identity/v3/federation/mappings"
     9  	th "github.com/opentelekomcloud/gophertelekomcloud/testhelper"
    10  	fake "github.com/opentelekomcloud/gophertelekomcloud/testhelper/client"
    11  )
    12  
    13  func TestMappingCreateRequest(t *testing.T) {
    14  	th.SetupHTTP()
    15  	defer th.TeardownHTTP()
    16  
    17  	th.Mux.HandleFunc(mappingURI, func(w http.ResponseWriter, r *http.Request) {
    18  		th.TestMethod(t, r, "PUT")
    19  		th.TestHeader(t, r, "X-Auth-Token", fake.TokenID)
    20  		th.TestHeader(t, r, "Content-Type", "application/json")
    21  		th.TestHeader(t, r, "Accept", "application/json")
    22  		w.WriteHeader(201)
    23  		_, _ = fmt.Fprint(w, mappingResponse)
    24  	})
    25  
    26  	opts := mappings.CreateOpts{
    27  		Rules: []mappings.RuleOpts{
    28  			{
    29  				Local: []mappings.LocalRuleOpts{
    30  					{
    31  						User: &mappings.UserOpts{
    32  							Name: "{0}",
    33  						},
    34  						Groups: "[\"admin\",\"manager\"]",
    35  					},
    36  				},
    37  				Remote: []mappings.RemoteRuleOpts{
    38  					{
    39  						Type: "uid",
    40  					},
    41  				},
    42  			},
    43  		},
    44  	}
    45  	p, err := mappings.Create(fake.ServiceClient(), mappingID, opts).Extract()
    46  	th.AssertNoErr(t, err)
    47  	th.AssertEquals(t, len(opts.Rules), len(p.Rules))
    48  }
    49  
    50  func TestMappingGetRequest(t *testing.T) {
    51  	th.SetupHTTP()
    52  	defer th.TeardownHTTP()
    53  
    54  	th.Mux.HandleFunc(mappingURI, func(w http.ResponseWriter, r *http.Request) {
    55  		th.TestMethod(t, r, "GET")
    56  		th.TestHeader(t, r, "X-Auth-Token", fake.TokenID)
    57  		th.TestHeader(t, r, "Accept", "application/json")
    58  		_, _ = fmt.Fprint(w, mappingResponse)
    59  	})
    60  
    61  	p, err := mappings.Get(fake.ServiceClient(), mappingID).Extract()
    62  	th.AssertNoErr(t, err)
    63  	th.AssertEquals(t, mappingID, p.ID)
    64  }
    65  
    66  func TestMappingListRequest(t *testing.T) {
    67  	th.SetupHTTP()
    68  	defer th.TeardownHTTP()
    69  
    70  	th.Mux.HandleFunc(listURI, func(w http.ResponseWriter, r *http.Request) {
    71  		th.TestMethod(t, r, "GET")
    72  		th.TestHeader(t, r, "X-Auth-Token", fake.TokenID)
    73  
    74  		w.Header().Add("Content-Type", "application/json")
    75  		_, _ = fmt.Fprint(w, mappingListResponse)
    76  	})
    77  
    78  	pages, err := mappings.List(fake.ServiceClient()).AllPages()
    79  	th.AssertNoErr(t, err)
    80  
    81  	mappingList, err := mappings.ExtractMappings(pages)
    82  	th.AssertNoErr(t, err)
    83  	th.AssertEquals(t, 2, len(mappingList))
    84  }
    85  
    86  func TestMappingUpdateRequest(t *testing.T) {
    87  	th.SetupHTTP()
    88  	defer th.TeardownHTTP()
    89  
    90  	th.Mux.HandleFunc(mappingURI, func(w http.ResponseWriter, r *http.Request) {
    91  		th.TestMethod(t, r, "PATCH")
    92  		th.TestHeader(t, r, "X-Auth-Token", fake.TokenID)
    93  
    94  		w.Header().Add("Content-Type", "application/json")
    95  		_, _ = fmt.Fprint(w, updatedMappingResponse)
    96  	})
    97  
    98  	opts := mappings.UpdateOpts{
    99  		Rules: []mappings.RuleOpts{
   100  			{
   101  				Local: []mappings.LocalRuleOpts{
   102  					{
   103  						User: &mappings.UserOpts{
   104  							Name: "samltestid-{0}",
   105  						},
   106  					},
   107  				},
   108  				Remote: []mappings.RemoteRuleOpts{
   109  					{
   110  						Type: "uid",
   111  					},
   112  				},
   113  			},
   114  		},
   115  	}
   116  	p, err := mappings.Update(fake.ServiceClient(), mappingID, opts).Extract()
   117  
   118  	th.AssertNoErr(t, err)
   119  	th.AssertEquals(t, len(opts.Rules), len(p.Rules))
   120  }
   121  
   122  func TestMappingDeleteRequest(t *testing.T) {
   123  	th.SetupHTTP()
   124  	defer th.TeardownHTTP()
   125  
   126  	th.Mux.HandleFunc(mappingURI, func(w http.ResponseWriter, r *http.Request) {
   127  		th.TestMethod(t, r, "DELETE")
   128  		th.TestHeader(t, r, "X-Auth-Token", fake.TokenID)
   129  		w.WriteHeader(204)
   130  	})
   131  
   132  	err := mappings.Delete(fake.ServiceClient(), mappingID).ExtractErr()
   133  	th.AssertNoErr(t, err)
   134  }