forked from loafle/openapi-generator-original
[Rust/Rust Server] Fix example/test code (#19318)
* [Rust Server] Fix code so examples compile Zero length arrays don't correctly type infer, so if we have no scopes, we need to not create a empty array We need an authentication middleware - without it the code doesn't compile. * Update samples * [Rust Server] Remove trailing whitespace * Update samples * [Rust Server] [CI] Build all targets * [Rust] Fix reqwest test
This commit is contained in:
parent
4b493358a8
commit
ad7acc30eb
2
.github/workflows/samples-rust.yaml
vendored
2
.github/workflows/samples-rust.yaml
vendored
@ -34,4 +34,4 @@ jobs:
|
||||
toolchain: stable
|
||||
- name: Build
|
||||
working-directory: ${{ matrix.sample }}
|
||||
run: cargo build
|
||||
run: cargo build --all-targets
|
||||
|
@ -26,6 +26,7 @@ import io.swagger.v3.oas.models.media.XML;
|
||||
import io.swagger.v3.oas.models.parameters.Parameter;
|
||||
import io.swagger.v3.oas.models.parameters.RequestBody;
|
||||
import io.swagger.v3.oas.models.responses.ApiResponse;
|
||||
import io.swagger.v3.oas.models.security.SecurityScheme;
|
||||
import io.swagger.v3.oas.models.servers.Server;
|
||||
import joptsimple.internal.Strings;
|
||||
import lombok.Setter;
|
||||
@ -1108,6 +1109,20 @@ public class RustServerCodegen extends AbstractRustCodegen implements CodegenCon
|
||||
bundle.put("callbacks", callbackData);
|
||||
}
|
||||
|
||||
// Flag whether we have any OAuth scopes
|
||||
Map<String, SecurityScheme> securitySchemeMap = openAPI.getComponents() != null ? openAPI.getComponents().getSecuritySchemes() : null;
|
||||
List<CodegenSecurity> authMethods = fromSecurity(securitySchemeMap);
|
||||
boolean hasAuthScopes = false;
|
||||
if (authMethods != null && !authMethods.isEmpty()) {
|
||||
for (CodegenSecurity authMethod : authMethods) {
|
||||
if (authMethod.hasScopes != null && authMethod.hasScopes) {
|
||||
hasAuthScopes = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
bundle.put("hasAuthScopes", hasAuthScopes);
|
||||
|
||||
return super.postProcessSupportingFileData(bundle);
|
||||
}
|
||||
|
||||
|
@ -80,7 +80,6 @@ fn main() {
|
||||
// In a real (production) system this Bearer token should be obtained via an external Identity/Authentication-server
|
||||
// Ensure that you set the correct algorithm and encodingkey that matches what is used on the server side.
|
||||
// See https://github.com/Keats/jsonwebtoken for more information
|
||||
|
||||
let auth_token = build_token(
|
||||
Claims {
|
||||
sub: "tester@acme.com".to_owned(),
|
||||
@ -90,13 +89,19 @@ fn main() {
|
||||
aud: "org.acme.Resource_Server".to_string(),
|
||||
exp: 10000000000,
|
||||
// In this example code all available Scopes are added, so the current Bearer Token gets fully authorization.
|
||||
scopes: [
|
||||
scopes:
|
||||
{{#hasAuthScopes}}
|
||||
[
|
||||
{{#authMethods}}
|
||||
{{#scopes}}
|
||||
"{{{scope}}}",
|
||||
{{/scopes}}
|
||||
{{/authMethods}}
|
||||
].join(", ")
|
||||
].join::<&str>(", ")
|
||||
{{/hasAuthScopes}}
|
||||
{{^hasAuthScopes}}
|
||||
"".to_owned()
|
||||
{{/hasAuthScopes}}
|
||||
},
|
||||
b"secret").unwrap();
|
||||
|
||||
|
@ -15,6 +15,7 @@ use log::{error, debug};
|
||||
|
||||
/// Get a dummy claim with full permissions (all scopes) for testing purposes
|
||||
fn full_permission_claim() -> Claims {
|
||||
// In this example code all available Scopes are added, so the current Bearer Token gets fully authorization.
|
||||
Claims {
|
||||
sub: "tester@acme.com".to_owned(),
|
||||
company: "ACME".to_owned(),
|
||||
@ -22,14 +23,19 @@ fn full_permission_claim() -> Claims {
|
||||
aud: "org.acme.Resource_Server".to_string(),
|
||||
// added a very long expiry time
|
||||
exp: 10000000000,
|
||||
// In this example code all available Scopes are added, so the current Bearer Token gets fully authorization.
|
||||
scopes: [
|
||||
scopes:
|
||||
{{#hasAuthScopes}}
|
||||
[
|
||||
{{#authMethods}}
|
||||
{{#scopes}}
|
||||
"{{{scope}}}",
|
||||
{{/scopes}}
|
||||
{{/authMethods}}
|
||||
].join(", ")
|
||||
].join::<&str>(", ")
|
||||
{{/hasAuthScopes}}
|
||||
{{^hasAuthScopes}}
|
||||
"".to_owned()
|
||||
{{/hasAuthScopes}}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -30,9 +30,7 @@ pub async fn create(addr: &str, https: bool) {
|
||||
|
||||
let service = MakeService::new(server);
|
||||
|
||||
// This pushes a fourth layer of the middleware-stack even though Swagger assumes only three levels.
|
||||
// This fourth layer creates an accept-all policy, hower the example-code already acchieves the same via a Bearer-token with full permissions, so next line is not needed (anymore).
|
||||
// let service = MakeAllowAllAuthenticator::new(service, "cosmo");
|
||||
let service = MakeAllowAllAuthenticator::new(service, "cosmo");
|
||||
|
||||
#[allow(unused_mut)]
|
||||
let mut service =
|
||||
|
@ -12,7 +12,8 @@ fn test_types() {
|
||||
double: 45.56,
|
||||
string: String::from("something"),
|
||||
boolean: true,
|
||||
uuid: Uuid::new_v4()
|
||||
uuid: Uuid::new_v4(),
|
||||
bytes: vec![1,2,3,4]
|
||||
};
|
||||
assert_eq!(type_of(tt.int32), "i32");
|
||||
assert_eq!(type_of(tt.int64), "i64");
|
||||
|
@ -61,7 +61,6 @@ fn main() {
|
||||
// In a real (production) system this Bearer token should be obtained via an external Identity/Authentication-server
|
||||
// Ensure that you set the correct algorithm and encodingkey that matches what is used on the server side.
|
||||
// See https://github.com/Keats/jsonwebtoken for more information
|
||||
|
||||
let auth_token = build_token(
|
||||
Claims {
|
||||
sub: "tester@acme.com".to_owned(),
|
||||
@ -71,8 +70,8 @@ fn main() {
|
||||
aud: "org.acme.Resource_Server".to_string(),
|
||||
exp: 10000000000,
|
||||
// In this example code all available Scopes are added, so the current Bearer Token gets fully authorization.
|
||||
scopes: [
|
||||
].join(", ")
|
||||
scopes:
|
||||
"".to_owned()
|
||||
},
|
||||
b"secret").unwrap();
|
||||
|
||||
|
@ -30,9 +30,7 @@ pub async fn create(addr: &str, https: bool) {
|
||||
|
||||
let service = MakeService::new(server);
|
||||
|
||||
// This pushes a fourth layer of the middleware-stack even though Swagger assumes only three levels.
|
||||
// This fourth layer creates an accept-all policy, hower the example-code already acchieves the same via a Bearer-token with full permissions, so next line is not needed (anymore).
|
||||
// let service = MakeAllowAllAuthenticator::new(service, "cosmo");
|
||||
let service = MakeAllowAllAuthenticator::new(service, "cosmo");
|
||||
|
||||
#[allow(unused_mut)]
|
||||
let mut service =
|
||||
|
@ -15,6 +15,7 @@ use log::{error, debug};
|
||||
|
||||
/// Get a dummy claim with full permissions (all scopes) for testing purposes
|
||||
fn full_permission_claim() -> Claims {
|
||||
// In this example code all available Scopes are added, so the current Bearer Token gets fully authorization.
|
||||
Claims {
|
||||
sub: "tester@acme.com".to_owned(),
|
||||
company: "ACME".to_owned(),
|
||||
@ -22,9 +23,8 @@ fn full_permission_claim() -> Claims {
|
||||
aud: "org.acme.Resource_Server".to_string(),
|
||||
// added a very long expiry time
|
||||
exp: 10000000000,
|
||||
// In this example code all available Scopes are added, so the current Bearer Token gets fully authorization.
|
||||
scopes: [
|
||||
].join(", ")
|
||||
scopes:
|
||||
"".to_owned()
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -56,7 +56,6 @@ fn main() {
|
||||
// In a real (production) system this Bearer token should be obtained via an external Identity/Authentication-server
|
||||
// Ensure that you set the correct algorithm and encodingkey that matches what is used on the server side.
|
||||
// See https://github.com/Keats/jsonwebtoken for more information
|
||||
|
||||
let auth_token = build_token(
|
||||
Claims {
|
||||
sub: "tester@acme.com".to_owned(),
|
||||
@ -66,8 +65,8 @@ fn main() {
|
||||
aud: "org.acme.Resource_Server".to_string(),
|
||||
exp: 10000000000,
|
||||
// In this example code all available Scopes are added, so the current Bearer Token gets fully authorization.
|
||||
scopes: [
|
||||
].join(", ")
|
||||
scopes:
|
||||
"".to_owned()
|
||||
},
|
||||
b"secret").unwrap();
|
||||
|
||||
|
@ -30,9 +30,7 @@ pub async fn create(addr: &str, https: bool) {
|
||||
|
||||
let service = MakeService::new(server);
|
||||
|
||||
// This pushes a fourth layer of the middleware-stack even though Swagger assumes only three levels.
|
||||
// This fourth layer creates an accept-all policy, hower the example-code already acchieves the same via a Bearer-token with full permissions, so next line is not needed (anymore).
|
||||
// let service = MakeAllowAllAuthenticator::new(service, "cosmo");
|
||||
let service = MakeAllowAllAuthenticator::new(service, "cosmo");
|
||||
|
||||
#[allow(unused_mut)]
|
||||
let mut service =
|
||||
|
@ -15,6 +15,7 @@ use log::{error, debug};
|
||||
|
||||
/// Get a dummy claim with full permissions (all scopes) for testing purposes
|
||||
fn full_permission_claim() -> Claims {
|
||||
// In this example code all available Scopes are added, so the current Bearer Token gets fully authorization.
|
||||
Claims {
|
||||
sub: "tester@acme.com".to_owned(),
|
||||
company: "ACME".to_owned(),
|
||||
@ -22,9 +23,8 @@ fn full_permission_claim() -> Claims {
|
||||
aud: "org.acme.Resource_Server".to_string(),
|
||||
// added a very long expiry time
|
||||
exp: 10000000000,
|
||||
// In this example code all available Scopes are added, so the current Bearer Token gets fully authorization.
|
||||
scopes: [
|
||||
].join(", ")
|
||||
scopes:
|
||||
"".to_owned()
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -107,7 +107,6 @@ fn main() {
|
||||
// In a real (production) system this Bearer token should be obtained via an external Identity/Authentication-server
|
||||
// Ensure that you set the correct algorithm and encodingkey that matches what is used on the server side.
|
||||
// See https://github.com/Keats/jsonwebtoken for more information
|
||||
|
||||
let auth_token = build_token(
|
||||
Claims {
|
||||
sub: "tester@acme.com".to_owned(),
|
||||
@ -117,10 +116,11 @@ fn main() {
|
||||
aud: "org.acme.Resource_Server".to_string(),
|
||||
exp: 10000000000,
|
||||
// In this example code all available Scopes are added, so the current Bearer Token gets fully authorization.
|
||||
scopes: [
|
||||
scopes:
|
||||
[
|
||||
"test.read",
|
||||
"test.write",
|
||||
].join(", ")
|
||||
].join::<&str>(", ")
|
||||
},
|
||||
b"secret").unwrap();
|
||||
|
||||
|
@ -30,9 +30,7 @@ pub async fn create(addr: &str, https: bool) {
|
||||
|
||||
let service = MakeService::new(server);
|
||||
|
||||
// This pushes a fourth layer of the middleware-stack even though Swagger assumes only three levels.
|
||||
// This fourth layer creates an accept-all policy, hower the example-code already acchieves the same via a Bearer-token with full permissions, so next line is not needed (anymore).
|
||||
// let service = MakeAllowAllAuthenticator::new(service, "cosmo");
|
||||
let service = MakeAllowAllAuthenticator::new(service, "cosmo");
|
||||
|
||||
#[allow(unused_mut)]
|
||||
let mut service =
|
||||
|
@ -30,9 +30,7 @@ pub async fn create(addr: &str, https: bool) {
|
||||
|
||||
let service = MakeService::new(server);
|
||||
|
||||
// This pushes a fourth layer of the middleware-stack even though Swagger assumes only three levels.
|
||||
// This fourth layer creates an accept-all policy, hower the example-code already acchieves the same via a Bearer-token with full permissions, so next line is not needed (anymore).
|
||||
// let service = MakeAllowAllAuthenticator::new(service, "cosmo");
|
||||
let service = MakeAllowAllAuthenticator::new(service, "cosmo");
|
||||
|
||||
#[allow(unused_mut)]
|
||||
let mut service =
|
||||
|
@ -15,6 +15,7 @@ use log::{error, debug};
|
||||
|
||||
/// Get a dummy claim with full permissions (all scopes) for testing purposes
|
||||
fn full_permission_claim() -> Claims {
|
||||
// In this example code all available Scopes are added, so the current Bearer Token gets fully authorization.
|
||||
Claims {
|
||||
sub: "tester@acme.com".to_owned(),
|
||||
company: "ACME".to_owned(),
|
||||
@ -22,11 +23,11 @@ fn full_permission_claim() -> Claims {
|
||||
aud: "org.acme.Resource_Server".to_string(),
|
||||
// added a very long expiry time
|
||||
exp: 10000000000,
|
||||
// In this example code all available Scopes are added, so the current Bearer Token gets fully authorization.
|
||||
scopes: [
|
||||
scopes:
|
||||
[
|
||||
"test.read",
|
||||
"test.write",
|
||||
].join(", ")
|
||||
].join::<&str>(", ")
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -129,7 +129,6 @@ fn main() {
|
||||
// In a real (production) system this Bearer token should be obtained via an external Identity/Authentication-server
|
||||
// Ensure that you set the correct algorithm and encodingkey that matches what is used on the server side.
|
||||
// See https://github.com/Keats/jsonwebtoken for more information
|
||||
|
||||
let auth_token = build_token(
|
||||
Claims {
|
||||
sub: "tester@acme.com".to_owned(),
|
||||
@ -139,8 +138,8 @@ fn main() {
|
||||
aud: "org.acme.Resource_Server".to_string(),
|
||||
exp: 10000000000,
|
||||
// In this example code all available Scopes are added, so the current Bearer Token gets fully authorization.
|
||||
scopes: [
|
||||
].join(", ")
|
||||
scopes:
|
||||
"".to_owned()
|
||||
},
|
||||
b"secret").unwrap();
|
||||
|
||||
|
@ -30,9 +30,7 @@ pub async fn create(addr: &str, https: bool) {
|
||||
|
||||
let service = MakeService::new(server);
|
||||
|
||||
// This pushes a fourth layer of the middleware-stack even though Swagger assumes only three levels.
|
||||
// This fourth layer creates an accept-all policy, hower the example-code already acchieves the same via a Bearer-token with full permissions, so next line is not needed (anymore).
|
||||
// let service = MakeAllowAllAuthenticator::new(service, "cosmo");
|
||||
let service = MakeAllowAllAuthenticator::new(service, "cosmo");
|
||||
|
||||
#[allow(unused_mut)]
|
||||
let mut service =
|
||||
|
@ -15,6 +15,7 @@ use log::{error, debug};
|
||||
|
||||
/// Get a dummy claim with full permissions (all scopes) for testing purposes
|
||||
fn full_permission_claim() -> Claims {
|
||||
// In this example code all available Scopes are added, so the current Bearer Token gets fully authorization.
|
||||
Claims {
|
||||
sub: "tester@acme.com".to_owned(),
|
||||
company: "ACME".to_owned(),
|
||||
@ -22,9 +23,8 @@ fn full_permission_claim() -> Claims {
|
||||
aud: "org.acme.Resource_Server".to_string(),
|
||||
// added a very long expiry time
|
||||
exp: 10000000000,
|
||||
// In this example code all available Scopes are added, so the current Bearer Token gets fully authorization.
|
||||
scopes: [
|
||||
].join(", ")
|
||||
scopes:
|
||||
"".to_owned()
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -115,7 +115,6 @@ fn main() {
|
||||
// In a real (production) system this Bearer token should be obtained via an external Identity/Authentication-server
|
||||
// Ensure that you set the correct algorithm and encodingkey that matches what is used on the server side.
|
||||
// See https://github.com/Keats/jsonwebtoken for more information
|
||||
|
||||
let auth_token = build_token(
|
||||
Claims {
|
||||
sub: "tester@acme.com".to_owned(),
|
||||
@ -125,10 +124,11 @@ fn main() {
|
||||
aud: "org.acme.Resource_Server".to_string(),
|
||||
exp: 10000000000,
|
||||
// In this example code all available Scopes are added, so the current Bearer Token gets fully authorization.
|
||||
scopes: [
|
||||
scopes:
|
||||
[
|
||||
"write:pets",
|
||||
"read:pets",
|
||||
].join(", ")
|
||||
].join::<&str>(", ")
|
||||
},
|
||||
b"secret").unwrap();
|
||||
|
||||
|
@ -30,9 +30,7 @@ pub async fn create(addr: &str, https: bool) {
|
||||
|
||||
let service = MakeService::new(server);
|
||||
|
||||
// This pushes a fourth layer of the middleware-stack even though Swagger assumes only three levels.
|
||||
// This fourth layer creates an accept-all policy, hower the example-code already acchieves the same via a Bearer-token with full permissions, so next line is not needed (anymore).
|
||||
// let service = MakeAllowAllAuthenticator::new(service, "cosmo");
|
||||
let service = MakeAllowAllAuthenticator::new(service, "cosmo");
|
||||
|
||||
#[allow(unused_mut)]
|
||||
let mut service =
|
||||
|
@ -15,6 +15,7 @@ use log::{error, debug};
|
||||
|
||||
/// Get a dummy claim with full permissions (all scopes) for testing purposes
|
||||
fn full_permission_claim() -> Claims {
|
||||
// In this example code all available Scopes are added, so the current Bearer Token gets fully authorization.
|
||||
Claims {
|
||||
sub: "tester@acme.com".to_owned(),
|
||||
company: "ACME".to_owned(),
|
||||
@ -22,11 +23,11 @@ fn full_permission_claim() -> Claims {
|
||||
aud: "org.acme.Resource_Server".to_string(),
|
||||
// added a very long expiry time
|
||||
exp: 10000000000,
|
||||
// In this example code all available Scopes are added, so the current Bearer Token gets fully authorization.
|
||||
scopes: [
|
||||
scopes:
|
||||
[
|
||||
"write:pets",
|
||||
"read:pets",
|
||||
].join(", ")
|
||||
].join::<&str>(", ")
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -57,7 +57,6 @@ fn main() {
|
||||
// In a real (production) system this Bearer token should be obtained via an external Identity/Authentication-server
|
||||
// Ensure that you set the correct algorithm and encodingkey that matches what is used on the server side.
|
||||
// See https://github.com/Keats/jsonwebtoken for more information
|
||||
|
||||
let auth_token = build_token(
|
||||
Claims {
|
||||
sub: "tester@acme.com".to_owned(),
|
||||
@ -67,8 +66,8 @@ fn main() {
|
||||
aud: "org.acme.Resource_Server".to_string(),
|
||||
exp: 10000000000,
|
||||
// In this example code all available Scopes are added, so the current Bearer Token gets fully authorization.
|
||||
scopes: [
|
||||
].join(", ")
|
||||
scopes:
|
||||
"".to_owned()
|
||||
},
|
||||
b"secret").unwrap();
|
||||
|
||||
|
@ -30,9 +30,7 @@ pub async fn create(addr: &str, https: bool) {
|
||||
|
||||
let service = MakeService::new(server);
|
||||
|
||||
// This pushes a fourth layer of the middleware-stack even though Swagger assumes only three levels.
|
||||
// This fourth layer creates an accept-all policy, hower the example-code already acchieves the same via a Bearer-token with full permissions, so next line is not needed (anymore).
|
||||
// let service = MakeAllowAllAuthenticator::new(service, "cosmo");
|
||||
let service = MakeAllowAllAuthenticator::new(service, "cosmo");
|
||||
|
||||
#[allow(unused_mut)]
|
||||
let mut service =
|
||||
|
@ -15,6 +15,7 @@ use log::{error, debug};
|
||||
|
||||
/// Get a dummy claim with full permissions (all scopes) for testing purposes
|
||||
fn full_permission_claim() -> Claims {
|
||||
// In this example code all available Scopes are added, so the current Bearer Token gets fully authorization.
|
||||
Claims {
|
||||
sub: "tester@acme.com".to_owned(),
|
||||
company: "ACME".to_owned(),
|
||||
@ -22,9 +23,8 @@ fn full_permission_claim() -> Claims {
|
||||
aud: "org.acme.Resource_Server".to_string(),
|
||||
// added a very long expiry time
|
||||
exp: 10000000000,
|
||||
// In this example code all available Scopes are added, so the current Bearer Token gets fully authorization.
|
||||
scopes: [
|
||||
].join(", ")
|
||||
scopes:
|
||||
"".to_owned()
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -71,7 +71,6 @@ fn main() {
|
||||
// In a real (production) system this Bearer token should be obtained via an external Identity/Authentication-server
|
||||
// Ensure that you set the correct algorithm and encodingkey that matches what is used on the server side.
|
||||
// See https://github.com/Keats/jsonwebtoken for more information
|
||||
|
||||
let auth_token = build_token(
|
||||
Claims {
|
||||
sub: "tester@acme.com".to_owned(),
|
||||
@ -81,8 +80,8 @@ fn main() {
|
||||
aud: "org.acme.Resource_Server".to_string(),
|
||||
exp: 10000000000,
|
||||
// In this example code all available Scopes are added, so the current Bearer Token gets fully authorization.
|
||||
scopes: [
|
||||
].join(", ")
|
||||
scopes:
|
||||
"".to_owned()
|
||||
},
|
||||
b"secret").unwrap();
|
||||
|
||||
|
@ -30,9 +30,7 @@ pub async fn create(addr: &str, https: bool) {
|
||||
|
||||
let service = MakeService::new(server);
|
||||
|
||||
// This pushes a fourth layer of the middleware-stack even though Swagger assumes only three levels.
|
||||
// This fourth layer creates an accept-all policy, hower the example-code already acchieves the same via a Bearer-token with full permissions, so next line is not needed (anymore).
|
||||
// let service = MakeAllowAllAuthenticator::new(service, "cosmo");
|
||||
let service = MakeAllowAllAuthenticator::new(service, "cosmo");
|
||||
|
||||
#[allow(unused_mut)]
|
||||
let mut service =
|
||||
|
@ -15,6 +15,7 @@ use log::{error, debug};
|
||||
|
||||
/// Get a dummy claim with full permissions (all scopes) for testing purposes
|
||||
fn full_permission_claim() -> Claims {
|
||||
// In this example code all available Scopes are added, so the current Bearer Token gets fully authorization.
|
||||
Claims {
|
||||
sub: "tester@acme.com".to_owned(),
|
||||
company: "ACME".to_owned(),
|
||||
@ -22,9 +23,8 @@ fn full_permission_claim() -> Claims {
|
||||
aud: "org.acme.Resource_Server".to_string(),
|
||||
// added a very long expiry time
|
||||
exp: 10000000000,
|
||||
// In this example code all available Scopes are added, so the current Bearer Token gets fully authorization.
|
||||
scopes: [
|
||||
].join(", ")
|
||||
scopes:
|
||||
"".to_owned()
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user