@@ -189,6 +189,63 @@ func TestPublicationHandler(t *testing.T) {
189189 })
190190 })
191191
192+ t .Run ("GetLastAuthenticatedHandle" , func (t * testing.T ) {
193+ t .Run ("returns empty string when no config" , func (t * testing.T ) {
194+ handler := & PublicationHandler {
195+ config : nil ,
196+ }
197+
198+ handle := handler .GetLastAuthenticatedHandle ()
199+ if handle != "" {
200+ t .Errorf ("Expected empty string, got '%s'" , handle )
201+ }
202+ })
203+
204+ t .Run ("returns empty string when handle not set" , func (t * testing.T ) {
205+ handler := & PublicationHandler {
206+ config : & store.Config {},
207+ }
208+
209+ handle := handler .GetLastAuthenticatedHandle ()
210+ if handle != "" {
211+ t .Errorf ("Expected empty string, got '%s'" , handle )
212+ }
213+ })
214+
215+ t .Run ("returns handle from config" , func (t * testing.T ) {
216+ expectedHandle := "test.bsky.social"
217+ handler := & PublicationHandler {
218+ config : & store.Config {
219+ ATProtoHandle : expectedHandle ,
220+ },
221+ }
222+
223+ handle := handler .GetLastAuthenticatedHandle ()
224+ if handle != expectedHandle {
225+ t .Errorf ("Expected '%s', got '%s'" , expectedHandle , handle )
226+ }
227+ })
228+
229+ t .Run ("returns handle after successful authentication" , func (t * testing.T ) {
230+ suite := NewHandlerTestSuite (t )
231+ defer suite .Cleanup ()
232+
233+ handler := CreateHandler (t , NewPublicationHandler )
234+ ctx := context .Background ()
235+
236+ mock := services .SetupSuccessfulAuthMocks ()
237+ handler .atproto = mock
238+
239+ err := handler .Auth (ctx , "user.bsky.social" , "password123" )
240+ suite .AssertNoError (err , "authentication should succeed" )
241+
242+ handle := handler .GetLastAuthenticatedHandle ()
243+ if handle != "user.bsky.social" {
244+ t .Errorf ("Expected 'user.bsky.social', got '%s'" , handle )
245+ }
246+ })
247+ })
248+
192249 t .Run ("NewPublicationHandler" , func (t * testing.T ) {
193250 t .Run ("creates handler successfully" , func (t * testing.T ) {
194251 suite := NewHandlerTestSuite (t )
@@ -1120,7 +1177,9 @@ func TestPublicationHandler(t *testing.T) {
11201177 id , err := handler .repos .Notes .Create (ctx , note )
11211178 suite .AssertNoError (err , "create note" )
11221179
1123- session := & services.Session {
1180+ mock := services .NewMockATProtoService ()
1181+ mock .IsAuthenticatedVal = true
1182+ mock .Session = & services.Session {
11241183 DID : "did:plc:test123" ,
11251184 Handle : "test.bsky.social" ,
11261185 AccessJWT : "access_token" ,
@@ -1129,11 +1188,7 @@ func TestPublicationHandler(t *testing.T) {
11291188 ExpiresAt : time .Now ().Add (2 * time .Hour ),
11301189 Authenticated : true ,
11311190 }
1132-
1133- err = handler .atproto .RestoreSession (session )
1134- if err != nil {
1135- t .Fatalf ("Failed to restore session: %v" , err )
1136- }
1191+ handler .atproto = mock
11371192
11381193 err = handler .PostPreview (ctx , id , false , "" , false )
11391194 suite .AssertNoError (err , "preview should succeed" )
@@ -1154,7 +1209,9 @@ func TestPublicationHandler(t *testing.T) {
11541209 id , err := handler .repos .Notes .Create (ctx , note )
11551210 suite .AssertNoError (err , "create note" )
11561211
1157- session := & services.Session {
1212+ mock := services .NewMockATProtoService ()
1213+ mock .IsAuthenticatedVal = true
1214+ mock .Session = & services.Session {
11581215 DID : "did:plc:test123" ,
11591216 Handle : "test.bsky.social" ,
11601217 AccessJWT : "access_token" ,
@@ -1163,11 +1220,7 @@ func TestPublicationHandler(t *testing.T) {
11631220 ExpiresAt : time .Now ().Add (2 * time .Hour ),
11641221 Authenticated : true ,
11651222 }
1166-
1167- err = handler .atproto .RestoreSession (session )
1168- if err != nil {
1169- t .Fatalf ("Failed to restore session: %v" , err )
1170- }
1223+ handler .atproto = mock
11711224
11721225 err = handler .PostPreview (ctx , id , true , "" , false )
11731226 suite .AssertNoError (err , "preview draft should succeed" )
@@ -1207,7 +1260,9 @@ func TestPublicationHandler(t *testing.T) {
12071260 id , err := handler .repos .Notes .Create (ctx , note )
12081261 suite .AssertNoError (err , "create note" )
12091262
1210- session := & services.Session {
1263+ mock := services .NewMockATProtoService ()
1264+ mock .IsAuthenticatedVal = true
1265+ mock .Session = & services.Session {
12111266 DID : "did:plc:test123" ,
12121267 Handle : "test.bsky.social" ,
12131268 AccessJWT : "access_token" ,
@@ -1216,11 +1271,7 @@ func TestPublicationHandler(t *testing.T) {
12161271 ExpiresAt : time .Now ().Add (2 * time .Hour ),
12171272 Authenticated : true ,
12181273 }
1219-
1220- err = handler .atproto .RestoreSession (session )
1221- if err != nil {
1222- t .Fatalf ("Failed to restore session: %v" , err )
1223- }
1274+ handler .atproto = mock
12241275
12251276 err = handler .PostValidate (ctx , id , false , "" , false )
12261277 suite .AssertNoError (err , "validation should succeed" )
@@ -1339,7 +1390,9 @@ func TestPublicationHandler(t *testing.T) {
13391390 id , err := handler .repos .Notes .Create (ctx , note )
13401391 suite .AssertNoError (err , "create note" )
13411392
1342- session := & services.Session {
1393+ mock := services .NewMockATProtoService ()
1394+ mock .IsAuthenticatedVal = true
1395+ mock .Session = & services.Session {
13431396 DID : "did:plc:test123" ,
13441397 Handle : "test.bsky.social" ,
13451398 AccessJWT : "access_token" ,
@@ -1348,11 +1401,7 @@ func TestPublicationHandler(t *testing.T) {
13481401 ExpiresAt : time .Now ().Add (2 * time .Hour ),
13491402 Authenticated : true ,
13501403 }
1351-
1352- err = handler .atproto .RestoreSession (session )
1353- if err != nil {
1354- t .Fatalf ("Failed to restore session: %v" , err )
1355- }
1404+ handler .atproto = mock
13561405
13571406 err = handler .PatchPreview (ctx , id , "" , false )
13581407 suite .AssertNoError (err , "preview should succeed" )
@@ -1397,7 +1446,9 @@ func TestPublicationHandler(t *testing.T) {
13971446 id , err := handler .repos .Notes .Create (ctx , note )
13981447 suite .AssertNoError (err , "create note" )
13991448
1400- session := & services.Session {
1449+ mock := services .NewMockATProtoService ()
1450+ mock .IsAuthenticatedVal = true
1451+ mock .Session = & services.Session {
14011452 DID : "did:plc:test123" ,
14021453 Handle : "test.bsky.social" ,
14031454 AccessJWT : "access_token" ,
@@ -1406,11 +1457,7 @@ func TestPublicationHandler(t *testing.T) {
14061457 ExpiresAt : time .Now ().Add (2 * time .Hour ),
14071458 Authenticated : true ,
14081459 }
1409-
1410- err = handler .atproto .RestoreSession (session )
1411- if err != nil {
1412- t .Fatalf ("Failed to restore session: %v" , err )
1413- }
1460+ handler .atproto = mock
14141461
14151462 err = handler .PatchValidate (ctx , id , "" , false )
14161463 suite .AssertNoError (err , "validation should succeed" )
0 commit comments