Azure / Azure/static-web-apps-cli

Wildcard routes aren't supported properly in config

Ouverte
#792 4 commentaires 1 réaction 0 personnes assignées Voir sur GitHub
Langage dominant
TypeScript
Étoiles
668
Forks
156
Métriques de merge des PR
Aucune PR mergée en 30 j

Description

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
```

Guide de contribution

Ouvrir le guide de contribution

Piste de recherche

Commencez par le code de conversion des jokers couvert par les tests glob.spec.ts mentionnés, puis reproduisez le cas /manage* avec /manage/events. Ajoutez un test de régression pour le modèle de route et vérifiez le comportement de correspondance généré ainsi que l'ensemble de la suite de tests glob.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Évaluation

Stack technique
typescript
Domaine
cli
Type d'issue
Bug
Difficulté
2/5
Temps estimé
1-3 heures
Activité
Calme
Clarté
Clairement spécifiée
Accessibilité débutants
58/100

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.