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 }