Best Ginkgo code snippet using run.BuildRunCommand
run_test.go
Source:run_test.go
1package cmd2import (3 "bytes"4 "os"5 "path/filepath"6 "testing"7 "github.com/cbush06/kosher/fs"8 "github.com/sclevine/agouti"9 "github.com/cbush06/kosher/common"10 "github.com/cbush06/kosher/interfaces"11 "github.com/spf13/afero"12 "github.com/stretchr/testify/assert"13)14func TestRunCommandArgValidation(t *testing.T) {15 var workingDir, _ = os.Getwd()16 // If we're unit testing, construct a sample project in memory17 fs.MockFs = afero.NewMemMapFs()18 common.BuildTestProject(fs.MockFs)19 t.Run("0-args-0-flags", func(t *testing.T) {20 var cmdRun = buildRunCommand()21 var testFs, _ = fs.NewFs(workingDir)22 cmdRun.command.SetArgs([]string{})23 // add dummy config files24 afero.WriteReader(testFs.ConfigDir, common.SettingsFile, bytes.NewBufferString(`{"driver":"mock"}`))25 afero.WriteReader(testFs.ConfigDir, common.EnvironmentsFile, bytes.NewBufferString(`{"test":"https://www.google.com"}`))26 // Prepare the MockPage for assertions27 page := new(interfaces.MockPage)28 page.On("Size", 2000, 980).Return(nil).Once()29 page.On("Session").Return(new(interfaces.MockSession)).Once()30 // Prepare the MockDriver for assertions31 interfaces.UnitTestingMockDriver = new(interfaces.MockDriver)32 driver := interfaces.UnitTestingMockDriver33 driver.On("Start").Return(nil).Once()34 driver.On("Stop").Return(nil).Once()35 driver.On("NewPage", []agouti.Option(nil)).Return(page, nil).Once()36 driver.On("URL").Return("").Once()37 // Test our assertions38 result := cmdRun.command.Execute()39 assert.Nilf(t, result, "expected run command to succeed, but received error: %s", result)40 path, _ := os.Getwd()41 assert.Equal(t, filepath.Join(path, common.FeaturesDir), cmdRun.pathArg, "invalid features path set")42 assert.NotNil(t, cmdRun.environment, "environment should be set but is not")43 page.AssertExpectations(t)44 })45 t.Run("0-args-Bad-Environment-Flag", func(t *testing.T) {46 var cmdRun = buildRunCommand()47 var testFs, _ = fs.NewFs(workingDir)48 cmdRun.command.SetArgs([]string{"-e", "prod"})49 // add dummy config files50 afero.WriteReader(testFs.ConfigDir, common.SettingsFile, bytes.NewBufferString(`{"driver":"mock"}`))51 afero.WriteReader(testFs.ConfigDir, common.EnvironmentsFile, bytes.NewBufferString(`{"test":"https://www.google.com"}`))52 // Prepare the MockDriver for assertions53 interfaces.UnitTestingMockDriver = new(interfaces.MockDriver)54 driver := interfaces.UnitTestingMockDriver55 // Test our assertions56 result := cmdRun.command.Execute()57 assert.NotNil(t, result, "expected run command to fail due to unknown environment specified", result)58 assert.Contains(t, result.Error(), "no entry found for [prod]", "expected run command to return error describing unknown environment")59 driver.AssertNotCalled(t, "NewPage", []agouti.Option(nil))60 })61 t.Run("0-args-No-Environment", func(t *testing.T) {62 var cmdRun = buildRunCommand()63 var testFs, _ = fs.NewFs(workingDir)64 // add dummy config files65 afero.WriteReader(testFs.ConfigDir, common.SettingsFile, bytes.NewBufferString(`{"driver":"mock", "defaultEnvironment":""}`))66 // Prepare the MockDriver for assertions67 interfaces.UnitTestingMockDriver = new(interfaces.MockDriver)68 driver := interfaces.UnitTestingMockDriver69 // Test our assertions70 result := cmdRun.command.Execute()71 assert.NotNil(t, result, "expected run command to fail due to no environment specified", result)72 assert.Contains(t, result.Error(), "no environment specified", "expected run command to return error explaining no environment specified")73 driver.AssertNotCalled(t, "NewPage", []agouti.Option(nil))74 })75}...
run.go
Source:run.go
1// Copyright Jetstack Ltd. See LICENSE for details.2package app3import (4 "strconv"5 "github.com/spf13/cobra"6 "k8s.io/apiserver/pkg/server"7 "k8s.io/client-go/rest"8 "github.com/jetstack/kube-oidc-proxy/cmd/app/options"9 "github.com/jetstack/kube-oidc-proxy/pkg/probe"10 "github.com/jetstack/kube-oidc-proxy/pkg/proxy"11 "github.com/jetstack/kube-oidc-proxy/pkg/proxy/tokenreview"12 "github.com/jetstack/kube-oidc-proxy/pkg/util"13)14func NewRunCommand(stopCh <-chan struct{}) *cobra.Command {15 // Build options16 opts := options.New()17 // Build command18 cmd := buildRunCommand(stopCh, opts)19 // Add option flags to command20 opts.AddFlags(cmd)21 return cmd22}23// Proxy command24func buildRunCommand(stopCh <-chan struct{}, opts *options.Options) *cobra.Command {25 return &cobra.Command{26 Use: options.AppName,27 Long: "kube-oidc-proxy is a reverse proxy to authenticate users to Kubernetes API servers with Open ID Connect Authentication.",28 RunE: func(cmd *cobra.Command, args []string) error {29 if err := opts.Validate(cmd); err != nil {30 return err31 }32 // Here we determine to either use custom or 'in-cluster' client configuration33 var err error34 var restConfig *rest.Config35 if opts.Client.ClientFlagsChanged(cmd) {36 // One or more client flags have been set to use client flag built37 // config38 restConfig, err = opts.Client.ToRESTConfig()39 if err != nil {40 return err41 }42 } else {43 // No client flags have been set so default to in-cluster config44 restConfig, err = rest.InClusterConfig()45 if err != nil {46 return err47 }48 }49 // Initialise token reviewer if enabled50 var tokenReviewer *tokenreview.TokenReview51 if opts.App.TokenPassthrough.Enabled {52 tokenReviewer, err = tokenreview.New(restConfig, opts.App.TokenPassthrough.Audiences)53 if err != nil {54 return err55 }56 }57 // Initialise Secure Serving Config58 secureServingInfo := new(server.SecureServingInfo)59 if err := opts.SecureServing.ApplyTo(&secureServingInfo); err != nil {60 return err61 }62 proxyConfig := &proxy.Config{63 TokenReview: opts.App.TokenPassthrough.Enabled,64 DisableImpersonation: opts.App.DisableImpersonation,65 FlushInterval: opts.App.FlushInterval,66 ExternalAddress: opts.SecureServing.BindAddress.String(),67 ExtraUserHeaders: opts.App.ExtraHeaderOptions.ExtraUserHeaders,68 ExtraUserHeadersClientIPEnabled: opts.App.ExtraHeaderOptions.EnableClientIPExtraUserHeader,69 }70 // Initialise proxy with OIDC token authenticator71 p, err := proxy.New(restConfig, opts.OIDCAuthentication, opts.Audit,72 tokenReviewer, secureServingInfo, proxyConfig)73 if err != nil {74 return err75 }76 // Create a fake JWT to set up readiness probe77 fakeJWT, err := util.FakeJWT(opts.OIDCAuthentication.IssuerURL)78 if err != nil {79 return err80 }81 // Start readiness probe82 if err := probe.Run(strconv.Itoa(opts.App.ReadinessProbePort),83 fakeJWT, p.OIDCTokenAuthenticator()); err != nil {84 return err85 }86 // Run proxy87 waitCh, err := p.Run(stopCh)88 if err != nil {89 return err90 }91 <-waitCh92 if err := p.RunPreShutdownHooks(); err != nil {93 return err94 }95 return nil96 },97 }98}...
BuildRunCommand
Using AI Code Generation
1import "fmt"2import "os"3import "os/exec"4import "strings"5func main() {6 fmt.Println("args:", args)7 cmd := exec.Command("go", "run", strings.Join(args, " "))8 err := cmd.Run()9 if err != nil {10 fmt.Println("Error: ", err)11 }12}13import "fmt"14import "os"15import "os/exec"16import "strings"17func main() {18 fmt.Println("args:", args)19 cmd := exec.Command("go", "run", strings.Join(args, " "))20 err := cmd.Run()21 if err != nil {22 fmt.Println("Error: ", err)23 }24}25import "fmt"26import "os"27import "os/exec"28import "strings"29func main() {30 fmt.Println("args:", args)31 cmd := exec.Command("go", "run", strings.Join(args, " "))32 err := cmd.Run()33 if err != nil {34 fmt.Println("Error: ", err)35 }36}37import "fmt"38import "os"39import "os/exec"40import "strings"41func main() {42 fmt.Println("args:", args)43 cmd := exec.Command("go", "run", strings.Join(args, " "))44 err := cmd.Run()45 if err != nil {46 fmt.Println("Error: ", err)47 }48}
Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.
You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.
Get 100 minutes of automation test minutes FREE!!