@@ -66,70 +66,111 @@ func (m *mockIDP) RequestToken() (IdentityProviderResponse, error) {
66
66
67
67
func TestNewIDPResponse (t * testing.T ) {
68
68
tests := []struct {
69
- name string
70
- responseType string
71
- result interface {}
72
- wantErr bool
69
+ name string
70
+ responseType string
71
+ result interface {}
72
+ expectedError string
73
73
}{
74
74
{
75
- name : "Valid AuthResult" ,
75
+ name : "Valid AuthResult pointer " ,
76
76
responseType : ResponseTypeAuthResult ,
77
77
result : & public.AuthResult {},
78
- wantErr : false ,
79
78
},
80
79
{
81
- name : "Valid AccessToken" ,
80
+ name : "Valid AuthResult value" ,
81
+ responseType : ResponseTypeAuthResult ,
82
+ result : public.AuthResult {},
83
+ },
84
+ {
85
+ name : "Valid AccessToken pointer" ,
82
86
responseType : ResponseTypeAccessToken ,
83
- result : & azcore.AccessToken {},
84
- wantErr : false ,
87
+ result : & azcore.AccessToken {Token : "test-token" },
85
88
},
86
89
{
87
- name : "Valid RawToken" ,
90
+ name : "Valid AccessToken value" ,
91
+ responseType : ResponseTypeAccessToken ,
92
+ result : azcore.AccessToken {Token : "test-token" },
93
+ },
94
+ {
95
+ name : "Valid RawToken string" ,
88
96
responseType : ResponseTypeRawToken ,
89
97
result : "test-token" ,
90
- wantErr : false ,
91
98
},
92
99
{
93
- name : "Invalid AuthResult type" ,
94
- responseType : ResponseTypeAuthResult ,
95
- result : "not-an-auth-result" ,
96
- wantErr : true ,
100
+ name : "Valid RawToken string pointer" ,
101
+ responseType : ResponseTypeRawToken ,
102
+ result : stringPtr ("test-token" ),
97
103
},
98
104
{
99
- name : "Invalid AccessToken type " ,
100
- responseType : ResponseTypeAccessToken ,
101
- result : "not-an-access-token" ,
102
- wantErr : true ,
105
+ name : "Nil result " ,
106
+ responseType : ResponseTypeAuthResult ,
107
+ result : nil ,
108
+ expectedError : "result cannot be nil" ,
103
109
},
104
110
{
105
- name : "Invalid RawToken type" ,
106
- responseType : ResponseTypeRawToken ,
107
- result : 123 ,
108
- wantErr : true ,
111
+ name : "Nil string pointer" ,
112
+ responseType : ResponseTypeRawToken ,
113
+ result : (* string )(nil ),
114
+ expectedError : "raw token cannot be nil" ,
115
+ },
116
+ {
117
+ name : "Invalid AuthResult type" ,
118
+ responseType : ResponseTypeAuthResult ,
119
+ result : "not-an-auth-result" ,
120
+ expectedError : "invalid auth result type: expected public.AuthResult or *public.AuthResult" ,
121
+ },
122
+ {
123
+ name : "Invalid AccessToken type" ,
124
+ responseType : ResponseTypeAccessToken ,
125
+ result : "not-an-access-token" ,
126
+ expectedError : "invalid access token type: expected azcore.AccessToken or *azcore.AccessToken" ,
109
127
},
110
128
{
111
- name : "Unknown response type" ,
112
- responseType : "UnknownType" ,
113
- result : nil ,
114
- wantErr : true ,
129
+ name : "Invalid RawToken type" ,
130
+ responseType : ResponseTypeRawToken ,
131
+ result : 123 ,
132
+ expectedError : "invalid raw token type: expected string or *string" ,
133
+ },
134
+ {
135
+ name : "Invalid response type" ,
136
+ responseType : "InvalidType" ,
137
+ result : "test" ,
138
+ expectedError : "unsupported identity provider response type: InvalidType" ,
115
139
},
116
140
}
117
141
118
142
for _ , tt := range tests {
119
143
t .Run (tt .name , func (t * testing.T ) {
120
- response , err := NewIDPResponse (tt .responseType , tt .result )
121
- if tt .wantErr {
144
+ resp , err := NewIDPResponse (tt .responseType , tt .result )
145
+
146
+ if tt .expectedError != "" {
122
147
assert .Error (t , err )
123
- assert .Nil (t , response )
124
- } else {
125
- assert .NoError (t , err )
126
- assert .NotNil (t , response )
127
- assert .Equal (t , tt .responseType , response .Type ())
148
+ assert .Contains (t , err .Error (), tt .expectedError )
149
+ assert .Nil (t , resp )
150
+ return
151
+ }
152
+
153
+ assert .NoError (t , err )
154
+ assert .NotNil (t , resp )
155
+ assert .Equal (t , tt .responseType , resp .Type ())
156
+
157
+ switch tt .responseType {
158
+ case ResponseTypeAuthResult :
159
+ assert .NotNil (t , resp .AuthResult ())
160
+ case ResponseTypeAccessToken :
161
+ assert .NotNil (t , resp .AccessToken ())
162
+ assert .NotEmpty (t , resp .AccessToken ().Token )
163
+ case ResponseTypeRawToken :
164
+ assert .NotEmpty (t , resp .RawToken ())
128
165
}
129
166
})
130
167
}
131
168
}
132
169
170
+ func stringPtr (s string ) * string {
171
+ return & s
172
+ }
173
+
133
174
func TestIdentityProviderResponse (t * testing.T ) {
134
175
now := time .Now ()
135
176
expires := now .Add (time .Hour )
0 commit comments