|
1 | 1 | import { Names, Repos, Types, Type, Popularity, Languages, Releases, ReleaseHelpers } from '../src/SDKMeta'; |
| 2 | +import { UserAgents, UserAgentHelpers } from '../src/SDKMeta'; |
2 | 3 |
|
3 | 4 | test('names', () => { |
4 | 5 | expect(Names['node-server']).toBe('Node.js Server SDK'); |
@@ -67,3 +68,43 @@ test('eol calculations', () => { |
67 | 68 | expect(ReleaseHelpers.IsApproachingEOL(earliest, new Date(earliestEOL.getTime() - thirty_minutes), hour)).toBe(true); |
68 | 69 | expect(ReleaseHelpers.IsApproachingEOL(earliest, new Date(earliestEOL.getTime() - minute), hour)).toBe(true); |
69 | 70 | }) |
| 71 | + |
| 72 | +test('user agents', () => { |
| 73 | + // Test basic user agent data structure |
| 74 | + expect(UserAgents['node-server']).toBeDefined(); |
| 75 | + expect(UserAgents['node-server'].userAgents).toContain('NodeJSClient'); |
| 76 | + |
| 77 | + // Test SDK with both user agents and wrapper names |
| 78 | + expect(UserAgents['react-native']).toBeDefined(); |
| 79 | + expect(UserAgents['react-native'].userAgents).toContain('ReactNativeClient'); |
| 80 | + expect(UserAgents['react-native'].wrapperNames).toContain('react-native-client'); |
| 81 | +}); |
| 82 | + |
| 83 | +describe('UserAgentHelpers.getSDKNameByUserAgentOrWrapper', () => { |
| 84 | + test('finds SDK by wrapper name', () => { |
| 85 | + const name = UserAgentHelpers.getSDKNameByUserAgentOrWrapper('react-native-client'); |
| 86 | + expect(name).toBe('React Native SDK'); |
| 87 | + }); |
| 88 | + |
| 89 | + test('finds SDK by user agent', () => { |
| 90 | + const name = UserAgentHelpers.getSDKNameByUserAgentOrWrapper('NodeJSClient'); |
| 91 | + expect(name).toBe('Node.js Server SDK'); |
| 92 | + }); |
| 93 | + |
| 94 | + test('returns undefined for unknown identifier', () => { |
| 95 | + const name = UserAgentHelpers.getSDKNameByUserAgentOrWrapper('UnknownIdentifier'); |
| 96 | + expect(name).toBeUndefined(); |
| 97 | + }); |
| 98 | + |
| 99 | + test('prioritizes wrapper names over user agents', () => { |
| 100 | + // In case there's ever a wrapper name that matches a user agent from another SDK, |
| 101 | + // we should ensure wrapper names are checked first |
| 102 | + const name = UserAgentHelpers.getSDKNameByUserAgentOrWrapper('react-native-client'); |
| 103 | + expect(name).toBe('React Native SDK'); |
| 104 | + }); |
| 105 | + |
| 106 | + test('finds edge SDK by user agent', () => { |
| 107 | + const name = UserAgentHelpers.getSDKNameByUserAgentOrWrapper('CloudflareEdgeSDK'); |
| 108 | + expect(name).toBe('Cloudflare SDK'); |
| 109 | + }); |
| 110 | +}); |
0 commit comments