@@ -12,56 +12,74 @@ func Test_Build_Base(t *testing.T) {
1212 assert .Nil (t , e )
1313 assert .Equal (t , "https://jerry.wilson" , * actual )
1414}
15+
1516func Test_Build_Hostname_Error (t * testing.T ) {
1617 _ , e := Build ("*****" )
1718
1819 assert .NotNil (t , e )
1920}
21+
2022func Test_Build_Base_Trailing_Slash (t * testing.T ) {
2123 actual , e := Build ("https://jerry.wilson/" )
2224
2325 assert .Nil (t , e )
2426 assert .Equal (t , "https://jerry.wilson/" , * actual )
2527}
28+
2629func Test_Build_Path (t * testing.T ) {
2730 actual , e := Build ("https://jerry.wilson" , "a" , "b" )
2831
2932 assert .Nil (t , e )
3033 assert .Equal (t , "https://jerry.wilson/a/b" , * actual )
3134}
35+
3236func Test_Build_Path_Trailing_Slash (t * testing.T ) {
3337 actual , e := Build ("https://jerry.wilson/" , "a" , "b" )
3438
3539 assert .Nil (t , e )
3640 assert .Equal (t , "https://jerry.wilson/a/b" , * actual )
3741}
3842
39- func Test_GetIDsFromUrl_Success (t * testing.T ) {
43+ func Test_GetIDsFromUrl_Success_Machine (t * testing.T ) {
44+ presignUrl := "https://inspector-bundle-upload-dev-us-east-1.s3.us-east-1.amazonaws.com/workspace/4382f4d8-3a11-401f-a9ba-3b1702f6917e/user/machine/6a5404db-a484-4115-8a69-a9def45a8fe3/diff/blob/1761082861?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=ASIAS7LCAOM53APYAJ26%2F20251021%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20251021T214101Z&X-Amz-Expires=300&X-Amz-Security-Token=asdf1234qwer4567&X-Amz-SignedHeaders=host&x-id=PutObject&X-Amz-Signature=aafacd4d8cd5c1a1aa405138b516c37db775698d75f4a798dbb8f0e6a6009378"
45+
46+ workspaceID , userID , epoch , isMachine , err := GetIDsFromUrl (presignUrl )
47+
48+ assert .Nil (t , err )
49+ assert .Equal (t , "4382f4d8-3a11-401f-a9ba-3b1702f6917e" , workspaceID )
50+ assert .Equal (t , "6a5404db-a484-4115-8a69-a9def45a8fe3" , userID )
51+ assert .True (t , isMachine )
52+ assert .Equal (t , "1761082861" , epoch )
53+ }
54+
55+ func Test_GetIDsFromUrl_Success_Human (t * testing.T ) {
4056 presignUrl := "https://inspector-bundle-upload-dev-us-east-1.s3.us-east-1.amazonaws.com/workspace/4382f4d8-3a11-401f-a9ba-3b1702f6917e/user/human/6a5404db-a484-4115-8a69-a9def45a8fe3/diff/blob/1761082861?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=ASIAS7LCAOM53APYAJ26%2F20251021%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20251021T214101Z&X-Amz-Expires=300&X-Amz-Security-Token=asdf1234qwer4567&X-Amz-SignedHeaders=host&x-id=PutObject&X-Amz-Signature=aafacd4d8cd5c1a1aa405138b516c37db775698d75f4a798dbb8f0e6a6009378"
4157
42- workspaceID , userID , epoch , err := GetIDsFromUrl (presignUrl )
58+ workspaceID , userID , epoch , isMachine , err := GetIDsFromUrl (presignUrl )
4359
4460 assert .Nil (t , err )
4561 assert .Equal (t , "4382f4d8-3a11-401f-a9ba-3b1702f6917e" , workspaceID )
4662 assert .Equal (t , "6a5404db-a484-4115-8a69-a9def45a8fe3" , userID )
63+ assert .False (t , isMachine )
4764 assert .Equal (t , "1761082861" , epoch )
4865}
4966
5067func Test_GetIDsFromUrl_NoQueryParams (t * testing.T ) {
5168 presignUrl := "https://example.com/workspace/test-workspace-id/user/human/test-user-id/diff/blob/123"
5269
53- workspaceID , userID , epoch , err := GetIDsFromUrl (presignUrl )
70+ workspaceID , userID , epoch , isMachine , err := GetIDsFromUrl (presignUrl )
5471
5572 assert .Nil (t , err )
5673 assert .Equal (t , "test-workspace-id" , workspaceID )
5774 assert .Equal (t , "test-user-id" , userID )
75+ assert .False (t , isMachine )
5876 assert .Equal (t , "123" , epoch )
5977}
6078
6179func Test_GetIDsFromUrl_MissingWorkspace (t * testing.T ) {
6280 presignUrl := "https://example.com/user/human/test-user-id/diff/blob/123"
6381
64- _ , _ , _ , err := GetIDsFromUrl (presignUrl )
82+ _ , _ , _ , _ , err := GetIDsFromUrl (presignUrl )
6583
6684 assert .NotNil (t , err )
6785 assert .Contains (t , err .Error (), "workspace ID not found" )
@@ -70,7 +88,7 @@ func Test_GetIDsFromUrl_MissingWorkspace(t *testing.T) {
7088func Test_GetIDsFromUrl_MissingUser (t * testing.T ) {
7189 presignUrl := "https://example.com/workspace/test-workspace-id/diff/blob/123"
7290
73- _ , _ , _ , err := GetIDsFromUrl (presignUrl )
91+ _ , _ , _ , _ , err := GetIDsFromUrl (presignUrl )
7492
7593 assert .NotNil (t , err )
7694 assert .Contains (t , err .Error (), "user ID not found" )
@@ -79,65 +97,114 @@ func Test_GetIDsFromUrl_MissingUser(t *testing.T) {
7997func Test_GetIDsFromUrl_InvalidURL (t * testing.T ) {
8098 presignUrl := "://invalid-url"
8199
82- _ , _ , _ , err := GetIDsFromUrl (presignUrl )
100+ _ , _ , _ , _ , err := GetIDsFromUrl (presignUrl )
83101
84102 assert .NotNil (t , err )
85103 assert .Contains (t , err .Error (), "error parsing URL" )
86104}
87105
88- func Test_CreateSortString_Basic (t * testing.T ) {
106+ // CreateSortString tests for cli-user (human users)
107+ func Test_CreateSortString_Basic_Human (t * testing.T ) {
89108 userID := "6a5404db-a484-4115-8a69-a9def45a8fe3"
90109 epoch := "1761082861"
91110
92- result := CreateSortString (userID , epoch , false )
111+ result := CreateSortString (userID , epoch , false , false )
93112
94113 assert .Equal (t , "cli-user%7C6a5404db-a484-4115-8a69-a9def45a8fe3%7C1761082861" , result )
95114}
96115
97- func Test_CreateSortString_Full (t * testing.T ) {
116+ func Test_CreateSortString_Full_Human (t * testing.T ) {
98117 userID := "6a5404db-a484-4115-8a69-a9def45a8fe3"
99118 epoch := "1761082861"
100119
101- result := CreateSortString (userID , epoch , true )
120+ result := CreateSortString (userID , epoch , true , false )
102121
103122 assert .Equal (t , "cli-user-full%7C6a5404db-a484-4115-8a69-a9def45a8fe3%7C1761082861" , result )
104123}
105124
125+ // CreateSortString tests for cli-api (machine users)
126+ func Test_CreateSortString_Basic_Machine (t * testing.T ) {
127+ userID := "6a5404db-a484-4115-8a69-a9def45a8fe3"
128+ epoch := "1761082861"
129+
130+ result := CreateSortString (userID , epoch , false , true )
131+
132+ assert .Equal (t , "cli-api%7Cmachine%7C1761082861" , result )
133+ }
134+
135+ func Test_CreateSortString_Full_Machine (t * testing.T ) {
136+ userID := "6a5404db-a484-4115-8a69-a9def45a8fe3"
137+ epoch := "1761082861"
138+
139+ result := CreateSortString (userID , epoch , true , true )
140+
141+ assert .Equal (t , "cli-api-full%7Cmachine%7C1761082861" , result )
142+ }
143+
106144func Test_CreateSortString_WithSpecialChars (t * testing.T ) {
107145108146 epoch := "2024/10/21"
109147
110- result := CreateSortString (userID , epoch , false )
148+ result := CreateSortString (userID , epoch , false , false )
111149
112150 assert .Equal (t , "cli-user%7Cuser%40example.com%7C2024%2F10%2F21" , result )
113151}
114152
115- func Test_CreateSortString_EmptyValues (t * testing.T ) {
116- result := CreateSortString ("" , "" , false )
153+ func Test_CreateSortString_EmptyValues_Human (t * testing.T ) {
154+ result := CreateSortString ("" , "" , false , false )
117155
118156 assert .Equal (t , "cli-user%7C%7C" , result )
119157}
120158
121- func Test_CreateSortString_Integration (t * testing.T ) {
122- // Test that we can use the output from GetIDsFromUrl
159+ func Test_CreateSortString_EmptyValues_Machine (t * testing.T ) {
160+ result := CreateSortString ("" , "" , false , true )
161+
162+ assert .Equal (t , "cli-api%7Cmachine%7C" , result )
163+ }
164+
165+ // Integration tests
166+ func Test_CreateSortString_Integration_Human (t * testing.T ) {
123167 presignUrl := "https://inspector-bundle-upload-dev-us-east-1.s3.us-east-1.amazonaws.com/workspace/4382f4d8-3a11-401f-a9ba-3b1702f6917e/user/human/6a5404db-a484-4115-8a69-a9def45a8fe3/diff/blob/1761082861?X-Amz-Algorithm=AWS4-HMAC-SHA256"
124168
125- _ , userID , epoch , err := GetIDsFromUrl (presignUrl )
169+ _ , userID , epoch , isMachine , err := GetIDsFromUrl (presignUrl )
126170 assert .Nil (t , err )
127171
128- result := CreateSortString (userID , epoch , false )
172+ result := CreateSortString (userID , epoch , false , isMachine )
129173
130174 assert .Equal (t , "cli-user%7C6a5404db-a484-4115-8a69-a9def45a8fe3%7C1761082861" , result )
131175}
132176
133- func Test_CreateSortString_Integration_Full (t * testing.T ) {
134- // Test that we can use the output from GetIDsFromUrl with full=true
177+ func Test_CreateSortString_Integration_Human_Full (t * testing.T ) {
135178 presignUrl := "https://inspector-bundle-upload-dev-us-east-1.s3.us-east-1.amazonaws.com/workspace/4382f4d8-3a11-401f-a9ba-3b1702f6917e/user/human/6a5404db-a484-4115-8a69-a9def45a8fe3/diff/blob/1761082861?X-Amz-Algorithm=AWS4-HMAC-SHA256"
136179
137- _ , userID , epoch , err := GetIDsFromUrl (presignUrl )
180+ _ , userID , epoch , isMachine , err := GetIDsFromUrl (presignUrl )
138181 assert .Nil (t , err )
139182
140- result := CreateSortString (userID , epoch , true )
183+ result := CreateSortString (userID , epoch , true , isMachine )
141184
142185 assert .Equal (t , "cli-user-full%7C6a5404db-a484-4115-8a69-a9def45a8fe3%7C1761082861" , result )
143186}
187+
188+ func Test_CreateSortString_Integration_Machine (t * testing.T ) {
189+ presignUrl := "https://inspector-bundle-upload-dev-us-east-1.s3.us-east-1.amazonaws.com/workspace/4382f4d8-3a11-401f-a9ba-3b1702f6917e/user/machine/6a5404db-a484-4115-8a69-a9def45a8fe3/diff/blob/1761082861?X-Amz-Algorithm=AWS4-HMAC-SHA256"
190+
191+ _ , userID , epoch , isMachine , err := GetIDsFromUrl (presignUrl )
192+ assert .Nil (t , err )
193+ assert .True (t , isMachine )
194+
195+ result := CreateSortString (userID , epoch , false , isMachine )
196+
197+ assert .Equal (t , "cli-api%7Cmachine%7C1761082861" , result )
198+ }
199+
200+ func Test_CreateSortString_Integration_Machine_Full (t * testing.T ) {
201+ presignUrl := "https://inspector-bundle-upload-dev-us-east-1.s3.us-east-1.amazonaws.com/workspace/4382f4d8-3a11-401f-a9ba-3b1702f6917e/user/machine/6a5404db-a484-4115-8a69-a9def45a8fe3/diff/blob/1761082861?X-Amz-Algorithm=AWS4-HMAC-SHA256"
202+
203+ _ , userID , epoch , isMachine , err := GetIDsFromUrl (presignUrl )
204+ assert .Nil (t , err )
205+ assert .True (t , isMachine )
206+
207+ result := CreateSortString (userID , epoch , true , isMachine )
208+
209+ assert .Equal (t , "cli-api-full%7Cmachine%7C1761082861" , result )
210+ }
0 commit comments