Skip to content

[TT-12308] Query parameters not respected by OAS import endpoint #7087

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Conversation

MaciekMis
Copy link
Contributor

@MaciekMis MaciekMis commented May 28, 2025

User description

TT-12308
Summary Query parameters not respected by OAS import endpoint
Type Bug Bug
Status In Dev
Points N/A
Labels codilime_refined

Description

When using the Dashboard API’s OAS import endpoint to create an API from an OpenAPI document, boolean query parameters (allowList, mockResponse, validateRequest, authentication) with the value false are ignored unless the listenPath parameter is also provided. This due func IsZero not recognizing bool pointer as a non zero value.

Related Issue

Motivation and Context

How This Has Been Tested

Screenshots (if appropriate)

Types of changes

  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to change)
  • Refactoring or add test (improvements in base code or adds test coverage to functionality)

Checklist

  • I ensured that the documentation is up to date
  • I explained why this PR updates go.mod in detail with reasoning why it's required
  • I would like a code coverage CI quality gate exception and have explained why

PR Type

Bug fix, Tests


Description

  • Fix IsZero to treat bool pointers as non-zero values

  • Add tests for bool pointer handling in ShouldOmit

  • Ensure OAS import endpoint respects boolean query parameters


Changes walkthrough 📝

Relevant files
Bug fix
reflect.go
Fix IsZero to properly handle bool pointers                           

