forked from tildetown/bbj2
		
	simple test for InstanceInfo
This commit is contained in:
		
							parent
							
								
									6dc8964dd6
								
							
						
					
					
						commit
						e1211c8d6f
					
				| @ -27,12 +27,13 @@ type API struct { | ||||
| 	Opts config.Options | ||||
| } | ||||
| 
 | ||||
| func (a *API) InstanceInfo() (*BBJResponse, error) { | ||||
| type instanceInfo struct { | ||||
| 	InstanceName string `json:"instance_name"` | ||||
| 	AllowAnon    bool   `json:"allow_anon"` | ||||
| 	Admins       []string | ||||
| } | ||||
| 
 | ||||
| func (a *API) InstanceInfo() (*BBJResponse, error) { | ||||
| 	return &BBJResponse{ | ||||
| 		Data: instanceInfo{ | ||||
| 			InstanceName: a.Opts.Config.InstanceName, | ||||
|  | ||||
| @ -1,35 +1,77 @@ | ||||
| package api | ||||
| 
 | ||||
| import ( | ||||
| 	"bufio" | ||||
| 	"bytes" | ||||
| 	"fmt" | ||||
| 	"os" | ||||
| 	"reflect" | ||||
| 	"testing" | ||||
| 
 | ||||
| 	"git.tilde.town/tildetown/bbj2/server/cmd/config" | ||||
| ) | ||||
| 
 | ||||
| func TestInstanceInfo(t *testing.T) { | ||||
| 	stderr := []byte{} | ||||
| 	stdout := []byte{} | ||||
| 	testIO := config.IOStreams{ | ||||
| 		Err: bufio.NewWriter(bytes.NewBuffer(stderr)), | ||||
| 		Out: bufio.NewWriter(bytes.NewBuffer(stdout)), | ||||
| 	} | ||||
| 	dbFile, err := os.CreateTemp("", "bbj2-test") | ||||
| 	if err != nil { | ||||
| 		t.Fatalf("failed to make test db: %s", err.Error()) | ||||
| 	} | ||||
| 	defaultOptions := config.Options{ | ||||
| 		IO:  testIO, | ||||
| 		Log: func(s string) { fmt.Fprintln(testIO.Out, s) }, | ||||
| 		Logf: func(s string, args ...interface{}) { | ||||
| 			fmt.Fprintf(testIO.Out, s, args...) | ||||
| 			fmt.Fprintln(testIO.Out) | ||||
| 		}, | ||||
| 		Config: config.Config{ | ||||
| 			Admins:       []string{"jillValentine", "rebeccaChambers"}, | ||||
| 			Port:         666, | ||||
| 			Host:         "hell.cool", | ||||
| 			InstanceName: "cool test zone", | ||||
| 			AllowAnon:    true, | ||||
| 			DBPath:       dbFile.Name(), | ||||
| 		}, | ||||
| 	} | ||||
| 	ts := []struct { | ||||
| 		name     string | ||||
| 		opts     config.Options | ||||
| 		wantResp *BBJResponse | ||||
| 		wantData instanceInfo | ||||
| 		wantErr  *HTTPError | ||||
| 	}{} | ||||
| 	}{ | ||||
| 		{ | ||||
| 			name: "basic", | ||||
| 			opts: defaultOptions, | ||||
| 			wantData: instanceInfo{ | ||||
| 				InstanceName: "cool test zone", | ||||
| 				AllowAnon:    true, | ||||
| 				Admins:       []string{"jillValentine", "rebeccaChambers"}, | ||||
| 			}, | ||||
| 		}, | ||||
| 	} | ||||
| 
 | ||||
| 	for _, tt := range ts { | ||||
| 		t.Run(tt.name, func(t *testing.T) { | ||||
| 			api := &API{ | ||||
| 				Opts: config.Options{ | ||||
| 					// TODO | ||||
| 				}, | ||||
| 				User: nil, | ||||
| 				Opts: tt.opts, | ||||
| 			} | ||||
| 			resp, err := api.InstanceInfo() | ||||
| 			if tt.wantErr != nil && err != nil { | ||||
| 				t.Errorf("got unwanted error: %s", err.Error()) | ||||
| 				return | ||||
| 			} | ||||
| 			if tt.wantResp != resp { | ||||
| 				t.Errorf("wanted %#v got %#v", tt.wantResp, resp) | ||||
| 				return | ||||
| 			ii, ok := resp.Data.(instanceInfo) | ||||
| 			if !ok { | ||||
| 				t.Errorf("could not cast data in %s", tt.name) | ||||
| 			} | ||||
| 
 | ||||
| 			if !reflect.DeepEqual(ii, tt.wantData) { | ||||
| 				t.Errorf("did not get expected data in %s", tt.name) | ||||
| 			} | ||||
| 		}) | ||||
| 	} | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user