@@ -30,6 +30,61 @@ func TestClient_Create(t *testing.T) {
30
30
})
31
31
}
32
32
33
+ func TestClient_CreateWithClientRefreshToken (t * testing.T ) {
34
+ configureHTTPTestRecordings (t )
35
+
36
+ // Create a Resource Server
37
+ resourceServer := & ResourceServer {
38
+ Name : auth0 .Stringf ("Test Resource Server (%s)" , time .Now ().Format (time .StampMilli )),
39
+ Identifier : auth0 .String ("https://mrrt" ),
40
+ Scopes : & []ResourceServerScope {
41
+ {
42
+ Description : auth0 .String ("This is just a test client." ),
43
+ Value : auth0 .String ("create:bar" ),
44
+ },
45
+ {
46
+ Description : auth0 .String ("This is just a test client." ),
47
+ Value : auth0 .String ("read:bar" ),
48
+ },
49
+ },
50
+ SkipConsentForVerifiableFirstPartyClients : auth0 .Bool (true ),
51
+ AllowOfflineAccess : auth0 .Bool (true ),
52
+ }
53
+
54
+ err := api .ResourceServer .Create (context .Background (), resourceServer )
55
+ assert .NoError (t , err )
56
+ assert .NotEmpty (t , resourceServer .GetID ())
57
+ t .Cleanup (func () {
58
+ cleanupResourceServer (t , resourceServer .GetID ())
59
+ })
60
+
61
+ // Create a Client with Refresh Token
62
+ expectedClient := & Client {
63
+ Name : auth0 .Stringf ("Test Client (%s)" , time .Now ().Format (time .StampMilli )),
64
+ Description : auth0 .String ("This is just a test client." ),
65
+ IsFirstParty : auth0 .Bool (true ),
66
+ RefreshToken : & ClientRefreshToken {
67
+ ExpirationType : auth0 .String ("expiring" ),
68
+ RotationType : auth0 .String ("non-rotating" ),
69
+ Policies : & []ClientRefreshTokenPolicy {
70
+ {
71
+ Audience : auth0 .String (resourceServer .GetIdentifier ()),
72
+ Scope : & []string {"create:bar" , "read:bar" },
73
+ },
74
+ },
75
+ },
76
+ }
77
+ err = api .Client .Create (context .Background (), expectedClient )
78
+ assert .NoError (t , err )
79
+ assert .NotEmpty (t , expectedClient .GetClientID ())
80
+ actualClient , err := api .Client .Read (context .Background (), expectedClient .GetClientID ())
81
+ assert .NoError (t , err )
82
+ assert .Equal (t , expectedClient .GetRefreshToken (), actualClient .GetRefreshToken ())
83
+ t .Cleanup (func () {
84
+ cleanupClient (t , expectedClient .GetClientID ())
85
+ })
86
+ }
87
+
33
88
func TestClient_CreateWithTokenExchange (t * testing.T ) {
34
89
configureHTTPTestRecordings (t )
35
90
@@ -45,7 +100,6 @@ func TestClient_CreateWithTokenExchange(t *testing.T) {
45
100
err := api .Client .Create (context .Background (), expectedClient )
46
101
assert .NoError (t , err )
47
102
assert .NotEmpty (t , expectedClient .GetClientID ())
48
-
49
103
actualClient , err := api .Client .Read (context .Background (), expectedClient .GetClientID ())
50
104
assert .NoError (t , err )
51
105
assert .Equal (t , expectedClient .GetTokenExchange (), actualClient .GetTokenExchange ())
@@ -54,6 +108,71 @@ func TestClient_CreateWithTokenExchange(t *testing.T) {
54
108
})
55
109
}
56
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
+
57
176
func TestClient_CreateWithDefaultOrg (t * testing.T ) {
58
177
configureHTTPTestRecordings (t )
59
178
0 commit comments