rpcserverhelp_test.go raw

   1  package chainrpc
   2  
   3  import (
   4  	"testing"
   5  )
   6  
   7  // TestHelp ensures the help is reasonably accurate by checking that every command specified also has result types
   8  // defined and the one-line usage and help text can be generated for them.
   9  func TestHelp(t *testing.T) {
  10  	// Ensure there are result types specified for every handler.
  11  	for k := range RPCHandlers {
  12  		if _, ok := ResultTypes[k]; !ok {
  13  			t.Errorf("RPC handler defined for method '%v' without "+
  14  				"also specifying result types", k,
  15  			)
  16  			continue
  17  		}
  18  	}
  19  	for k := range WSHandlers {
  20  		if _, ok := ResultTypes[k]; !ok {
  21  			t.Errorf("RPC handler defined for method '%v' without "+
  22  				"also specifying result types", k,
  23  			)
  24  			continue
  25  		}
  26  	}
  27  	// Ensure the usage for every command can be generated without errors.
  28  	helpCacher := NewHelpCacher()
  29  	var e error
  30  	if _, e = helpCacher.RPCUsage(true); E.Chk(e) {
  31  		t.Fatalf("Failed to generate one-line usage: %v", e)
  32  	}
  33  	if _, e = helpCacher.RPCUsage(true); E.Chk(e) {
  34  		t.Fatalf("Failed to generate one-line usage (cached): %v", e)
  35  	}
  36  	// Ensure the help for every command can be generated without errors.
  37  	for k := range RPCHandlers {
  38  		if _, e = helpCacher.RPCMethodHelp(k); E.Chk(e) {
  39  			t.Errorf("Failed to generate help for method '%v': %v",
  40  				k, e,
  41  			)
  42  			continue
  43  		}
  44  		if _, e = helpCacher.RPCMethodHelp(k); E.Chk(e) {
  45  			t.Errorf("Failed to generate help for method '%v'"+
  46  				"(cached): %v", k, e,
  47  			)
  48  			continue
  49  		}
  50  	}
  51  	for k := range WSHandlers {
  52  		if _, e = helpCacher.RPCMethodHelp(k); E.Chk(e) {
  53  			t.Errorf("Failed to generate help for method '%v': %v",
  54  				k, e,
  55  			)
  56  			continue
  57  		}
  58  		if _, e = helpCacher.RPCMethodHelp(k); E.Chk(e) {
  59  			t.Errorf("Failed to generate help for method '%v'"+
  60  				"(cached): %v", k, e,
  61  			)
  62  			continue
  63  		}
  64  	}
  65  }
  66