Как предоставить отдельные примеры для каждого кода состояния HTTP? - PullRequest
1 голос
/ 06 июля 2019

Я столкнулся с проблемой при попытке дать команду Dredd выдать разные запросы для запуска двух разных сценариев: успех с кодом 201 и сбой с кодом 400.

Я пытался настроить отдельный пример для кода состояния HTTP, но не смог этого сделать. Я могу добавить секцию example в requestBody, но тогда она будет использоваться в обоих примерах - для успеха и неудачи.

openapi: 3.0.2
info:  
  description: Body example per HTTP code illustration  
  version: 1.0.0  
  title: Profile 
tags:
  - name: profile
    description: User profiles
paths:  
  /profiles:
    post:     
      tags:        
        - profiles
      summary: Create profile
      operationId: createProfile
      requestBody:        
        description: Create Profile
        content:          
          application/json:            
            schema:              
              $ref: '#/components/schemas/CreateProfile'
        required: true      
      responses:        
        '201':          
          description: Successful operation          
          headers:            
            Location:              
              schema:                
                type: string                
                description: Profile location        
        '400':          
          description: Profile is invalid (missing fields/null values)
          content:            
            application/json:              
              schema:                
                $ref: '#/components/schemas/ProfileCreationError'              
              examples:                
                failing_scenrio:                  
                  summary: An example tailored to work with Dredd                  
                  value:                   
                    name: can't be blank                    
                    email: can't be blank
components:  
  schemas:    
    CreateProfile:      
      type: object      
      required:        
        - name        
        - email        
        - age     
      properties:        
        name:          
          type: string        
        email:          
          type: string        
        age:          
          type: integer          
          format: int32          
          minimum: 0    
    ProfileCreationError:      
      type: object      
      properties:        
        name:          
          type: string        
        email:          
          type: string        
        age:          
          type: integer

Я хотел бы иметь возможность запускать тесты для обоих кодов HTTP: 201 и 400. Бонусные баллы за пример того, как сделать то же самое с параметром path. Например, чтобы предоставить как найденные, так и не найденные примеры для /profiles/{id} (т.е. 200 и 404).

1 Ответ

0 голосов
/ 08 июля 2019

Поддержка OpenAPI 3 в настоящее время (июль 2019 г., Dredd v11.2.9) является экспериментальной, и это конкретное поведение до сих пор не определено.Проблема отслеживается как проблема GitHub # 1257 .Я рекомендую вам подписаться на проблему, чтобы узнать, когда она будет решена, или рассмотреть вопрос о предоставлении решения.

...