black jumbodogの新機能(webapi)~自動テストにおけるsmtpモックとして

24
2013.10.19 CLR/H #85 自動テストにおけるSMTPモックとして BlackJumboDogWebAPI

Upload: sin-furuya02

Post on 01-Jul-2015

1.284 views

Category:

Technology


2 download

TRANSCRIPT

Page 1: Black jumbodogの新機能(webapi)~自動テストにおけるsmtpモックとして

2013.10.19 CLR/H #85

自動テストにおけるSMTPモックとして

BlackJumboDogのWebAPI

Page 2: Black jumbodogの新機能(webapi)~自動テストにおけるsmtpモックとして

自己紹介

識別子 SIN/札幌ワークス

Twitter @furuya02

仕事 某社でシステムサポート

スタッフ CLR/H

Microsoft MVP for Visual C# (2013/1~)

Page 3: Black jumbodogの新機能(webapi)~自動テストにおけるsmtpモックとして

BlackJumboDogによるテスト自動化メール送信機能の自動テストに使用する

テスト対象プロダクト

テスト実行

//verifyAsertThat(actual,expected)

SMTP

WebAPI

//exercisevar actual = sut.mailsend()

Page 4: Black jumbodogの新機能(webapi)~自動テストにおけるsmtpモックとして

SMTPサーバを起動「オプション」-「メールサーバ」-「SMTPサーバ」

Page 5: Black jumbodogの新機能(webapi)~自動テストにおけるsmtpモックとして

ユーザ設定「オプション」-「メールサーバ」-「メールボックス」

Page 6: Black jumbodogの新機能(webapi)~自動テストにおけるsmtpモックとして

他ドメイン宛のメールをキューに保持する「キュー常時処理」のチェックを外すと、外部への転送はされない

Page 7: Black jumbodogの新機能(webapi)~自動テストにおけるsmtpモックとして

WebAPIサーバを起動「オプション」-「WebAPIサーバ」

Page 8: Black jumbodogの新機能(webapi)~自動テストにおけるsmtpモックとして

WebAPIサーバを使用するデフォルトでポートは5050

Page 9: Black jumbodogの新機能(webapi)~自動テストにおけるsmtpモックとして

http://localhost:5050/messageJSON形式でデータ取得できます

Page 10: Black jumbodogの新機能(webapi)~自動テストにおけるsmtpモックとして

BlackJumboDogのメールボックス構造自ドメイン宛のメールは各ユーザ、他ドメイン宛のメールはキューに溜まる

user1 user2 mqueue

example.com 他ドメイン

Page 11: Black jumbodogの新機能(webapi)~自動テストにおけるsmtpモックとして

パラメータ owner特定のユーザのメールのみを取得の対象とする

user1 user2

Example.com 他ドメイン

GET /mail/message //指定が無ければ全部GET /mail/message?owner=user1 //user1のみGET /mail/message?owner=user1,user2 //user1及びuser2GET /mail/message?owner=mqueue //mqueueのみ

mqueue

Page 12: Black jumbodogの新機能(webapi)~自動テストにおけるsmtpモックとして

フィールド指定(date)data指定で日付

http://localhost:5050/mail/message?Fields=date&limit=1

{"data":[{“date":"Fri, 20 Sep 2013 04:50:43 +0900“

},]}

Page 13: Black jumbodogの新機能(webapi)~自動テストにおけるsmtpモックとして

フィールド指定(size)size指定でメールのサイズ

http://localhost:5050/mail/message?Fields=size&limit=3

{"data":[{“size":593

},{“size":591

},{“size":587

},]}

Page 14: Black jumbodogの新機能(webapi)~自動テストにおけるsmtpモックとして

フィールド指定(from,to)fromで送信者、toで受信者

http://localhost:5050/mail/message?Fields=from,to&owner=mqueue

{"data":[{

"from":"[email protected]","to":“[email protected]

},{

"from":"[email protected]","to":“[email protected]"

}]}

Page 15: Black jumbodogの新機能(webapi)~自動テストにおけるsmtpモックとして

フィールド指定fields=

subject 件名date 日付size サイズfrom 送信者to 受信者all メール全部body 本文uid UIDfilename ファイル名

Fieldsの指定が無い場合は、subjectのみが指定される

Page 16: Black jumbodogの新機能(webapi)~自動テストにおけるsmtpモックとして

パラメータ limit指定した件数以上は取得しない

http://localhost:5050/mail/message

{"data":[{

"subject":"テストメール(その1)“},{

"subject":"テストメール(その2)“},{

"subject":"テストメール(その4)“}

{“subject”:“テストメール(その5)“

}{

“subject”:“テストメール(その6)“}

{“subject”:“テストメール(その7)“

http://localhost:5050/mail/message?limit=2

{"data":[{

"subject":"テストメール(その1)“},{

"subject":"テストメール(その2)“},

]}

Page 17: Black jumbodogの新機能(webapi)~自動テストにおけるsmtpモックとして

メール削除(Delete)パラメータのowner及びlimitが使用可能

DELETE /mail/message //指定が無ければ全部削除DELETE /mail/message?owner=user1 //user1のみ削除DELETE /mail/message?owner=user1,user2 //user1及びuser2削除DELETE /mail/message?owner=mqueue //mqueueのみ削除

DELETE /mail/message?limit=30 //最大30件を削除

Page 18: Black jumbodogの新機能(webapi)~自動テストにおけるsmtpモックとして

サーバコントロールSMTPサーバの動作の制御

PUT /mail/control?service=start //メールサーバ起動PUT /mail/control?service=stop //メールサーバ停止

PUT /mail/control?init //すべてのコントロールの初期化

Page 19: Black jumbodogの新機能(webapi)~自動テストにおけるsmtpモックとして

レスポンス制御SMTPサーバの応答コードを制御

PUT /mail/response?mail=450 //MAILコマンドに対し450を返すPUT /mail/response?rcpt=452 //RCPTコマンドに対し452を返す

PUT /mail/response?mail=450&rcpt=452 //複数指定可能

PUT /mail/response?init //すべてのレスポンス制御の初期化

Page 20: Black jumbodogの新機能(webapi)~自動テストにおけるsmtpモックとして

テストのためのWebAPIのテストコードがっつりTDDで作成されてます。色々な拡張要望に耐えれると思います。

Page 21: Black jumbodogの新機能(webapi)~自動テストにおけるsmtpモックとして

WebAPIのACLは必須WebAPIの解放は危険すぎます

Page 22: Black jumbodogの新機能(webapi)~自動テストにおけるsmtpモックとして

メールはV6対応無駄にWebAPIもIPv6対応

Page 23: Black jumbodogの新機能(webapi)~自動テストにおけるsmtpモックとして

DNSサーバMXも引けるので、実環境のFQDNでテストできます

Page 24: Black jumbodogの新機能(webapi)~自動テストにおけるsmtpモックとして

ご清聴ありがとうございました

札幌ワークス

http://www.sapporoworks.ne.jp/spw