@@ -108,6 +108,71 @@ func TestClient_CreateWithTokenExchange(t *testing.T) {
108
108
})
109
109
}
110
110
111
+ func TestClient_SessionTransfer (t * testing.T ) {
112
+ configureHTTPTestRecordings (t )
113
+
114
+ ctx := context .Background ()
115
+
116
+ clientName := auth0 .Stringf ("Test Client SessionTransfer (%s)" , time .Now ().Format (time .StampMilli ))
117
+ expectedClient := & Client {
118
+ Name : clientName ,
119
+ Description : auth0 .String ("This is a test client with Session Transfer." ),
120
+ SessionTransfer : & SessionTransfer {
121
+ CanCreateSessionTransferToken : auth0 .Bool (true ),
122
+ AllowedAuthenticationMethods : & []string {"cookie" , "query" },
123
+ EnforceDeviceBinding : auth0 .String ("ip" ),
124
+ },
125
+ }
126
+
127
+ // Create client
128
+ require .NoError (t , api .Client .Create (ctx , expectedClient ))
129
+ require .NotEmpty (t , expectedClient .GetClientID ())
130
+
131
+ t .Cleanup (func () {
132
+ cleanupClient (t , expectedClient .GetClientID ())
133
+ })
134
+
135
+ // Verify creation
136
+ created , err := api .Client .Read (ctx , expectedClient .GetClientID ())
137
+ require .NoError (t , err )
138
+ require .NotNil (t , created .SessionTransfer )
139
+ assert .Equal (t , expectedClient .GetSessionTransfer (), created .GetSessionTransfer ())
140
+
141
+ // Update session transfer
142
+ created .SessionTransfer = & SessionTransfer {
143
+ CanCreateSessionTransferToken : auth0 .Bool (false ),
144
+ AllowedAuthenticationMethods : & []string {"cookie" },
145
+ EnforceDeviceBinding : auth0 .String ("none" ),
146
+ }
147
+
148
+ // Strip fields not allowed on update
149
+ created .ClientID = nil
150
+ created .SigningKeys = nil
151
+ if created .JWTConfiguration != nil {
152
+ created .JWTConfiguration .SecretEncoded = nil
153
+ }
154
+
155
+ require .NoError (t , api .Client .Update (ctx , expectedClient .GetClientID (), created ))
156
+
157
+ // Verify update
158
+ updated , err := api .Client .Read (ctx , expectedClient .GetClientID ())
159
+ require .NoError (t , err )
160
+ require .NotNil (t , updated .SessionTransfer )
161
+ assert .Equal (t , created .GetSessionTransfer (), updated .GetSessionTransfer ())
162
+
163
+ // Remove session transfer via PATCH
164
+ type clientPatch struct {
165
+ SessionTransfer * SessionTransfer `json:"session_transfer"`
166
+ }
167
+ patch := & clientPatch {SessionTransfer : nil }
168
+ require .NoError (t , api .Request (ctx , http .MethodPatch , api .URI ("clients" , expectedClient .GetClientID ()), patch ))
169
+
170
+ // Verify removal
171
+ final , err := api .Client .Read (ctx , expectedClient .GetClientID ())
172
+ require .NoError (t , err )
173
+ assert .Nil (t , final .GetSessionTransfer ())
174
+ }
175
+
111
176
func TestClient_CreateWithDefaultOrg (t * testing.T ) {
112
177
configureHTTPTestRecordings (t )
113
178
0 commit comments