Skip to content

Commit

Permalink
fix(web): add Retrofit2SyncCall.execute to ClouddriverService in Cred…
Browse files Browse the repository at this point in the history
…entialsController
  • Loading branch information
kirangodishala committed Feb 28, 2025
1 parent f8a3011 commit 2d2c9ee
Show file tree
Hide file tree
Showing 3 changed files with 11 additions and 15 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ import com.netflix.spinnaker.gate.services.internal.ClouddriverService
import com.netflix.spinnaker.gate.services.internal.ClouddriverService.Account
import com.netflix.spinnaker.gate.services.internal.ClouddriverService.AccountDetails
import com.netflix.spinnaker.kork.annotations.Alpha
import com.netflix.spinnaker.kork.retrofit.Retrofit2SyncCall
import com.netflix.spinnaker.security.User
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
Expand Down Expand Up @@ -101,7 +102,7 @@ class CredentialsController {
@Parameter(description='Account name to start account definition listing from. Used for pagination.')
@RequestParam(required = false) String startingAccountName
) {
clouddriverService.getAccountDefinitionsByType(accountType, limit, startingAccountName)
Retrofit2SyncCall.execute(clouddriverService.getAccountDefinitionsByType(accountType, limit, startingAccountName))
}

@PostMapping
Expand All @@ -111,7 +112,7 @@ class CredentialsController {
@Parameter(description='Account definition body including a discriminator field named "type" with the account type.')
@RequestBody ClouddriverService.AccountDefinition accountDefinition
) {
clouddriverService.createAccountDefinition(accountDefinition)
Retrofit2SyncCall.execute(clouddriverService.createAccountDefinition(accountDefinition))
}

@PutMapping
Expand All @@ -121,7 +122,7 @@ class CredentialsController {
@Parameter(description='Account definition body including a discriminator field named "type" with the account type.')
@RequestBody ClouddriverService.AccountDefinition accountDefinition
) {
clouddriverService.updateAccountDefinition(accountDefinition)
Retrofit2SyncCall.execute(clouddriverService.updateAccountDefinition(accountDefinition))
}

@DeleteMapping('/{accountName}')
Expand All @@ -131,6 +132,6 @@ class CredentialsController {
@Parameter(description='Name of account definition to delete.')
@PathVariable String accountName
) {
clouddriverService.deleteAccountDefinition(accountName)
Retrofit2SyncCall.execute(clouddriverService.deleteAccountDefinition(accountName))
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ import org.springframework.mock.web.MockHttpServletResponse
import org.springframework.test.web.servlet.MockMvc
import org.springframework.test.web.servlet.setup.MockMvcBuilders
import org.springframework.web.accept.ContentNegotiationManagerFactoryBean
import retrofit2.mock.Calls
import spock.lang.Specification
import spock.lang.Subject
import spock.lang.Unroll
Expand Down Expand Up @@ -91,7 +92,7 @@ class CredentialsControllerSpec extends Specification {

then:
response.status == 200
1 * clouddriverService.getAccountDefinitionsByType(accountType, _, _)
1 * clouddriverService.getAccountDefinitionsByType(accountType, _, _) >> Calls.response(null)

where:
accountType | _
Expand All @@ -110,7 +111,7 @@ class CredentialsControllerSpec extends Specification {

then:
response.status == 200
1 * clouddriverService.getAccountDefinitionsByType(accountType, limit, startingAccountName)
1 * clouddriverService.getAccountDefinitionsByType(accountType, limit, startingAccountName) >> Calls.response(null)

where:
accountType | limit | startingAccountName
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,9 +23,9 @@
import static com.netflix.spinnaker.kork.common.Header.ACCOUNTS;
import static com.netflix.spinnaker.kork.common.Header.REQUEST_ID;
import static com.netflix.spinnaker.kork.common.Header.USER;
import static org.hamcrest.Matchers.containsString;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.header;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
import static org.springframework.test.web.servlet.setup.MockMvcBuilders.webAppContextSetup;
Expand Down Expand Up @@ -123,7 +123,6 @@ void invokeAccountDefinitionsByType() throws Exception {
.willReturn(
aResponse().withStatus(HttpStatus.OK.value()).withBody(accountDefinitionJson)));

// TODO: Fix the error so that the expected response matches the clouddriver's response
webAppMockMvc
.perform(
get("/credentials/type/sometype")
Expand All @@ -132,13 +131,8 @@ void invokeAccountDefinitionsByType() throws Exception {
.header(REQUEST_ID.getHeader(), SUBMITTED_REQUEST_ID)
.header(ACCOUNTS.getHeader(), ACCOUNT))
.andDo(print())
.andExpect(status().is5xxServerError())
.andExpect(
status()
.reason(
containsString(
"Cannot cast object 'com.netflix.spinnaker.kork.retrofit.ErrorHandlingExecutorCallAdapterFactory$ExecutorCallbackCall")))
.andExpect(status().reason(containsString("to class 'java.util.List'")))
.andExpect(status().is2xxSuccessful())
.andExpect(content().string(accountDefinitionJson))
.andExpect(header().string(REQUEST_ID.getHeader(), SUBMITTED_REQUEST_ID));
}
}

0 comments on commit 2d2c9ee

Please sign in to comment.