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

新規会員登録(入力)画面のスロットリング追加 #6038

Merged
merged 29 commits into from
Sep 29, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
29 commits
Select commit Hold shift + click to select a range
8890352
・新規会員登録画面にスロットリングを追加
kentanakayrglm Sep 11, 2023
6e5feac
- パラメータ mode での絞り込み設定を追加
kentanakayrglm Sep 13, 2023
00852f5
mode = confirm は削除
kentanakayrglm Sep 13, 2023
790338d
新規会員登録画面のスロットリング回数初期値 = 25に設定
kentanakayrglm Sep 15, 2023
0d24825
- 閾値変更に伴うE2Eテスト実行回数の修正
kentanakayrglm Sep 15, 2023
1c989ea
E2Eテストの修正
kentanakayrglm Sep 19, 2023
88d3c85
EF0901-UC01-T05_会員登録 でカバーされている為、削除
kentanakayrglm Sep 19, 2023
86bbd89
会員入力時のスロットリング用E2E追加
kentanakayrglm Sep 20, 2023
4dcd7ff
ループ回数調整
kentanakayrglm Sep 20, 2023
8a5a325
不要変数削除。コメント修正。
kentanakayrglm Sep 20, 2023
e985995
回数調整
kentanakayrglm Sep 20, 2023
cdacac4
回数再調整
kentanakayrglm Sep 21, 2023
3914a2b
フォームのアサートを削除
kentanakayrglm Sep 21, 2023
f40f279
会員登録(入力-確認)画面のテスト実行前にキャッシュ削除操作を追加
kentanakayrglm Sep 23, 2023
7007cfc
キャッシュ削除方法を変更
kentanakayrglm Sep 23, 2023
26f28df
会員登録_入力追加
ji-eunsoo Sep 25, 2023
440a387
’を削除
ji-eunsoo Sep 25, 2023
db880d6
entry_completeの上限値を変更
ji-eunsoo Sep 25, 2023
63561f2
会員登録のメソッド名修正
ji-eunsoo Sep 25, 2023
d42c4ff
会員登録のメソッド名修正
ji-eunsoo Sep 25, 2023
9418986
誤字修正
ji-eunsoo Sep 25, 2023
a612b82
インデント修正
ji-eunsoo Sep 25, 2023
c051f1f
2回submitを削除
ji-eunsoo Sep 27, 2023
1b2c796
entryとentry_completeno
ji-eunsoo Sep 27, 2023
25292b4
メソッド名の重複問題を解除
ji-eunsoo Sep 27, 2023
dbd8955
スロットリングの意図をわかるように修正
ji-eunsoo Sep 27, 2023
a82a5d3
フロー確認
ji-eunsoo Sep 28, 2023
148fdcf
不要なmethodを削除
ji-eunsoo Sep 28, 2023
205f580
フォーム入力/同意する/会員登録に分離
ji-eunsoo Sep 28, 2023
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/e2e-test-throttling.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ jobs:
matrix:
php: [ 8.1 ]
db: [ pgsql ]
method: [ フロント画面ログイン_IP, フロント画面ログイン_会員, 管理画面ログイン_IP, 管理画面ログイン_会員, 会員登録, 問い合わせ, パスワード再発行, 注文確認_非会員購入, 注文確認_会員購入, 注文完了_非会員購入, 注文完了_会員購入, 会員情報編集, 配送先情報_追加, 配送先情報_編集, 配送先情報_削除, order_お届け先追加, order_お届け先変更 ]
method: [ フロント画面ログイン_IP, フロント画面ログイン_会員, 管理画面ログイン_IP, 管理画面ログイン_会員, 会員登録, 問い合わせ, パスワード再発行, 注文確認_非会員購入, 注文確認_会員購入, 注文完了_非会員購入, 注文完了_会員購入, 会員情報編集, 配送先情報_追加, 配送先情報_編集, 配送先情報_削除, order_お届け先追加, order_お届け先変更, 新規会員登録_入力 ]
include:
- db: pgsql
database_url: postgres://postgres:[email protected]:5432/eccube_db
Expand Down
8 changes: 7 additions & 1 deletion app/config/eccube/packages/prod/eccube_rate_limiter.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,13 @@ eccube:
type: ip
limit: 5
interval: '30 minutes'
entry:
entry: # 存在しているメールアドレスの確認を防止するためのスロットリング
route: entry
method: [ 'POST' ]
type: ip
limit: 25
interval: '30 minutes'
entry_complete: # 不正な会員登録を防止するためのスロットリング
route: entry
method: [ 'POST' ]
params:
Expand Down
29 changes: 24 additions & 5 deletions codeception/_support/Page/Front/EntryPage.php
Original file line number Diff line number Diff line change
Expand Up @@ -15,11 +15,20 @@