internal/reflect/reflect.go

  • Updated IsZero to treat non-nil bool pointers as non-zero
  • Added explicit check for bool pointer type in pointer handling
  • +8/-1     
    Tests
    oasutil_test.go
    Add tests for bool pointer omission logic                               

    apidef/oas/oasutil_test.go

  • Added BoolPtr field to test struct
  • Added test cases for false/true bool pointers in ShouldOmit
  • Added helper function for bool pointer creation
  • +9/-0     

    Need help?
  • Type /help how to ... in the comments thread for any questions about PR-Agent usage.
  • Check out the documentation for more information.
  • @buger
    Copy link
    Member

    buger commented May 28, 2025

    I'm a bot and I 👍 this PR title. 🤖

    Copy link
    Contributor

    PR Reviewer Guide 🔍

    Here are some key observations to aid the review process:

    ⏱️ Estimated effort to review: 2 🔵🔵⚪⚪⚪
    🧪 PR contains tests
    🔒 No security concerns identified
    ⚡ Recommended focus areas for review

    Pointer Handling Logic

    The new logic for handling pointers to bool in the IsZero function changes the behavior for all pointer-to-bool values, treating any non-nil pointer as non-zero regardless of its value. This could have unintended side effects for other pointer types or usages. The reviewer should validate that this change does not introduce regressions elsewhere.

    if v.IsNil() {
    	return true
    }
    if v.Elem().Kind() == reflect.Bool {
    	return false
    }
    
    return IsZero(v.Elem())

    Copy link
    Contributor

    PR Code Suggestions ✨

    Explore these optional code suggestions:

    CategorySuggestion                                                                                                                                    Impact
    Possible issue
    Fix zero check for bool pointers

    The current logic will always return false for any non-nil pointer to a bool, even
    if the value is false. This means pointers to false bools will not be considered
    zero, which is incorrect. Instead, explicitly check the value of the pointed-to bool
    and return true if it is false.

    internal/reflect/reflect.go [39-47]

     case reflect.Ptr:
     		if v.IsNil() {
     			return true
     		}
     		if v.Elem().Kind() == reflect.Bool {
    -			return false
    +			return !v.Elem().Bool()
     		}
     
     		return IsZero(v.Elem())
    Suggestion importance[1-10]: 9

    __

    Why: This suggestion correctly identifies and fixes a logic bug: the original code always returns false for non-nil *bool, even if the value is false, which is not the intended "zero" behavior. The improved code properly checks the pointed-to bool value, ensuring accurate zero-value detection for *bool. This is a critical correctness fix.

    High

    Copy link
    Contributor

    API Changes

    no api changes detected

    Copy link

    sonarqubecloud bot commented Jun 2, 2025

    @MaciekMis MaciekMis merged commit 74f898f into master Jun 2, 2025
    41 of 43 checks passed
    @MaciekMis MaciekMis deleted the TT-12308-query-parameters-not-respected-by-oas-import-endpoint branch June 2, 2025 10:17
    @MaciekMis
    Copy link
    Contributor Author

    /release to release-5.8

    Copy link

    tykbot bot commented Jun 2, 2025

    Working on it! Note that it can take a few minutes.

    tykbot bot pushed a commit that referenced this pull request Jun 2, 2025
    ### **User description**
    <details open>
    <summary><a href="https://tyktech.atlassian.net/browse/TT-12308"
    title="TT-12308" target="_blank">TT-12308</a></summary>
      <br />
      <table>
        <tr>
          <th>Summary</th>
          <td>Query parameters not respected by OAS import endpoint</td>
        </tr>
        <tr>
          <th>Type</th>
          <td>
    <img alt="Bug"
    src="https://tyktech.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10303?size=medium"
    />
            Bug
          </td>
        </tr>
        <tr>
          <th>Status</th>
          <td>In Dev</td>
        </tr>
        <tr>
          <th>Points</th>
          <td>N/A</td>
        </tr>
        <tr>
          <th>Labels</th>
    <td><a
    href="https://tyktech.atlassian.net/issues?jql=project%20%3D%20TT%20AND%20labels%20%3D%20codilime_refined%20ORDER%20BY%20created%20DESC"
    title="codilime_refined">codilime_refined</a></td>
        </tr>
      </table>
    </details>
    <!--
      do not remove this marker as it will break jira-lint's functionality.
      added_by_jira_lint
    -->
    
    ---
    
    <!-- Provide a general summary of your changes in the Title above -->
    
    ## Description
    
    When using the Dashboard API’s OAS import endpoint to create an API from
    an OpenAPI document, boolean query parameters (allowList, mockResponse,
    validateRequest, authentication) with the value false are ignored unless
    the listenPath parameter is also provided. This due func IsZero not
    recognizing bool pointer as a non zero value.
    
    ## Related Issue
    
    <!-- This project only accepts pull requests related to open issues. -->
    <!-- If suggesting a new feature or change, please discuss it in an
    issue first. -->
    <!-- If fixing a bug, there should be an issue describing it with steps
    to reproduce. -->
    <!-- OSS: Please link to the issue here. Tyk: please create/link the
    JIRA ticket. -->
    
    ## Motivation and Context
    
    <!-- Why is this change required? What problem does it solve? -->
    
    ## How This Has Been Tested
    
    <!-- Please describe in detail how you tested your changes -->
    <!-- Include details of your testing environment, and the tests -->
    <!-- you ran to see how your change affects other areas of the code,
    etc. -->
    <!-- This information is helpful for reviewers and QA. -->
    
    ## Screenshots (if appropriate)
    
    ## Types of changes
    
    <!-- What types of changes does your code introduce? Put an `x` in all
    the boxes that apply: -->
    
    - [x] Bug fix (non-breaking change which fixes an issue)
    - [ ] New feature (non-breaking change which adds functionality)
    - [ ] Breaking change (fix or feature that would cause existing
    functionality to change)
    - [x] Refactoring or add test (improvements in base code or adds test
    coverage to functionality)
    
    ## Checklist
    
    <!-- Go over all the following points, and put an `x` in all the boxes
    that apply -->
    <!-- If there are no documentation updates required, mark the item as
    checked. -->
    <!-- Raise up any additional concerns not covered by the checklist. -->
    
    - [ ] I ensured that the documentation is up to date
    - [ ] I explained why this PR updates go.mod in detail with reasoning
    why it's required
    - [ ] I would like a code coverage CI quality gate exception and have
    explained why
    
    
    ___
    
    ### **PR Type**
    Bug fix, Tests
    
    
    ___
    
    ### **Description**
    - Fix `IsZero` to treat bool pointers as non-zero values
    
    - Add tests for bool pointer handling in `ShouldOmit`
    
    - Ensure OAS import endpoint respects boolean query parameters
    
    
    ___
    
    
    
    ### **Changes walkthrough** 📝
    <table><thead><tr><th></th><th align="left">Relevant
    files</th></tr></thead><tbody><tr><td><strong>Bug
    fix</strong></td><td><table>
    <tr>
      <td>
        <details>
    <summary><strong>reflect.go</strong><dd><code>Fix IsZero to properly
    handle bool pointers</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
    &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </dd></summary>
    <hr>
    
    internal/reflect/reflect.go
    
    <li>Updated <code>IsZero</code> to treat non-nil bool pointers as
    non-zero<br> <li> Added explicit check for bool pointer type in pointer
    handling
    
    
    </details>
    
    
      </td>
    <td><a
    href="https://github.com/TykTechnologies/tyk/pull/7087/files#diff-e8975fcdc2226608fd31ef31fea201f98c70d9f575a35ab7bda3d6bac0303af9">+8/-1</a>&nbsp;
    &nbsp; &nbsp; </td>
    
    </tr>
    </table></td></tr><tr><td><strong>Tests</strong></td><td><table>
    <tr>
      <td>
        <details>
    <summary><strong>oasutil_test.go</strong><dd><code>Add tests for bool
    pointer omission logic</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
    &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
    </dd></summary>
    <hr>
    
    apidef/oas/oasutil_test.go
    
    <li>Added <code>BoolPtr</code> field to test struct<br> <li> Added test
    cases for false/true bool pointers in <code>ShouldOmit</code><br> <li>
    Added helper function for bool pointer creation
    
    
    </details>
    
    
      </td>
    <td><a
    href="https://github.com/TykTechnologies/tyk/pull/7087/files#diff-5b7d1bac0c0bcef49668f280688032b3f365336c3b39d8f0574ee5412ab05759">+9/-0</a>&nbsp;
    &nbsp; &nbsp; </td>
    
    </tr>
    </table></td></tr></tr></tbody></table>
    
    ___
    
    > <details> <summary> Need help?</summary><li>Type <code>/help how to
    ...</code> in the comments thread for any questions about PR-Agent
    usage.</li><li>Check out the <a
    href="https://qodo-merge-docs.qodo.ai/usage-guide/">documentation</a>
    for more information.</li></details>
    
    Co-authored-by: Laurentiu <[email protected]>
    
    (cherry picked from commit 74f898f)
    Copy link

    tykbot bot commented Jun 2, 2025

    @MaciekMis Created merge PRs

    buger added a commit that referenced this pull request Jun 2, 2025
    …OAS import endpoint (#7087)
    
    [TT-12308] Query parameters not respected by OAS import endpoint (#7087)
    
    ### **User description**
    <details open>
    <summary><a href="https://tyktech.atlassian.net/browse/TT-12308"
    title="TT-12308" target="_blank">TT-12308</a></summary>
      <br />
      <table>
        <tr>
          <th>Summary</th>
          <td>Query parameters not respected by OAS import endpoint</td>
        </tr>
        <tr>
          <th>Type</th>
          <td>
    <img alt="Bug"
    src="https://tyktech.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10303?size=medium"
    />
            Bug
          </td>
        </tr>
        <tr>
          <th>Status</th>
          <td>In Dev</td>
        </tr>
        <tr>
          <th>Points</th>
          <td>N/A</td>
        </tr>
        <tr>
          <th>Labels</th>
    <td><a
    href="https://tyktech.atlassian.net/issues?jql=project%20%3D%20TT%20AND%20labels%20%3D%20codilime_refined%20ORDER%20BY%20created%20DESC"
    title="codilime_refined">codilime_refined</a></td>
        </tr>
      </table>
    </details>
    <!--
      do not remove this marker as it will break jira-lint's functionality.
      added_by_jira_lint
    -->
    
    ---
    
    <!-- Provide a general summary of your changes in the Title above -->
    
    ## Description
    
    When using the Dashboard API’s OAS import endpoint to create an API from
    an OpenAPI document, boolean query parameters (allowList, mockResponse,
    validateRequest, authentication) with the value false are ignored unless
    the listenPath parameter is also provided. This due func IsZero not
    recognizing bool pointer as a non zero value.
    
    ## Related Issue
    
    <!-- This project only accepts pull requests related to open issues. -->
    <!-- If suggesting a new feature or change, please discuss it in an
    issue first. -->
    <!-- If fixing a bug, there should be an issue describing it with steps
    to reproduce. -->
    <!-- OSS: Please link to the issue here. Tyk: please create/link the
    JIRA ticket. -->
    
    ## Motivation and Context
    
    <!-- Why is this change required? What problem does it solve? -->
    
    ## How This Has Been Tested
    
    <!-- Please describe in detail how you tested your changes -->
    <!-- Include details of your testing environment, and the tests -->
    <!-- you ran to see how your change affects other areas of the code,
    etc. -->
    <!-- This information is helpful for reviewers and QA. -->
    
    ## Screenshots (if appropriate)
    
    ## Types of changes
    
    <!-- What types of changes does your code introduce? Put an `x` in all
    the boxes that apply: -->
    
    - [x] Bug fix (non-breaking change which fixes an issue)
    - [ ] New feature (non-breaking change which adds functionality)
    - [ ] Breaking change (fix or feature that would cause existing
    functionality to change)
    - [x] Refactoring or add test (improvements in base code or adds test
    coverage to functionality)
    
    ## Checklist
    
    <!-- Go over all the following points, and put an `x` in all the boxes
    that apply -->
    <!-- If there are no documentation updates required, mark the item as
    checked. -->
    <!-- Raise up any additional concerns not covered by the checklist. -->
    
    - [ ] I ensured that the documentation is up to date
    - [ ] I explained why this PR updates go.mod in detail with reasoning
    why it's required
    - [ ] I would like a code coverage CI quality gate exception and have
    explained why
    
    
    ___
    
    ### **PR Type**
    Bug fix, Tests
    
    
    ___
    
    ### **Description**
    - Fix `IsZero` to treat bool pointers as non-zero values
    
    - Add tests for bool pointer handling in `ShouldOmit`
    
    - Ensure OAS import endpoint respects boolean query parameters
    
    
    ___
    
    
    
    ### **Changes walkthrough** 📝
    <table><thead><tr><th></th><th align="left">Relevant
    files</th></tr></thead><tbody><tr><td><strong>Bug
    fix</strong></td><td><table>
    <tr>
      <td>
        <details>
    <summary><strong>reflect.go</strong><dd><code>Fix IsZero to properly
    handle bool pointers</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
    &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </dd></summary>
    <hr>
    
    internal/reflect/reflect.go
    
    <li>Updated <code>IsZero</code> to treat non-nil bool pointers as
    non-zero<br> <li> Added explicit check for bool pointer type in pointer
    handling
    
    
    </details>
    
    
      </td>
    <td><a
    href="https://github.com/TykTechnologies/tyk/pull/7087/files#diff-e8975fcdc2226608fd31ef31fea201f98c70d9f575a35ab7bda3d6bac0303af9">+8/-1</a>&nbsp;
    &nbsp; &nbsp; </td>
    
    </tr>
    </table></td></tr><tr><td><strong>Tests</strong></td><td><table>
    <tr>
      <td>
        <details>
    <summary><strong>oasutil_test.go</strong><dd><code>Add tests for bool
    pointer omission logic</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
    &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
    </dd></summary>
    <hr>
    
    apidef/oas/oasutil_test.go
    
    <li>Added <code>BoolPtr</code> field to test struct<br> <li> Added test
    cases for false/true bool pointers in <code>ShouldOmit</code><br> <li>
    Added helper function for bool pointer creation
    
    
    </details>
    
    
      </td>
    <td><a
    href="https://github.com/TykTechnologies/tyk/pull/7087/files#diff-5b7d1bac0c0bcef49668f280688032b3f365336c3b39d8f0574ee5412ab05759">+9/-0</a>&nbsp;
    &nbsp; &nbsp; </td>
    
    </tr>
    </table></td></tr></tr></tbody></table>
    
    ___
    
    > <details> <summary> Need help?</summary><li>Type <code>/help how to
    ...</code> in the comments thread for any questions about PR-Agent
    usage.</li><li>Check out the <a
    href="https://qodo-merge-docs.qodo.ai/usage-guide/">documentation</a>
    for more information.</li></details>
    
    Co-authored-by: Laurentiu <[email protected]>
    Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
    Projects
    None yet
    Development

    Successfully merging this pull request may close these issues.

    4 participants