Azure / Azure/static-web-apps-cli
Wildcard routes aren't supported properly in config
- Ngôn ngữ chính
- TypeScript
- Star
- 668
- Fork
- 156
- Chỉ số merge pull request
- Không có pull request nào được merge trong 30 ngày
Mô tả
I have a `staticwebapp.config.json` with a route defined as follows:
```json
{
"routes": [
{
"route": "/manage*",
"allowedRoles": ["authenticated"]
}
]
}
```
While this is how you should match a path [per the docs](https://learn.microsoft.com/azure/static-web-apps/configuration#wildcards), the CLI doesn't correctly generate the regex required to do the wildcard matching, it generates `/^\/manage*$/` not `/^\/manage.*$/` (not the missing `.` to indicate the any character after match). There also isn't a test case to cover this in the `glob.spec.ts` tests.
You can see the failure to find it appropriately looking at the output in the `silly` logging (it's about a dozen lines down):
```
[swa] --------------------------------------------------------
[swa] ------------------- processing route -------------------
[swa] --------------------------------------------------------
[swa] processing /manage/events
[swa] checking for matching route
[swa] check if request match route
[swa] - route: /manage*
[swa] - wildcard: true
[swa] checking wildcard route
[swa] - glob: /manage*
[swa] - pathBeforeWildcard: /manage
[swa] checking if glob expression is valid
[swa] - glob: /manage*
[swa] - glob ends with *. Return true
[swa] - route regexp: /manage*
[swa] turning glob expression into valid RegExp
[swa] - glob: /manage*
[swa] - regexp: /^\/manage*$/
[swa] - isMatch: false
[swa] - alternateRequestPath: /manage/events/index.html
[swa] checking wildcard route
[swa] - glob: /manage*
[swa] - pathBeforeWildcard: /manage
[swa] checking if glob expression is valid
[swa] - glob: /manage*
[swa] - glob ends with *. Return true
[swa] - route regexp: /manage*
[swa] turning glob expression into valid RegExp
[swa] - glob: /manage*
[swa] - regexp: /^\/manage*$/
[swa] - isMatch: false
[swa] checking auth request
[swa] - not an auth request
[swa] checking function request
[swa] - not a function request
[swa] checking data-api request
[swa] - not a data Api request
[swa] checking HTTP method: GET
[swa] - method is valid (allow-list: GET,HEAD,OPTIONS)
[swa] checking for query params
[swa] checking rewrite auth login request
[swa] checking rewrite auth logout request
[swa] checking authorizations for route
[swa] - no matching rule
[swa] - access authorized
[swa] using userConfig
[swa] - userConfig:
[swa] - routes:
[swa] - 0:
[swa] - route: /manage*
[swa] - allowedRoles:
[swa] - 0: authenticated
[swa] - responseOverrides:
[swa] - 401:
[swa] - rewrite: /
[swa] - statusCode: 200
[swa] checking storage content
[swa] remote dev server detected.
[swa] - url: /manage/events
[swa] - target: http://localhost:5175
[swa] customUrl: false
[swa] is4xx: false
[swa] remote dev server detected. Proxying request
[swa] - url: /manage/events
[swa] - code: 200
[swa] GET http://localhost:5175/manage/events (proxy)
[swa] Connected to tcp:127.0.0.1:5175 successfully
[swa] http://localhost:5175 validated successfully
[swa] Connected to tcp:localhost:5175 successfully
[swa] getting response from dev server
[swa] GET http://localhost:5176/manage/events - 200
```
Hướng dẫn đóng góp
Hướng nghiên cứu
Bắt đầu với mã chuyển đổi wildcard được các bài kiểm thử glob.spec.ts đã đề cập bao phủ, sau đó tái hiện trường hợp /manage* đối với /manage/events. Thêm một bài kiểm thử hồi quy cho mẫu route và xác minh hành vi match được tạo ra cùng toàn bộ bộ kiểm thử glob.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Đánh giá
- Công nghệ
- typescript
- Lĩnh vực
- cli
- Loại issue
- Lỗi
- Độ khó
- 2/5
- Thời gian dự kiến
- 1-3 giờ
- Mức độ hoạt động
- Ít trao đổi
- Độ rõ ràng
- Đặc tả rõ ràng
- Mức phù hợp với người mới
- 58/100