class EntryPage extends AbstractFrontPage
{

private $formData = [];

public function __construct(\AcceptanceTester $I)
{
parent::__construct($I);
}

/**
* @param $I
* @param $id
*
* @return EntryPage
*/
public static function go($I)
{
$page = new self($I);
Expand All @@ -28,11 +37,11 @@ public static function go($I)
return $page;
}

public function 新規会員登録($form = [])
public function フォーム入力($form = [])
{
$this->tester->amOnPage('/entry');
$email = uniqid().microtime(true).'@example.com';

$form += [
'entry[name][name01]' => '姓',
'entry[name][name02]' => '名',
Expand All @@ -49,10 +58,20 @@ public function 新規会員登録($form = [])
'entry[plain_password][second]' => 'password1234',
'entry[user_policy_check]' => '1',
];
$this->tester->submitForm(['css' => '.ec-layoutRole__main form'], $form, ['css' => 'button.ec-blockBtn--action']);
$this->tester->seeInField(['id' => 'entry_email_first'], $form['entry[email][first]']);
$this->tester->click('.ec-registerRole form button.ec-blockBtn--action');
$this->formData = $form;
return $this;
}

public function 同意する()
{
$this->tester->submitForm(['css' => '.ec-layoutRole__main form'], $this->formData, ['css' => 'button.ec-blockBtn--action']);
$this->tester->seeInField(['id' => 'entry_email_first'], $this->formData['entry[email][first]']);
return $this;
}

public function 登録する()
{
$this->tester->click('.ec-registerRole form button.ec-blockBtn--action');
return $this;
}
}
22 changes: 14 additions & 8 deletions codeception/acceptance/EA07BasicinfoCest.php
Original file line number Diff line number Diff line change
Expand Up @@ -98,10 +98,13 @@ public function basicinfo_会員設定_仮会員機能(AcceptanceTester $I)
// 会員登録
$faker = Fixtures::get('faker');
$email = microtime(true).'.'.$faker->safeEmail;
EntryPage::go($I)->新規会員登録([
'entry[email][first]' => $email,
'entry[email][second]' => $email,
]);
EntryPage::go($I)
->フォーム入力([
'entry[email][first]' => $email,
'entry[email][second]' => $email,
])
->同意する()
->登録する();

// 会員ステータスのチェック
$page = CustomerManagePage::go($I);
Expand All @@ -119,10 +122,13 @@ public function basicinfo_会員設定_仮会員機能(AcceptanceTester $I)
// 会員登録
$I->logoutAsMember();
$email = microtime(true).'.'.$faker->safeEmail;
EntryPage::go($I)->新規会員登録([
'entry[email][first]' => $email,
'entry[email][second]' => $email,
]);
EntryPage::go($I)
->フォーム入力([
'entry[email][first]' => $email,
'entry[email][second]' => $email,
])
->同意する()
->登録する();
$I->logoutAsMember();

// 会員ステータスのチェック
Expand Down
32 changes: 28 additions & 4 deletions codeception/acceptance/EF09ThrottlingCest.php
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,8 @@
use Page\Front\ShoppingLoginPage;
use Page\Front\ShoppingNonmemberPage;
use Page\Front\ShoppingPage;
use Page\Front\EntryPage;


/**
* @group throttling
Expand Down Expand Up @@ -138,14 +140,18 @@ public function 会員登録(AcceptanceTester $I)

for ($i = 0; $i < 5; $i++) {
$I->expect('会員登録を行います:'.$i);
\Page\Front\EntryPage::go($I)
->新規会員登録();
EntryPage::go($I)
->フォーム入力()
->同意する()
->登録する();
$I->see('現在、仮会員の状態です。', 'p.ec-reportDescription');
}

$I->expect('試行回数上限を超過します');
\Page\Front\EntryPage::go($I)
->新規会員登録();
EntryPage::go($I)
->フォーム入力()
->同意する()
->登録する();
$I->see('試行回数の上限を超過しました。しばらくお待ちいただき、再度お試しください。', 'p.ec-reportDescription');
}

Expand Down Expand Up @@ -748,4 +754,22 @@ public function order_お届け先変更(AcceptanceTester $I)
$I->wait(1);
$I->see('試行回数の上限を超過しました。しばらくお待ちいただき、再度お試しください。', 'p.ec-reportDescription');
}

public function 新規会員登録_入力(AcceptanceTester $I)
{
$I->wantTo('EF0901-UC01-T18_会員登録_入力');

for ($i = 0; $i < 25; $i++) {
$I->expect('会員登録を行います:'.$i);
EntryPage::go($I)
->フォーム入力()
->登録する();
}

EntryPage::go($I)
->フォーム入力()
->登録する();
$I->see('試行回数の上限を超過しました。しばらくお待ちいただき、再度お試しください。', 'p.ec-reportDescription');
}

}