github.com/unirita/cuto@v0.9.8-0.20160830082821-aa6652f877b7/message/response_test.go (about)

     1  package message
     2  
     3  import "testing"
     4  
     5  func TestResponse_実行結果メッセージをパースできる(t *testing.T) {
     6  	message := `{
     7      "type":"response",
     8  	"version":"1.2.3",
     9  	"nid":1234,
    10  	"jid":"job1",
    11      "rc":10,
    12  	"stat":2,
    13  	"detail":"something",
    14  	"var":"somevalue",
    15  	"st":"2015-03-26 13:21:15.000",
    16  	"et":"2015-03-26 19:21:36.000"
    17  }`
    18  
    19  	var res Response
    20  	err := res.ParseJSON(message)
    21  	if err != nil {
    22  		t.Fatalf("想定外のエラーが発生しました: %s", err)
    23  	}
    24  
    25  	if res.Version != `1.2.3` {
    26  		t.Errorf("取得したversionの値が違います: %s", res.Version)
    27  	}
    28  	if res.NID != 1234 {
    29  		t.Errorf("取得したnidの値が違います: %d", res.NID)
    30  	}
    31  	if res.JID != `job1` {
    32  		t.Errorf("取得したjidの値が違います: %s", res.JID)
    33  	}
    34  	if res.RC != 10 {
    35  		t.Errorf("取得したrcの値が違います: %d", res.RC)
    36  	}
    37  	if res.Stat != 2 {
    38  		t.Errorf("取得したstatの値が違います: %d", res.Stat)
    39  	}
    40  	if res.Detail != `something` {
    41  		t.Errorf("取得したdetailの値が違います: %s", res.Detail)
    42  	}
    43  	if res.Var != `somevalue` {
    44  		t.Errorf("取得したvarの値が違います: %s", res.Var)
    45  	}
    46  	if res.St != `2015-03-26 13:21:15.000` {
    47  		t.Errorf("取得したstの値が違います: %s", res.St)
    48  	}
    49  	if res.Et != `2015-03-26 19:21:36.000` {
    50  		t.Errorf("取得したetの値が違います: %s", res.Et)
    51  	}
    52  }
    53  
    54  func TestResponse_JSON文字列としてパースできない場合はエラーとする(t *testing.T) {
    55  	message := `
    56      "type":"response",
    57  	"version":"1.2.3",
    58  	"nid":1234,
    59  	"jid":"job1",
    60      "rc":10,
    61  	"stat":2,
    62  	"detail":"something",
    63  	"var":"somevalue",
    64  	"st":"2015-03-26 13:21:15.000",
    65  	"et":"2015-03-26 19:21:36.000"
    66  }`
    67  
    68  	var res Response
    69  	err := res.ParseJSON(message)
    70  
    71  	if err == nil {
    72  		t.Error("発生すべきエラーが発生しませんでした。")
    73  	}
    74  }
    75  
    76  func TestResponse_メッセージタイプが違う場合はエラーとする(t *testing.T) {
    77  	message := `{
    78  	"type":"somthingelse",
    79  	"version":"1.2.3",
    80  	"nid":1234,
    81  	"jid":"job1",
    82      "rc":10,
    83  	"stat":2,
    84  	"detail":"something",
    85  	"var":"somevalue",
    86  	"st":"2015-03-26 13:21:15.000",
    87  	"et":"2015-03-26 19:21:36.000"
    88  }`
    89  
    90  	var res Response
    91  	err := res.ParseJSON(message)
    92  
    93  	if err == nil {
    94  		t.Error("発生すべきエラーが発生しませんでした。")
    95  	}
    96  }
    97  
    98  func TestResponse_プロパティ値からJSONメッセージを生成できる(t *testing.T) {
    99  	ServantVersion = "1.2.3"
   100  
   101  	var res Response
   102  	res.NID = 1234
   103  	res.JID = `job1`
   104  	res.RC = 10
   105  	res.Stat = 2
   106  	res.Detail = `something`
   107  	res.Var = `somevalue`
   108  	res.St = `2015-03-26 13:21:15.000`
   109  	res.Et = `2015-03-26 19:21:16.000`
   110  	res.JoblogFile = `abc.log`
   111  
   112  	msg, err := res.GenerateJSON()
   113  
   114  	if err != nil {
   115  		t.Fatalf("想定外のエラーが発生しました: %s", err)
   116  	}
   117  
   118  	expect := `{"type":"response","version":"1.2.3","nid":1234,"jid":"job1","rc":10,"stat":2,"detail":"something","var":"somevalue","st":"2015-03-26 13:21:15.000","et":"2015-03-26 19:21:16.000","joblogfile":"abc.log"}`
   119  	if msg != expect {
   120  		t.Error("生成されたJSONメッセージが想定値と違います")
   121  		t.Logf("生成値: %s", msg)
   122  		t.Logf("想定値: %s", expect)
   123  	}
   124  }