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

     1  package cmd
     2  
     3  import (
     4  	"bytes"
     5  	"fmt"
     6  	"net/http"
     7  	"testing"
     8  
     9  	"github.com/drycc/controller-sdk-go/api"
    10  	"github.com/drycc/workflow-cli/pkg/testutil"
    11  	"github.com/stretchr/testify/assert"
    12  )
    13  
    14  func TestTLSInfo(t *testing.T) {
    15  	t.Parallel()
    16  	cf, server, err := testutil.NewTestServerAndClient()
    17  	if err != nil {
    18  		t.Fatal(err)
    19  	}
    20  	defer server.Close()
    21  	var b bytes.Buffer
    22  	cmdr := DryccCmd{WOut: &b, ConfigFile: cf}
    23  
    24  	server.Mux.HandleFunc("/v2/apps/numenor/tls/", func(w http.ResponseWriter, _ *http.Request) {
    25  		testutil.SetHeaders(w)
    26  		fmt.Fprintf(w, `{
    27  	"uuid": "c4aed81c-d1ca-4ff1-ab89-d2151264e1a3",
    28  	"app": "numenor",
    29  	"owner": "nazgul",
    30  	"created": "2016-08-22T17:40:16Z",
    31  	"updated": "2016-08-22T17:40:16Z",
    32  	"https_enforced": true,
    33  	"certs_auto_enabled": true,
    34  	"issuer": {
    35  		"server": "https://acme.zerossl.com/v2/DV90",
    36  		"email": "drycc@drycc.cc",
    37  		"key_id": "AA",
    38  		"key_secret": "BB"
    39  	}
    40  }`)
    41  	})
    42  
    43  	err = cmdr.TLSInfo("numenor")
    44  	assert.NoError(t, err)
    45  	assert.Equal(t, b.String(), `UUID                                    OWNER     CERTS-AUTO    HTTPS-ENFORCED    EMAIL             SERVER                           
    46  c4aed81c-d1ca-4ff1-ab89-d2151264e1a3    nazgul    true          true              drycc@drycc.cc    https://acme.zerossl.com/v2/DV90    
    47  `, "output")
    48  }
    49  
    50  func TestTLSForceEnable(t *testing.T) {
    51  	t.Parallel()
    52  	cf, server, err := testutil.NewTestServerAndClient()
    53  	if err != nil {
    54  		t.Fatal(err)
    55  	}
    56  	defer server.Close()
    57  	var b bytes.Buffer
    58  	cmdr := DryccCmd{WOut: &b, ConfigFile: cf}
    59  
    60  	server.Mux.HandleFunc("/v2/apps/numenor/tls/", func(w http.ResponseWriter, _ *http.Request) {
    61  		testutil.SetHeaders(w)
    62  		b := true
    63  		a := api.NewTLS()
    64  		a.HTTPSEnforced = &b
    65  		w.WriteHeader(http.StatusCreated)
    66  		fmt.Fprintf(w, `{
    67  	"uuid": "c4aed81c-d1ca-4ff1-ab89-d2151264e1a3",
    68  	"app": "numenor",
    69  	"owner": "nazgul",
    70  	"created": "2016-08-22T17:40:16Z",
    71  	"updated": "2016-08-22T17:40:16Z",
    72  	"https_enforced": true
    73  }`)
    74  	})
    75  
    76  	err = cmdr.TLSForceEnable("numenor")
    77  	assert.NoError(t, err)
    78  	assert.Equal(t, testutil.StripProgress(b.String()), "Enabling https-only requests for numenor... done\n", "output")
    79  }
    80  
    81  func TestTLSForceDisable(t *testing.T) {
    82  	t.Parallel()
    83  	cf, server, err := testutil.NewTestServerAndClient()
    84  	if err != nil {
    85  		t.Fatal(err)
    86  	}
    87  	defer server.Close()
    88  	var b bytes.Buffer
    89  	cmdr := DryccCmd{WOut: &b, ConfigFile: cf}
    90  
    91  	server.Mux.HandleFunc("/v2/apps/numenor/tls/", func(w http.ResponseWriter, _ *http.Request) {
    92  		testutil.SetHeaders(w)
    93  		b := false
    94  		a := api.NewTLS()
    95  		a.HTTPSEnforced = &b
    96  		w.WriteHeader(http.StatusCreated)
    97  		fmt.Fprintf(w, `{
    98  	"uuid": "c4aed81c-d1ca-4ff1-ab89-d2151264e1a3",
    99  	"app": "numenor",
   100  	"owner": "nazgul",
   101  	"created": "2016-08-22T17:40:16Z",
   102  	"updated": "2016-08-22T17:40:16Z",
   103  	"https_enforced": false
   104  }`)
   105  	})
   106  
   107  	err = cmdr.TLSForceDisable("numenor")
   108  	assert.NoError(t, err)
   109  	assert.Equal(t, testutil.StripProgress(b.String()), "Disabling https-only requests for numenor... done\n", "output")
   110  }
   111  
   112  func TestTLSAutoIssuer(t *testing.T) {
   113  	t.Parallel()
   114  	cf, server, err := testutil.NewTestServerAndClient()
   115  	if err != nil {
   116  		t.Fatal(err)
   117  	}
   118  	defer server.Close()
   119  	var b bytes.Buffer
   120  	cmdr := DryccCmd{WOut: &b, ConfigFile: cf}
   121  
   122  	server.Mux.HandleFunc("/v2/apps/numenor/tls/", func(w http.ResponseWriter, _ *http.Request) {
   123  		testutil.SetHeaders(w)
   124  		issuer := api.Issuer{
   125  			Email:     "drycc@drycc.cc",
   126  			Server:    "https://acme.zerossl.com/v2/DV90",
   127  			KeyID:     "keyID",
   128  			KeySecret: "keySecret",
   129  		}
   130  		a := api.NewTLS()
   131  		a.Issuer = &issuer
   132  		w.WriteHeader(http.StatusCreated)
   133  		fmt.Fprintf(w, `{
   134  	"uuid": "c4aed81c-d1ca-4ff1-ab89-d2151264e1a3",
   135  	"app": "numenor",
   136  	"owner": "nazgul",
   137  	"created": "2016-08-22T17:40:16Z",
   138  	"updated": "2016-08-22T17:40:16Z",
   139  	"https_enforced": false,
   140  	"certs_auto_enabled": false,
   141  	"issuer": {
   142  		"email":"anonymous@cert-manager.io",
   143  		"server":"https://acme-v02.api.letsencrypt.org/directory",
   144  		"key_id":"keyID",
   145  		"key_secret":"keySecret"
   146  	}
   147  }`)
   148  	})
   149  
   150  	err = cmdr.TLSAutoIssuer("numenor", "drycc@drycc.cc", "https://acme.zerossl.com/v2/DV90", "keyID", "keySecret")
   151  	assert.NoError(t, err)
   152  	assert.Equal(t, testutil.StripProgress(b.String()), "Adding issuer requests for numenor... done\n", "output")
   153  }