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 | 	Opts config.Options | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | type instanceInfo struct { | ||||||
|  | 	InstanceName string `json:"instance_name"` | ||||||
|  | 	AllowAnon    bool   `json:"allow_anon"` | ||||||
|  | 	Admins       []string | ||||||
|  | } | ||||||
|  | 
 | ||||||
| func (a *API) InstanceInfo() (*BBJResponse, error) { | func (a *API) InstanceInfo() (*BBJResponse, error) { | ||||||
| 	type instanceInfo struct { |  | ||||||
| 		InstanceName string `json:"instance_name"` |  | ||||||
| 		AllowAnon    bool   `json:"allow_anon"` |  | ||||||
| 		Admins       []string |  | ||||||
| 	} |  | ||||||
| 	return &BBJResponse{ | 	return &BBJResponse{ | ||||||
| 		Data: instanceInfo{ | 		Data: instanceInfo{ | ||||||
| 			InstanceName: a.Opts.Config.InstanceName, | 			InstanceName: a.Opts.Config.InstanceName, | ||||||
|  | |||||||
| @ -1,35 +1,77 @@ | |||||||
| package api | package api | ||||||
| 
 | 
 | ||||||
| import ( | import ( | ||||||
|  | 	"bufio" | ||||||
|  | 	"bytes" | ||||||
|  | 	"fmt" | ||||||
|  | 	"os" | ||||||
|  | 	"reflect" | ||||||
| 	"testing" | 	"testing" | ||||||
| 
 | 
 | ||||||
| 	"git.tilde.town/tildetown/bbj2/server/cmd/config" | 	"git.tilde.town/tildetown/bbj2/server/cmd/config" | ||||||
| ) | ) | ||||||
| 
 | 
 | ||||||
| func TestInstanceInfo(t *testing.T) { | 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 { | 	ts := []struct { | ||||||
| 		name     string | 		name     string | ||||||
| 		opts     config.Options | 		opts     config.Options | ||||||
| 		wantResp *BBJResponse | 		wantData instanceInfo | ||||||
| 		wantErr  *HTTPError | 		wantErr  *HTTPError | ||||||
| 	}{} | 	}{ | ||||||
|  | 		{ | ||||||
|  | 			name: "basic", | ||||||
|  | 			opts: defaultOptions, | ||||||
|  | 			wantData: instanceInfo{ | ||||||
|  | 				InstanceName: "cool test zone", | ||||||
|  | 				AllowAnon:    true, | ||||||
|  | 				Admins:       []string{"jillValentine", "rebeccaChambers"}, | ||||||
|  | 			}, | ||||||
|  | 		}, | ||||||
|  | 	} | ||||||
| 
 | 
 | ||||||
| 	for _, tt := range ts { | 	for _, tt := range ts { | ||||||
| 		t.Run(tt.name, func(t *testing.T) { | 		t.Run(tt.name, func(t *testing.T) { | ||||||
| 			api := &API{ | 			api := &API{ | ||||||
| 				Opts: config.Options{ | 				Opts: tt.opts, | ||||||
| 					// TODO |  | ||||||
| 				}, |  | ||||||
| 				User: nil, |  | ||||||
| 			} | 			} | ||||||
| 			resp, err := api.InstanceInfo() | 			resp, err := api.InstanceInfo() | ||||||
| 			if tt.wantErr != nil && err != nil { | 			if tt.wantErr != nil && err != nil { | ||||||
| 				t.Errorf("got unwanted error: %s", err.Error()) | 				t.Errorf("got unwanted error: %s", err.Error()) | ||||||
| 				return | 				return | ||||||
| 			} | 			} | ||||||
| 			if tt.wantResp != resp { | 			ii, ok := resp.Data.(instanceInfo) | ||||||
| 				t.Errorf("wanted %#v got %#v", tt.wantResp, resp) | 			if !ok { | ||||||
| 				return | 				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