diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/server_test.go | 48 |
1 files changed, 47 insertions, 1 deletions
diff --git a/src/server_test.go b/src/server_test.go index 54c7809..3a19d4d 100644 --- a/src/server_test.go +++ b/src/server_test.go @@ -1,6 +1,8 @@ package eduvpn import ( + "errors" + "fmt" "testing" "net/http" "crypto/tls" @@ -37,7 +39,7 @@ func StateCallback(t *testing.T, oldState string, newState string, data string) } } -func TestServer(t *testing.T) { +func Test_server(t *testing.T) { state := GetVPNState() // Do not verify because during testing, the cert is self-signed @@ -52,3 +54,47 @@ func TestServer(t *testing.T) { t.Errorf("Connect error: %v", configErr) } } + +func test_connect_oauth_parameter(t* testing.T, parameters URLParameters, expectedErr interface{}) { + state := &VPNState{} + + // Do not verify because during testing, the cert is self-signed + http.DefaultTransport.(*http.Transport).TLSClientConfig = &tls.Config{InsecureSkipVerify: true} + + state.Register("org.eduvpn.app.linux", "configsnologin", func(old string, new string, data string) { + if new == "OAuthInitialized" { + baseURL := "http://127.0.0.1:8000/callback" + url, err := HTTPConstructURL(baseURL, parameters) + if err != nil { + t.Errorf("Error: Constructing url %s with parameters %s", baseURL, fmt.Sprint(parameters)) + } + _, _ = http.Get(url) + } + }) + _, configErr := state.Connect("https://eduvpnserver") + + if !errors.As(configErr, expectedErr) { + t.Errorf("error %T = %v, wantErr %T", configErr, configErr, expectedErr) + } +} + +func Test_connect_oauth_parameters(t* testing.T) { + + var ( + failedCallbackParameterError *OAuthFailedCallbackParameterError + failedCallbackStateMatchError *OAuthFailedCallbackStateMatchError + ) + + tests := []struct { + expectedErr interface{} + parameters URLParameters + }{ + {&failedCallbackParameterError, URLParameters{}}, + {&failedCallbackParameterError, URLParameters{"code": "42"}}, + {&failedCallbackStateMatchError, URLParameters{"code": "42", "state": "21",}}, + } + + for _, test := range tests { + test_connect_oauth_parameter(t, test.parameters, test.expectedErr) + } +} |
