Skip to content
Snippets Groups Projects
Select Git revision
  • 1dd1c2afa44e4af3ece3078f3aabf90752b85777
  • main default protected
  • v1.298.0
  • v1.297.0
  • v1.296.0
  • v1.295.0
  • v1.294.0
  • v1.293.0
  • v1.292.0
  • v1.291.0
  • v1.290.0
  • v1.289.0
  • v1.288.0
  • v1.287.0
  • v1.286.0
  • v1.285.0
  • v1.284.0
  • v1.283.0
  • v1.282.0
  • v1.281.0
  • v1.280.0
  • v1.279.0
22 results

test_utils.go

Blame
  • test_utils.go 2.42 KiB
    package test_utils
    
    import (
    	"context"
    	"fmt"
    	"github.com/aws/aws-lambda-go/lambda"
    	"github.com/dlsniper/debugger"
    	"gitlab.bob.co.za/bob-public-utils/bobgroup-go-utils/handler_utils"
    	"gitlab.bob.co.za/bob-public-utils/bobgroup-go-utils/logs"
    	"golang.ngrok.com/ngrok"
    	"golang.ngrok.com/ngrok/config"
    	"net/http"
    	"os"
    	"os/exec"
    )
    
    func StartTestHandler(context context.Context, apiHandler lambda.Handler, sqsHandler lambda.Handler) {
    	if os.Getenv("DEBUG_PROXY") == "true" {
    		StartProxy()
    	}
    
    	http.HandleFunc("/sqs/", debugger.Middleware(func(writer http.ResponseWriter, request *http.Request) {
    		handler_utils.ServeSQSFunctions(context, sqsHandler, writer, request)
    	}, func(r *http.Request) []string {
    		return []string{
    			"path", r.RequestURI,
    		}
    	}))
    
    	http.HandleFunc("/", debugger.Middleware(func(writer http.ResponseWriter, request *http.Request) {
    		handler_utils.ServeHTTPFunctions(context, apiHandler, writer, request)
    	}, func(r *http.Request) []string {
    		return []string{
    			"path", r.RequestURI,
    		}
    	}))
    
    	// Create ngrok tunnel
    	if os.Getenv("NGROK_ENABLED") == "true" {
    		go func() {
    			// Serve ngrok tunnel
    			tun, _ := ngrok.Listen(context, config.HTTPEndpoint(), ngrok.WithAuthtoken(os.Getenv("NGROK_AUTHTOKEN")))
    			os.Setenv("OVERWRITTEN_CORE_API_URL", tun.URL())
    			fmt.Println(fmt.Sprintf("Ngrok tunnel created: %s", tun.URL()))
    			_ = http.Serve(tun, nil)
    		}()
    	}
    
    	_ = http.ListenAndServe(":3000", nil)
    }
    
    func StartProxy() {
    	// Import "Map Remote" config file to Proxyman:
    	// [{"id":"A389B009-E949-4944-8D66-95799C6923DC","name":"Bob Pay","preserveOriginalURL":true,"regex":"useWildcard","graphQLQueryName":null,"isEnabled":true,"fromURLComponent":{"path":"","query":"","host":"","scheme":"","port":""},"preserveHostHeader":true,"mapFromURL":"https:\/\/api.dev.bobpay.co.za\/*","isIncludingPaths":true,"toURLComponent":{"path":"","query":"","host":"localhost","scheme":"http","port":"3000"},"method":{"any":{}}}]
    
    	// Check if Proxyman is installed https://proxyman.io/
    	filePath, err := exec.Command("mdfind", "-name", "kMDItemFSName=='Proxyman.app'").Output()
    	if err != nil {
    		panic(err)
    	}
    
    	if len(filePath) == 0 {
    		logs.Info("Not starting Proxy")
    		return
    	}
    
    	cmd := exec.Command("open", "-gj", "-a", "/Applications/Proxyman.app")
    	err = cmd.Start()
    	if err != nil {
    		panic(err)