[TIL]Django Westagram:ログイン、会員加入エラーテスト


1. Sign up Errors


1-1. INVALID_EMAIL, 400


電子メールに@が添付されていない場合.
http -v POST 127.0.0.1:8000/user/signup email='jene0000gmail.com' 
nickname='jene0000' password='00000000' phone='010-1111-2222'
結果:
HTTP/1.1 400 Bad Request
...
{
    "message": "INVALID_EMAIL"
}

1-2. INVALID_PASSWORD, 400


今回はパスワードが8文字以下でない場合に7文字加算してエラーが発生した場合です.
http -v POST 127.0.0.1:8000/user/signup email='[email protected]' 
nickname='jene0000' password='0000000' phone='010-1111-2222'
結果:
HTTP/1.1 400 Bad Request
...
{
    "message": "INVALID_PASSWORD"
}

1-3. INVALID_PHONE, 400


今回は、携帯電話番号が###-##################################################################
http -v POST 127.0.0.1:8000/user/signup email='[email protected]' 
nickname='jene0000' password='00000000' phone='01011112222'
結果:
HTTP/1.1 400 Bad Request
{
    "message": "INVALID_PHONE"
}

1-4.USER_ALREADY_EXISTS, 409


今回は既存の携帯電話番号で会員に加入してみました.
http -v POST 127.0.0.1:8000/user/signup email='[email protected]' 
nickname='jene1111' password='00000000' phone='010-1111-2222'
結果:
HTTP/1.1 409 Conflict
{
    "message": "USER_ALREADY_EXISTS"
}

1-5. NICKNAME_ALREADY_EXISTS, 409


既存のニックネームで会員に加入してみます.
上のニックネーム=「jee 0000」はすでにアカウントを作成しており、他の情報は異なり、同じニックネームしか試していません.
http -v POST 127.0.0.1:8000/user/signup email='[email protected]' 
nickname='jene0000' password='00000001' phone='010-1111-3333'
結果:
HTTP/1.1 409 Conflict
{
    "message": "NICKNAME_ALREADY_EXISTS"
}

1-6. KEY_ERROR, 400


今回はphone、passwordは全然入っていません.この二つは必須で、入れなければなりません.
http -v POST 127.0.0.1:8000/user/signup email='[email protected]' 
nickname='jene0000'
結果:
HTTP/1.1 409 Conflict
{
    "message": "KEY_ERROR"
}

2. Sign In Errors


2-0. SUCCESS, 200


私のコードはニックネーム、phone、emailの3つの中で1つだけ入力して、正しいパスワードを入力してログインすることができます.(実際Instagramはそうでした.)
http -v POST 127.0.0.1:8000/user/signin email='jene0000gmail.com' 
password='00000000' 
結果:
HTTP/1.1 200 OK
{
    "message": "SUCCESS",
    "token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJlbWFpbCI6ImplbmUwMDAwQGdtYWlsLmNvbSJ9.Wfmx706jYJoA-7SYy2fOEmLl1iMAXAWlLFL48cEYwEI"
}
コイン発行もいいです.

2-1. INVALID USER,401(ニックネームなし)


存在しないニックネーム「jee 1111」でログインしてみます.
http -v POST 127.0.0.1:8000/user/signin nickname='jene1111' 
password='00000000'
結果:
HTTP/1.1 401 Unauthorized
{
    "message": "INVALID_USER"
}

2-2. INVALID USER,401(誤ったパスワード)


パスワードは「00000000」で、「00000000 11」を試した結果です.
http -v POST 127.0.0.1:8000/user/signin nickname='jene0000' 
password='00000011'
結果:
HTTP/1.1 401 Unauthorized
{
    "message": "INVALID_USER"
}

2-3. KEY_ERROR, 400


先ほど、ログインはニックネーム、phone、emailの3つに1つだけ入力し、正しいパスワードを入力すれば実現しました.
しかしパスワードは必須です.
パスワードを入力しない場合は、どうすればいいですか?
http -v POST 127.0.0.1:8000/user/signin nickname='jene0000' 
結果:
HTTP/1.1 401 Unauthorized
{
    "message": "KEY_ERROR"
}

3.コードエラー...500....



3-1. Data too long for column

    _mysql.connection.query(self, query)
django.db.utils.DataError: (1406, "Data too long for column 'phone' at row 1")
[02/Feb/2021 23:53:13] "POST /user/signup HTTP/1.1" 500 189153
さっきこの間違いを見て慌てました.
これは一体何なのか、やったのに、もちろん私のせい^^.
私は会員入学試験の電話番号を:
# http -v POST ... 
phone='010-1111-2222'
私のモデル.pyでは、番号間の-(ハイフン)をmax length=11に設定してしまいました.
だから次のように変更しました.
# models.py
phone = models.CharField(null=True, max_length=15)

3-2. jwt.exceptions.DecodeError:

>>> import jwt
>>> SECRET = 'secret'

>>> access_token = jwt.encode({'user' : 1}, SECRET, algorithm = 'HS256')

....

raise DecodeError(
jwt.exceptions.DecodeError: It is required that you pass in a value for the "algorithms" argument when calling decode().
この間違いは何ですか?どうして私に...でも.
アルゴリズムじゃなくアルゴリズム!^^...
>>> access_token = jwt.encode({'user' : 1}, SECRET, algorithms = 'HS256')

の最後の部分


もしあなたがまた実験したり、楽楽を経験したりしたら、私はまたこの文章を更新します!