mobile bluesky app made with flutter lazurite.stormlightlabs.org/
mobile bluesky flutter
3
fork

Configure Feed

Select the types of activity you want to include in your feed.

at main 151 lines 5.5 kB view raw
1import 'package:flutter_test/flutter_test.dart'; 2import 'package:lazurite/features/auth/data/models/auth_models.dart'; 3 4void main() { 5 group('AuthTokens', () { 6 test('should create AuthTokens with all fields', () { 7 const tokens = AuthTokens( 8 accessToken: 'access_token', 9 refreshToken: 'refresh_token', 10 did: 'did:plc:abc123', 11 handle: 'user.bsky.social', 12 displayName: 'User Name', 13 service: 'bsky.social', 14 oauthService: 'bsky.social', 15 oauthClientId: 'https://lazurite.stormlightlabs.org/client-metadata.json', 16 ); 17 18 expect(tokens.accessToken, equals('access_token')); 19 expect(tokens.refreshToken, equals('refresh_token')); 20 expect(tokens.did, equals('did:plc:abc123')); 21 expect(tokens.handle, equals('user.bsky.social')); 22 expect(tokens.displayName, equals('User Name')); 23 expect(tokens.service, equals('bsky.social')); 24 expect(tokens.oauthService, equals('bsky.social')); 25 expect(tokens.oauthClientId, equals('https://lazurite.stormlightlabs.org/client-metadata.json')); 26 }); 27 28 test('should create AuthTokens without optional fields', () { 29 const tokens = AuthTokens(accessToken: 'access_token', did: 'did:plc:abc123', handle: 'user.bsky.social'); 30 31 expect(tokens.accessToken, equals('access_token')); 32 expect(tokens.refreshToken, isNull); 33 expect(tokens.did, equals('did:plc:abc123')); 34 expect(tokens.handle, equals('user.bsky.social')); 35 expect(tokens.displayName, isNull); 36 }); 37 38 test('should copy with new values', () { 39 const tokens = AuthTokens(accessToken: 'old_token', did: 'did:plc:abc123', handle: 'user.bsky.social'); 40 41 final newTokens = tokens.copyWith( 42 accessToken: 'new_token', 43 displayName: 'New Name', 44 oauthService: 'bsky.social', 45 oauthClientId: 'client-id', 46 ); 47 48 expect(newTokens.accessToken, equals('new_token')); 49 expect(newTokens.did, equals('did:plc:abc123')); 50 expect(newTokens.displayName, equals('New Name')); 51 expect(newTokens.oauthService, equals('bsky.social')); 52 expect(newTokens.oauthClientId, equals('client-id')); 53 }); 54 55 test('should identify oauth-backed sessions', () { 56 const tokens = AuthTokens( 57 accessToken: 'access_token', 58 refreshToken: 'refresh_token', 59 did: 'did:plc:abc123', 60 handle: 'user.bsky.social', 61 dpopPublicKey: 'public', 62 dpopPrivateKey: 'private', 63 authMethod: AuthMethod.oauth, 64 ); 65 66 expect(tokens.usesOAuth, isTrue); 67 }); 68 69 test('should check if tokens are expired', () { 70 final expiredDate = DateTime.now().subtract(const Duration(hours: 1)); 71 final tokens = AuthTokens( 72 accessToken: 'token', 73 did: 'did:plc:abc123', 74 handle: 'user.bsky.social', 75 expiresAt: expiredDate, 76 ); 77 78 expect(tokens.isExpired, isTrue); 79 }); 80 81 test('should check if tokens are not expired', () { 82 final futureDate = DateTime.now().add(const Duration(hours: 1)); 83 final tokens = AuthTokens( 84 accessToken: 'token', 85 did: 'did:plc:abc123', 86 handle: 'user.bsky.social', 87 expiresAt: futureDate, 88 ); 89 90 expect(tokens.isExpired, isFalse); 91 }); 92 93 test('should check if tokens without expiry are not expired', () { 94 const tokens = AuthTokens(accessToken: 'token', did: 'did:plc:abc123', handle: 'user.bsky.social'); 95 96 expect(tokens.isExpired, isFalse); 97 }); 98 99 test('should support value equality', () { 100 const tokens1 = AuthTokens(accessToken: 'token', did: 'did:plc:abc123', handle: 'user.bsky.social'); 101 const tokens2 = AuthTokens(accessToken: 'token', did: 'did:plc:abc123', handle: 'user.bsky.social'); 102 103 expect(tokens1, equals(tokens2)); 104 }); 105 }); 106 107 group('User', () { 108 test('should create User with all fields', () { 109 const user = User( 110 did: 'did:plc:abc123', 111 handle: 'user.bsky.social', 112 displayName: 'User Name', 113 avatar: 'https://example.com/avatar.jpg', 114 description: 'User description', 115 ); 116 117 expect(user.did, equals('did:plc:abc123')); 118 expect(user.handle, equals('user.bsky.social')); 119 expect(user.displayName, equals('User Name')); 120 expect(user.avatar, equals('https://example.com/avatar.jpg')); 121 expect(user.description, equals('User description')); 122 }); 123 124 test('should create User without optional fields', () { 125 const user = User(did: 'did:plc:abc123', handle: 'user.bsky.social'); 126 127 expect(user.did, equals('did:plc:abc123')); 128 expect(user.handle, equals('user.bsky.social')); 129 expect(user.displayName, isNull); 130 expect(user.avatar, isNull); 131 expect(user.description, isNull); 132 }); 133 134 test('should copy with new values', () { 135 const user = User(did: 'did:plc:abc123', handle: 'user.bsky.social'); 136 137 final newUser = user.copyWith(displayName: 'New Name', avatar: 'https://example.com/new-avatar.jpg'); 138 139 expect(newUser.did, equals('did:plc:abc123')); 140 expect(newUser.displayName, equals('New Name')); 141 expect(newUser.avatar, equals('https://example.com/new-avatar.jpg')); 142 }); 143 144 test('should support value equality', () { 145 const user1 = User(did: 'did:plc:abc123', handle: 'user.bsky.social'); 146 const user2 = User(did: 'did:plc:abc123', handle: 'user.bsky.social'); 147 148 expect(user1, equals(user2)); 149 }); 150 }); 151}