Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

APIの実装をする #31

Closed
4 of 5 tasks
halsk opened this issue Jan 11, 2021 · 5 comments
Closed
4 of 5 tasks

APIの実装をする #31

halsk opened this issue Jan 11, 2021 · 5 comments
Labels
help wanted Extra attention is needed

Comments

@halsk
Copy link
Member

halsk commented Jan 11, 2021

Issueとして立てました。

前回から進んだこと。

  • jest を使って、e2e テストを先に書くことにした。(まだ途中)
  • テスト用に、db の初期化や authentication 系のコードを追加した
  • sls offline で、lambda をローカル実行できるようにした(DEVELOPMENT.md を参照のこと)

e2e テストシナリオ

実装しようとしているテストシナリオは下記。ユニットテストはとりあえず後回し。--runInBand で逐次実行する。
テストケースが一通り書ければ、作業分担がしやすくなる。
リファクタリングもやりやすい。

  • truncate tables
  • anonymous で API を叩く。 /get/centers 等の一部のコマンド以外はエラーになることを確認
  • admin user でログインできることを確認
  • admin user の IdToken を Authorization ヘッダにセットして、下記を実行
    • center への get/post/put 操作
    • patient への get/post/put 操作
    • nurse の登録操作(Cognito でユーザを作る)
    • status の get/put 操作
  • 前段階のテストで作成した nurse アカウントでログインできることを確認
  • nurse user の IdToken を Authorization ヘッダにセットして、下記を実行
    • admin 系の操作ができないこと
    • patient の get/post/put 操作
    • status の get/put 操作
  • 前段階のテストで作成した patient アカウントでログインできることを確認
  • patient user の IdToken を Authorization ヘッダにセットして、下記を実行
    • admin/nurse 系の操作ができないこと
    • status の get/post/delete 操作
  • truncate tables

残作業(プライオリティ高い順)

  • テストシナリオの残りを書く(とりあえず期待する動作のみで中身は書かない)
  • ユーザ登録まわりの処理を書く(そうしないと nurse とかのコードが書けない)
  • 残りの処理を書く(現在は /admin/ の一部しか無い)
  • リファクタリング
  • ユニットテストを書く

何かおかしいところ

デプロイ後、lambda が実行できなくなるときがある。こちらの手順 で直る。

誰かに見て欲しいところ

serverless.yml の書き方が美しくない気がする。
特に、API Gateway の CLIENT_POOL を設定するために2回デプロイしているところ。更に、手動で deploy api しないとその情報が反映されないので不便。 #50 で解決。

@ghost
Copy link

ghost commented Jan 31, 2021

@halsk さん
お忙しいところ大変恐縮です。(PRのマージありがとうございました。)
お時間があるときで構いませんので本Issueについて1点、ご確認をさせてください。

残作業(プライオリティ高い順)

に挙げていただいている項目で今、何かお手伝いできることはありますでしょうか?
私自身、TypeScriptを用いたLambda実装の経験はありますので何かあればと
考えています。

もしAPI実装であればPRの単位・含めるものなどを提示いただけると幸いです。

特にアサインできるものは今のところないということでしたら大丈夫です。
よろしくお願いいたします。

@halsk
Copy link
Member Author

halsk commented Jan 31, 2021

@kE-sakai さん、ありがとうございます!!!

先程、一通りのテストを skip 状態にしてpush しました。今 skip にしている部分を実装していっていただけると大変助かります。
特に、以下の Status 系です。
image
これができると、クライアント側で接続が開始できます。

それぞれ、実装単位で Issue を作ってもらえると嬉しいです。(lambda 一つに 1 Issueくらいだとちょうど良いかも)

仕様については、Swagger UI をご確認いただけると良いかと思います。

不明点も多いと思うので、随時聞いて頂けると助かります!

@halsk
Copy link
Member Author

halsk commented Feb 1, 2021

なお、かぶってしまうと困るので、実装を始めるときには、Issueを立てて開発に入る旨宣言いただくと嬉しいです。(私もこれからそうします)

@ghost
Copy link

ghost commented Feb 1, 2021

@halsk さん
ご返信ありがとうございます。

優先度ならびに開発ルールについては承知いたしました。
API仕様書を確認後、まずstatus系のうち1つAPI実装のIssueを作成して着手させていただきます。

不明点も多いと思うので、随時聞いて頂けると助かります!

ありがとうございます。
適宜ご質問・認識合わせなどをさせていただればと思います。

@halsk
Copy link
Member Author

halsk commented Mar 7, 2021

追加の修正はあるものの、一旦は修了しているので、この Issue はクローズします。

@halsk halsk closed this as completed Mar 7, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
help wanted Extra attention is needed
Projects
None yet
Development

No branches or pull requests

1 participant