github.com/drycc/workflow-cli@v1.5.3-0.20240322092846-d4ee25983af9/cmd/users_test.go (about)

     1  package cmd
     2  
     3  import (
     4  	"bytes"
     5  	"fmt"
     6  	"net/http"
     7  	"testing"
     8  
     9  	"github.com/drycc/workflow-cli/pkg/testutil"
    10  	"github.com/stretchr/testify/assert"
    11  )
    12  
    13  func TestUsersList(t *testing.T) {
    14  	t.Parallel()
    15  	cf, server, err := testutil.NewTestServerAndClient()
    16  	if err != nil {
    17  		t.Fatal(err)
    18  	}
    19  	defer server.Close()
    20  	var b bytes.Buffer
    21  	cmdr := DryccCmd{WOut: &b, ConfigFile: cf}
    22  
    23  	server.Mux.HandleFunc("/v2/users/", func(w http.ResponseWriter, _ *http.Request) {
    24  		testutil.SetHeaders(w)
    25  		fmt.Fprintf(w, `{
    26  			"count": 2,
    27  			"next": null,
    28  			"previous": null,
    29  			"results": [
    30  				{
    31  					"id": 2,
    32  					"last_login": "2014-10-19T22:01:00.601Z",
    33  					"is_superuser": false,
    34  					"username": "test",
    35  					"first_name": "test",
    36  					"last_name": "testerson",
    37  					"email": "test@example.com",
    38  					"is_staff": false,
    39  					"is_active": true,
    40  					"date_joined": "2014-10-19T22:01:00.601Z",
    41  					"groups": [],
    42  					"user_permissions": []
    43  				},
    44  				{
    45  					"id": 1,
    46  					"last_login": "2014-10-19T22:01:00.601Z",
    47  					"is_superuser": true,
    48  					"username": "jkirk",
    49  					"first_name": "james",
    50  					"last_name": "kirk",
    51  					"email": "jkrik@starfleet.ufp.gov",
    52  					"is_staff": true,
    53  					"is_active": true,
    54  					"date_joined": "2014-10-19T22:01:00.601Z",
    55  					"groups": [],
    56  					"user_permissions": []
    57  				}
    58  			]
    59  		}`)
    60  	})
    61  
    62  	err = cmdr.UsersList(-1)
    63  	assert.NoError(t, err)
    64  
    65  	assert.Equal(t, b.String(), `USERNAME    EMAIL                      ADMIN    STAFF    ACTIVE    DATE-JOIN                
    66  test        test@example.com           false    false    true      2014-10-19T22:01:00.601Z    
    67  jkirk       jkrik@starfleet.ufp.gov    true     true     true      2014-10-19T22:01:00.601Z    
    68  `, "output")
    69  }
    70  
    71  func TestUsersListLimit(t *testing.T) {
    72  	t.Parallel()
    73  	cf, server, err := testutil.NewTestServerAndClient()
    74  	if err != nil {
    75  		t.Fatal(err)
    76  	}
    77  	defer server.Close()
    78  	var b bytes.Buffer
    79  	cmdr := DryccCmd{WOut: &b, ConfigFile: cf}
    80  
    81  	server.Mux.HandleFunc("/v2/users/", func(w http.ResponseWriter, _ *http.Request) {
    82  		testutil.SetHeaders(w)
    83  		fmt.Fprintf(w, `{
    84  			"count": 2,
    85  			"next": null,
    86  			"previous": null,
    87  			"results": [
    88  				{
    89  					"id": 2,
    90  					"last_login": "2014-10-19T22:01:00.601Z",
    91  					"is_superuser": false,
    92  					"username": "test",
    93  					"first_name": "test",
    94  					"last_name": "testerson",
    95  					"email": "test@example.com",
    96  					"is_staff": false,
    97  					"is_active": true,
    98  					"date_joined": "2014-10-19T22:01:00.601Z",
    99  					"groups": [],
   100  					"user_permissions": []
   101  				}
   102  			]
   103  		}`)
   104  	})
   105  
   106  	err = cmdr.UsersList(1)
   107  	assert.NoError(t, err)
   108  
   109  	assert.Equal(t, b.String(), `USERNAME    EMAIL               ADMIN    STAFF    ACTIVE    DATE-JOIN                
   110  test        test@example.com    false    false    true      2014-10-19T22:01:00.601Z    
   111  `, "output")
   112  }
   113  
   114  func TestUsersEnable(t *testing.T) {
   115  	t.Parallel()
   116  	cf, server, err := testutil.NewTestServerAndClient()
   117  	if err != nil {
   118  		t.Fatal(err)
   119  	}
   120  	defer server.Close()
   121  	var b bytes.Buffer
   122  	cmdr := DryccCmd{WOut: &b, ConfigFile: cf}
   123  
   124  	server.Mux.HandleFunc("/v2/users/test/enable/", func(w http.ResponseWriter, _ *http.Request) {
   125  		testutil.SetHeaders(w)
   126  		fmt.Fprintf(w, ``)
   127  	})
   128  
   129  	err = cmdr.UsersEnable("test")
   130  	assert.NoError(t, err)
   131  
   132  	assert.Equal(t, b.String(), `Enabling user test... done
   133  This modification is only temporary and will be reverted when the user login again.
   134  `, "output")
   135  }
   136  
   137  func TestUsersDisable(t *testing.T) {
   138  	t.Parallel()
   139  	cf, server, err := testutil.NewTestServerAndClient()
   140  	if err != nil {
   141  		t.Fatal(err)
   142  	}
   143  	defer server.Close()
   144  	var b bytes.Buffer
   145  	cmdr := DryccCmd{WOut: &b, ConfigFile: cf}
   146  
   147  	server.Mux.HandleFunc("/v2/users/test/disable/", func(w http.ResponseWriter, _ *http.Request) {
   148  		testutil.SetHeaders(w)
   149  		fmt.Fprintf(w, ``)
   150  	})
   151  
   152  	err = cmdr.UsersDisable("test")
   153  	assert.NoError(t, err)
   154  	assert.Equal(t, b.String(), `Disabling user test... done
   155  This modification is only temporary and will be reverted when the user login again.
   156  `, "output")
   157  }