|
1 | 1 | package services_test |
2 | 2 |
|
3 | 3 | import ( |
| 4 | + "net/url" |
4 | 5 | "testing" |
5 | 6 |
|
6 | 7 | "github.com/remove158/chula-sso/cmd/models" |
@@ -89,3 +90,45 @@ func (s *AuthServiceTest) TestServiceValidationFailOnTicketInvalid() { |
89 | 90 | s.Error(err) |
90 | 91 | s.Empty(result) |
91 | 92 | } |
| 93 | + |
| 94 | +func (s *AuthServiceTest) TestGenerateRedirectURLSuccess() { |
| 95 | + service := "https://www.google.com" |
| 96 | + ticket := "this-is-a-ticket" |
| 97 | + result, err := s.authService.GeneratePath(service, ticket) |
| 98 | + s.NoError(err) |
| 99 | + |
| 100 | + resultURL, err := url.Parse(result) |
| 101 | + s.NoError(err) |
| 102 | + expected, err := url.Parse("https://www.google.com?ticket=this-is-a-ticket") |
| 103 | + s.NoError(err) |
| 104 | + |
| 105 | + s.Equal(resultURL.Host, expected.Host) |
| 106 | + s.Equal(resultURL.Path, expected.Path) |
| 107 | + s.Equal(resultURL.RawQuery, expected.RawQuery) |
| 108 | + s.Equal(resultURL.Scheme, expected.Scheme) |
| 109 | +} |
| 110 | + |
| 111 | +func (s *AuthServiceTest) TestGenerateRedirectURLSuccessWithConservedURL() { |
| 112 | + service := "https://www.google.com/?redirect=%2Fhome&test=1" |
| 113 | + ticket := "this-is-a-ticket" |
| 114 | + result, err := s.authService.GeneratePath(service, ticket) |
| 115 | + s.NoError(err) |
| 116 | + |
| 117 | + resultURL, err := url.Parse(result) |
| 118 | + s.NoError(err) |
| 119 | + expected, err := url.Parse("https://www.google.com/?redirect=%2Fhome&test=1&ticket=this-is-a-ticket") |
| 120 | + s.NoError(err) |
| 121 | + |
| 122 | + s.Equal(resultURL.Host, expected.Host) |
| 123 | + s.Equal(resultURL.Path, expected.Path) |
| 124 | + s.Equal(resultURL.RawQuery, expected.RawQuery) |
| 125 | + s.Equal(resultURL.Scheme, expected.Scheme) |
| 126 | +} |
| 127 | + |
| 128 | +func (s *AuthServiceTest) TestGenerateRedirectURLFailWithCantPraseURLService() { |
| 129 | + service := "postgres://user:abc{DEf1=ghi@example.com:5432/db?sslmode=require" |
| 130 | + ticket := "this-is-a-ticket" |
| 131 | + result, err := s.authService.GeneratePath(service, ticket) |
| 132 | + s.Error(err) |
| 133 | + s.Empty(result) |
| 134 | +} |
0 commit comments