«

POST- /api/M26/staffs/register: Đăng ký tài khoản mới

Không cho phép đăng ký tài khoản có tên đăng nhập hoặc email đã tồn tại trên hệ thống Yêu cầu đối với từng thông tin: - Tên đăng nhập: Tối thiểu 6 ký tự, có cho phép nhập ký tự đặc biệt - Mật khẩu: Tối thiểu 6 ký tự - Email: Phải đúng định dạng email - Số điện thoại: Từ 8-10 ký tự số, nếu bắt đầu bằng ký tự khác 0 thì BE tự động thêm 0 vào đầu chuỗi - Đồng ý điều khoản: Có giá trị true Sau khi đăng ký thành công, tài khoản mới cần đăng nhập vào hệ thống thì mới được thêm vào danh sách khách hàng

Request Body: { "username" (): "diepanh", "name" (): "Nguyễn Diệp Anh", "email" (): "nguyendiepanh@gobiz.vn", "password" (): "654321", "phone" (): "0919910295", "agreePolicy" (): true, "ref": "string" }

  • Trả về status code 200 và Đăng ký tài khoản thành công

    Danh sách khách hàng chưa có tài khoản mới đăng ký thành công do chưa đăng nhập vào hệ thống

    • Given Chưa có tài khoản nào có tên đăng nhập là "<username>"
    • And Chưa có tài khoản nào có email là "<email>"
    • When Request có header là
      X-Tenantm26
    • And Gửi request "POST" đến "/M26/staffs/register" với body
      {
        "username": "${<username>}",
        "name": "<fullname>",
        "email": "${<email>}",
        "password": "<password>",
        "phone": "<phone>",
        "agreePolicy": true,
        "ref": "<ref>"
      }
    • Then Trả về status code 200
    • And Response có body thỏa mãn schema "schemas/register.json"
    • And Thông tin tài khoản "<username>" sau khi đăng ký thành công chưa có trong danh sách khách hàng

    Examples:

    username fullname email password phone ref
    123zozo Chưa nghĩ ra tên nguyendiepanh@gobiz.vn 123456 0919920506
    flashsale Chán không buồn nghĩ tên nguyendiepanh@gmail.com 012345 0123456780 DA0211
    congchuabongbong Công chúa bong bóng congchuabongbong@gmail.com 654321 12345678
    ngoinhahoahong Ngôi nhà hoa hồng ngoinhahoahong@gmail.com @Alo123456changaingheDiepAnh.211 123456789
    lofichill Nhạc Lofi cực chill loficucchill@yahoo.com @Alo123456changaingheDiepAnh211 0234567890
  • Sau khi đăng ký thành công, đăng nhập hệ thống thì mới được thêm vào danh sách khách hàng

    • Given Chưa có tài khoản nào có tên đăng nhập là "vequeantet"
    • And Chưa có tài khoản nào có email là "vequeantet@gobiz.vn"
    • When Request có header là
      X-Tenantm26
    • And Gửi request "POST" đến "/M26/staffs/register" với body
      {
        "username": "${vequeantet}",
        "name": "Hihi Diệp Anh đang test",
        "email": "${vequeantet@gobiz.vn}",
        "password": "654321",
        "phone": "0987654321",
        "agreePolicy": true,
        "ref": "DA0211"
      }
    • And Đăng nhập hệ thống với tài khoản "vequeantet" và mật khẩu "654321"
    • And Gửi yêu cầu lấy token của tài khoản trên hệ thống m1
    • Then Thông tin tài khoản "vequeantet" sau khi đăng ký thành công đã có trong danh sách khách hàng
    • And Hệ thống quản lý đã lưu thông tin mã giới thiệu của khách hàng "vequeantet" là "DA0211"
  • Đăng ký tài khoản thành công với tên đăng nhập từ 6 ký tự trở lên

    • Given Có chuỗi ký tự "***" sinh ngẫu nhiên có độ dài <length> ký tự và không chứa ký tự đặc biệt
    • When Request có header là
      X-Tenantm26
    • And Gửi request "POST" đến "/M26/staffs/register" với body
      {
        "username": "${***}",
        "name": "Hihi Diệp Anh đang test",
        "email": "${***}@gmail.com",
        "password": "654321",
        "phone": "0987654321",
        "agreePolicy": true,
        "ref": "DA0211"
      }
    • Then Trả về status code 200
    • And Response có body thỏa mãn giá trị không phân biệt hoa thường như sau
      {
        "username": "${***}",
        "name": "Hihi Diệp Anh đang test",
        "email": "${***}@gmail.com",
        "phone": "0987654321"
      }

    Examples:

    length
    6
    7
  • Lỗi 400 khi gửi request body có username ít hơn 6 ký tự

    • When Request có header là
      X-Tenantm26
    • And Gửi request "POST" đến "/M26/staffs/register" với body
      {
        "username": "pamiu",
        "name": "Hihi Diệp Anh đang test",
        "email": "pamiu@gmail.com",
        "password": "654321",
        "phone": "0987654321",
        "agreePolicy": true,
        "ref": "DA0211"
      }
    • Then Trả về status code 400
  • Lỗi 400 khi gửi request body có username đã tồn tại

    • Given Đã có khách hàng có tên đăng nhập là "pamiuoi"
    • When Request có header là
      X-Tenantm26
    • And Gửi request "POST" đến "/M26/staffs/register" với body
      {
        "username": "pamiuoi",
        "name": "Chưa nghĩ ra tên",
        "email": "hihihaha@gobiz.vn",
        "phone": "0987654321",
        "password": "123456",
        "agreePolicy": true
      }
    • Then Trả về status code 400
    • And Response có body chứa nội dung
      keyvalue
      detailUser with username 'pamiuoi' already exists
      titleduplicate_user
  • Lỗi 400 khi gửi request body có email đã tồn tại

    • Given Đã có khách hàng có thông tin
      usernameemail
      pamiuoipamiuoi@gobiz.vn
    • And Chưa có tài khoản nào có tên đăng nhập là "username"
    • When Request có header là
      X-Tenantm26
    • And Gửi request "POST" đến "/M26/staffs/register" với body
      {
        "username": "${username}",
        "name": "Chưa nghĩ ra tên",
        "email": "pamiuoi@gobiz.vn",
        "phone": "0987654321",
        "password": "123456",
        "agreePolicy": true,
        "agree1688ShopPolicy": true
      }
    • Then Trả về status code 400
    • And Response có body chứa nội dung
      keyvalue
      detailUser with email 'pamiuoi@gobiz.vn' already exists
      titleduplicate_email
  • Lỗi 400 khi gửi request không có request header

    • Given Chưa có tài khoản nào có tên đăng nhập là "username"
    • And Chưa có tài khoản nào có email là "email"
    • When Gửi request "POST" đến "/M26/staffs/register" với body
      {
        "username": "${username}",
        "name": "Chưa nghĩ ra tên",
        "email": "${email}",
        "phone": "0987654321",
        "password": "123456",
        "agreePolicy": true,
        "agree1688ShopPolicy": true
      
        }
    • Then Trả về status code 400
    • And Response có body chứa nội dung
      keyvalue
      detailRequired header 'X-Tenant' is not present.
      titleBad Request
  • Lỗi 500 khi gửi request với request header sai thông tin X-Tenant

    • Given Chưa có tài khoản nào có tên đăng nhập là "username_bat_ky"
    • When Request có header là
      X-Tenant<tenantCode>
    • And Gửi request "POST" đến "/M26/staffs/register" với body
      {
        "username": "username",
        "name": "Chẳng thích đặt tên",
        "email": "username_bat_ky@gmail.com",
        "password": "123456",
        "phone": "09876543",
        "agreePolicy": true,
        "agree1688ShopPolicy": true
      }
    • Then Trả về status code 500

    Examples:

    tenantCode
    bachhac
  • Lỗi 400 khi gửi request body chứa thông tin Đồng ý điều khoản có giá trị khác true

    • Given Chưa có tài khoản nào có tên đăng nhập là "diepanh"
    • And Chưa có tài khoản nào có email là "nguyendiepanh@gobiz.vn"
    • When Request có header là
      X-Tenantm26
    • And Gửi request "POST" đến "/M26/staffs/register" với body
      {
        "username": "${diepanh}",
        "name": "Nguyễn Diệp Anh",
        "email": "${nguyendiepanh@gobiz.vn}",
        "password": "123456",
        "phone": "0123456780",
        "agreePolicy": "<agreePolicy>",
        "ref": "DA012"
      }
    • Then Trả về status code 400
    • And Response có body thỏa mãn giá trị như sau
      {
        "title": "policy_has_not_agree",
        "detail": "The user has not agreed to the policy"
      }

    Examples:

    agreePolicy
    false
  • Lỗi 400 khi gửi request body để trống thông tin: fullname, password, phone

    • Given Chưa có tài khoản nào có tên đăng nhập là "diepanh"
    • And Chưa có tài khoản nào có email là "nguyendiepanh@gobiz.vn"
    • When Request có header là
      X-Tenantm26
    • And Gửi request "POST" đến "/M26/staffs/register" với body
      {
        "username": "${diepanh}",
        "name": "<fullname>",
        "email": "${nguyendiepanh@gobiz.vn}",
        "password": "<password>",
        "phone": "<phone>",
        "agreePolicy": true,
        "ref": "DA012"
      }
    • Then Trả về status code 400
    • And Response có body thỏa mãn giá trị như sau
      {
        "title": "Constraint Violation",
        "violations": [
          {
              "field": "<field>",
              "message": "<message>"
          }
        ]
      }

    Examples:

    fullname password phone field message
    123456 0123456780 name must not be blank
    Nguyễn Diệp Anh 0123456780 password must not be blank
    Nguyễn Diệp Anh 123456 phone must not be blank
  • Trả status 400 khi gửi request với username, email, phone sai định dạng

    • Given Chưa có tài khoản nào có tên đăng nhập là "diepanh"
    • And Chưa có tài khoản nào có email là "nguyendiepanh@gobiz.vn"
    • When Request có header là
      X-Tenantm26
    • And Gửi request "POST" đến "/M26/staffs/register" với body
      {
        "username": "<username>",
        "name": "Nguyễn Diệp Anh",
        "email": "<email>",
        "password": "123456",
        "phone": "<phone>",
        "agreePolicy": true,
        "ref": "DA012"
      }
    • Then Trả về status code 400
    • And Response có body thỏa mãn giá trị như sau
      {
        "title": "Constraint Violation",
        "violations": [
          {
              "field": "<field>",
              "message": "<message>"
          }
        ]
      }

    Examples:

    username email phone field message
    ${diepanh} nguyendiepanh 0123456780 email Email do not format
    diep.anh ${nguyendiepanh@gobiz.vn} 0123456780 username Username do not format
    ${diepanh} ${nguyendiepanh@gobiz.vn} 1234567890 phone Phone do not format
  • Lỗi 400 khi gửi lên password ít hơn 6 ký tự, hoặc nhiều hơn 32 ký tự

    • Given Chưa có tài khoản nào có tên đăng nhập là "diepanh"
    • And Chưa có tài khoản nào có email là "nguyendiepanh@gobiz.vn"
    • When Request có header là
      X-Tenantm26
    • And Gửi request "POST" đến "/M26/staffs/register" với body
      {
        "username": "${diepanh}",
        "name": "Nguyễn Diệp Anh",
        "email": "${nguyendiepanh@gobiz.vn}",
        "password": "<password>",
        "phone": "0123456780",
        "agreePolicy": true,
        "ref": "DA012"
      }
    • Then Trả về status code 400
    • And Response có body thỏa mãn giá trị như sau
      {
        "title": "Constraint Violation",
        "violations": [
          {
              "field": "password",
              "message": "size must be between 6 and 32"
          }
        ]
      }

    Examples:

    password
    12345
    @Alo123456changaingheDiepAnh.0211
  • Lỗi 400 khi gửi request body với username null

    • Given Chưa có tài khoản nào có email là "email"
    • When Request có header là
      X-Tenantm26
    • And Gửi request "POST" đến "/M26/staffs/register" với body
      {
        "username": "<username>",
        "name": "Chưa nghĩ ra tên",
        "email": "${email}",
        "password": "123456",
        "phone": "0987654321",
        "agreePolicy": true,
        "agree1688ShopPolicy": true
      }
    • Then Trả về status code 400
    • And Response có body thỏa mãn giá trị như sau
      {
        "title": "Constraint Violation",
        "violations": [
          {
              "field": "username",
              "message": "<message>"
          }
        ]
      }

    Examples:

    username message
    must not be blank
    null Username do not format
  • Lỗi 400 khi gửi request body với email null

    • Given Chưa có tài khoản nào có tên đăng nhập là "username"
    • When Request có header là
      X-Tenantm26
    • And Gửi request "POST" đến "/M26/staffs/register" với body
      {
        "username": "${username}",
        "name": "Chưa nghĩ ra tên",
        "email": "<email>",
        "password": "123456",
        "phone": "0987654321",
        "agreePolicy": true,
        "agree1688ShopPolicy": true
      }
    • Then Trả về status code 400
    • And Response có body thỏa mãn giá trị như sau
      {
        "title": "Constraint Violation",
        "violations": [
          {
              "field": "email",
              "message": "<message>"
          }
        ]
      }

    Examples:

    email message
    must not be blank
    null Email do not format