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 }