//go:build ignore // +build ignore // This file is a helper for those doing _manual_ testing of "terraform login" // and/or "terraform logout" and want to start up a test OAuth server in a // separate process for convenience: // // go run ./command/testdata/login-oauth-server/main.go :8080 // // This is _not_ the main way to use this oauthserver package. For automated // test code, import it as a normal Go package instead: // // import oauthserver "github.com/hashicorp/terraform/internal/command/testdata/login-oauth-server" package main import ( "fmt" "net" "net/http" "os" oauthserver "github.com/hashicorp/terraform/internal/command/testdata/login-oauth-server" ) func main() { if len(os.Args) < 2 { fmt.Fprintln(os.Stderr, "Usage: go run ./command/testdata/login-oauth-server/main.go ") os.Exit(1) } host, port, err := net.SplitHostPort(os.Args[1]) if err != nil { fmt.Fprintln(os.Stderr, "Invalid address: %s", err) os.Exit(1) } if host == "" { host = "127.0.0.1" } addr := fmt.Sprintf("%s:%s", host, port) fmt.Printf("Will listen on %s...\n", addr) fmt.Printf( configExampleFmt, fmt.Sprintf("http://%s:%s/authz", host, port), fmt.Sprintf("http://%s:%s/token", host, port), fmt.Sprintf("http://%s:%s/revoke", host, port), ) server := &http.Server{ Addr: addr, Handler: oauthserver.Handler, } err = server.ListenAndServe() fmt.Fprintln(os.Stderr, err.Error()) } const configExampleFmt = ` host "login-test.example.com" { services = { "login.v1" = { authz = %q token = %q client = "placeholder" grant_types = ["code", "password"] } "logout.v1" = %q } } `