11package cmd
22
33import (
4+ "context"
45 "encoding/json"
56 "io"
67 "os"
@@ -13,18 +14,7 @@ import (
1314// zero values so each test starts from a clean slate.
1415func resetSearchFlags (t * testing.T ) {
1516 t .Helper ()
16- docSearchBody = ""
17- docSearchTitle = ""
18- docSearchFormName = ""
19- docSearchFormID = 0
20- docSearchFGID = 0
21- docSearchWriters = nil
22- docSearchGroups = nil
23- docSearchMe = false
24- docSearchSince = ""
25- docSearchUntil = ""
26- flagUser = ""
27- t .Cleanup (func () {
17+ clear := func () {
2818 docSearchBody = ""
2919 docSearchTitle = ""
3020 docSearchFormName = ""
@@ -36,7 +26,10 @@ func resetSearchFlags(t *testing.T) {
3626 docSearchSince = ""
3727 docSearchUntil = ""
3828 flagUser = ""
39- })
29+ flagDomainCode = ""
30+ }
31+ clear ()
32+ t .Cleanup (clear )
4033}
4134
4235func TestBuildSearchBody_TitleAndForm (t * testing.T ) {
@@ -46,7 +39,7 @@ func TestBuildSearchBody_TitleAndForm(t *testing.T) {
4639 docSearchFormID = 42
4740 docSearchFGID = 7
4841
49- raw , err := buildSearchBodyFromFlags ()
42+ raw , err := buildSearchBodyFromFlags ("" )
5043 if err != nil {
5144 t .Fatalf ("build: %v" , err )
5245 }
@@ -73,7 +66,7 @@ func TestBuildSearchBody_Writers(t *testing.T) {
7366 docSearchWriters = []string {"u1" , "u2" }
7467 docSearchGroups = []string {"g1" }
7568
76- raw , err := buildSearchBodyFromFlags ()
69+ raw , err := buildSearchBodyFromFlags ("" )
7770 if err != nil {
7871 t .Fatalf ("build: %v" , err )
7972 }
@@ -100,41 +93,15 @@ func TestBuildSearchBody_Writers(t *testing.T) {
10093 }
10194}
10295
103- func TestBuildSearchBody_MeRequiresUser (t * testing.T ) {
104- resetSearchFlags (t )
105- docSearchMe = true
106-
107- _ , err := buildSearchBodyFromFlags ()
108- if err == nil || ! strings .Contains (err .Error (), "--me requires" ) {
109- t .Errorf ("err = %v" , err )
110- }
111- }
112-
113- func TestBuildSearchBody_MeWithFlagUser (t * testing.T ) {
96+ func TestBuildSearchBody_MeCodeAppendsWriter (t * testing.T ) {
11497 resetSearchFlags (t )
115- docSearchMe = true
116- flagUser = "alice"
11798
118- raw , err := buildSearchBodyFromFlags ()
99+ raw , err := buildSearchBodyFromFlags ("alice" )
119100 if err != nil {
120101 t .Fatalf ("build: %v" , err )
121102 }
122103 if ! strings .Contains (string (raw ), `"code":"alice"` ) {
123- t .Errorf ("body missing current user: %s" , string (raw ))
124- }
125- }
126-
127- func TestBuildSearchBody_MeFromEnv (t * testing.T ) {
128- resetSearchFlags (t )
129- docSearchMe = true
130- t .Setenv ("XPOINT_USER" , "bob" )
131-
132- raw , err := buildSearchBodyFromFlags ()
133- if err != nil {
134- t .Fatalf ("build: %v" , err )
135- }
136- if ! strings .Contains (string (raw ), `"code":"bob"` ) {
137- t .Errorf ("body missing env user: %s" , string (raw ))
104+ t .Errorf ("body missing me user: %s" , string (raw ))
138105 }
139106}
140107
@@ -143,7 +110,7 @@ func TestBuildSearchBody_SinceUntil(t *testing.T) {
143110 docSearchSince = "2024-01-15"
144111 docSearchUntil = "2024-12-31"
145112
146- raw , err := buildSearchBodyFromFlags ()
113+ raw , err := buildSearchBodyFromFlags ("" )
147114 if err != nil {
148115 t .Fatalf ("build: %v" , err )
149116 }
@@ -169,12 +136,49 @@ func TestBuildSearchBody_InvalidSince(t *testing.T) {
169136 resetSearchFlags (t )
170137 docSearchSince = "2024/01/15"
171138
172- _ , err := buildSearchBodyFromFlags ()
139+ _ , err := buildSearchBodyFromFlags ("" )
173140 if err == nil || ! strings .Contains (err .Error (), "--since" ) {
174141 t .Errorf ("err = %v" , err )
175142 }
176143}
177144
145+ func TestResolveCurrentUserCode_UsesFlagUser (t * testing.T ) {
146+ resetSearchFlags (t )
147+ flagUser = "alice"
148+
149+ code , err := resolveCurrentUserCode (context .Background (), nil )
150+ if err != nil {
151+ t .Fatalf ("resolve: %v" , err )
152+ }
153+ if code != "alice" {
154+ t .Errorf ("code = %q, want alice" , code )
155+ }
156+ }
157+
158+ func TestResolveCurrentUserCode_UsesEnvUser (t * testing.T ) {
159+ resetSearchFlags (t )
160+ t .Setenv ("XPOINT_USER" , "bob" )
161+
162+ code , err := resolveCurrentUserCode (context .Background (), nil )
163+ if err != nil {
164+ t .Fatalf ("resolve: %v" , err )
165+ }
166+ if code != "bob" {
167+ t .Errorf ("code = %q, want bob" , code )
168+ }
169+ }
170+
171+ func TestResolveCurrentUserCode_ErrorsWithoutUserOrDomain (t * testing.T ) {
172+ resetSearchFlags (t )
173+ t .Setenv ("XPOINT_USER" , "" )
174+ t .Setenv ("XPOINT_DOMAIN_CODE" , "" )
175+
176+ _ , err := resolveCurrentUserCode (context .Background (), nil )
177+ if err == nil || ! strings .Contains (err .Error (), "--xpoint-user" ) {
178+ t .Errorf ("err = %v" , err )
179+ }
180+ }
181+
178182func TestRunDocumentSearch_BodyAndFilterConflict (t * testing.T ) {
179183 resetSearchFlags (t )
180184 t .Setenv ("XPOINT_SUBDOMAIN" , "acme" )
0 commit comments