Skip to content

Commit e4c8d30

Browse files
authored
Merge pull request #129 from Screenly/feature/undefined_settings
Updates: required string can lack default_value. Updated undefined ap…
2 parents f670bcd + b9b73ec commit e4c8d30

File tree

5 files changed

+23
-33
lines changed

5 files changed

+23
-33
lines changed

src/commands/edge_app.rs

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -406,14 +406,14 @@ impl EdgeAppCommand {
406406
revision: u32,
407407
channel: &String,
408408
) -> Result<(), CommandError> {
409-
let secrets = self.get_undefined_secrets(app_id)?;
409+
let secrets = self.get_undefined_settings(app_id)?;
410410
if !secrets.is_empty() {
411-
return Err(CommandError::UndefinedSecrets(serde_json::to_string(
411+
return Err(CommandError::UndefinedSettings(serde_json::to_string(
412412
&secrets,
413413
)?));
414414
}
415415

416-
debug!("All secrets are defined.");
416+
debug!("All settings are defined.");
417417

418418
let get_response = commands::get(
419419
&self.authentication,
@@ -548,18 +548,18 @@ impl EdgeAppCommand {
548548
println!("Mock data for Edge App emulator was generated.");
549549
Ok(())
550550
}
551-
fn get_undefined_secrets(&self, app_id: &str) -> Result<Vec<String>, CommandError> {
551+
fn get_undefined_settings(&self, app_id: &str) -> Result<Vec<String>, CommandError> {
552552
let installation_id = self.get_or_create_installation(app_id)?;
553553

554-
let undefined_secrets_response = commands::get(
554+
let undefined_settings_response = commands::get(
555555
&self.authentication,
556556
&format!(
557-
"v4/edge-apps/secrets/undefined?installation_id={}",
557+
"v4/edge-apps/settings/undefined?installation_id={}",
558558
installation_id
559559
),
560560
)?;
561561

562-
let titles = serde_json::from_value::<Vec<String>>(undefined_secrets_response)?;
562+
let titles = serde_json::from_value::<Vec<String>>(undefined_settings_response)?;
563563

564564
Ok(titles)
565565
}
@@ -2005,9 +2005,9 @@ mod tests {
20052005
});
20062006

20072007
// v4/edge-apps/settings?select=type,default_value,optional,title,help_text&app_id=eq.{}&order=title.asc
2008-
let undefined_secrets_mock = mock_server.mock(|when, then| {
2008+
let undefined_settings_mock = mock_server.mock(|when, then| {
20092009
when.method(GET)
2010-
.path("/v4/edge-apps/secrets/undefined")
2010+
.path("/v4/edge-apps/settings/undefined")
20112011
.header("Authorization", "Token token")
20122012
.header(
20132013
"user-agent",
@@ -2049,7 +2049,7 @@ mod tests {
20492049
get_version_mock.assert();
20502050
installation_mock.assert();
20512051
installation_mock_create.assert();
2052-
undefined_secrets_mock.assert();
2052+
undefined_settings_mock.assert();
20532053
promote_mock.assert();
20542054

20552055
assert!(&result.is_ok());
@@ -2270,7 +2270,7 @@ settings:
22702270
}
22712271

22722272
#[test]
2273-
fn test_promote_when_there_are_undefined_secrets_should_fail() {
2273+
fn test_promote_when_there_are_undefined_settings_should_fail() {
22742274
let mock_server = MockServer::start();
22752275

22762276
let installation_mock = mock_server.mock(|when, then| {
@@ -2310,9 +2310,9 @@ settings:
23102310
});
23112311

23122312
// v4/edge-apps/settings?select=type,default_value,optional,title,help_text&app_id=eq.{}&order=title.asc
2313-
let undefined_secrets_mock = mock_server.mock(|when, then| {
2313+
let undefined_settings_mock = mock_server.mock(|when, then| {
23142314
when.method(GET)
2315-
.path("/v4/edge-apps/secrets/undefined")
2315+
.path("/v4/edge-apps/settings/undefined")
23162316
.header("Authorization", "Token token")
23172317
.header(
23182318
"user-agent",
@@ -2332,10 +2332,10 @@ settings:
23322332

23332333
installation_mock.assert();
23342334
installation_mock_create.assert();
2335-
undefined_secrets_mock.assert();
2335+
undefined_settings_mock.assert();
23362336

23372337
assert!(!&result.is_ok());
2338-
assert!(result.unwrap_err().to_string().contains("Warning: these secrets are undefined: [\"undefined_secret\",\"another_undefined_secret\"]."));
2338+
assert!(result.unwrap_err().to_string().contains("Warning: these settings are required to be defined: [\"undefined_secret\",\"another_undefined_secret\"]."));
23392339
}
23402340

23412341
#[test]
@@ -2394,9 +2394,9 @@ settings:
23942394
});
23952395

23962396
// v4/edge-apps/settings?select=type,default_value,optional,title,help_text&app_id=eq.{}&order=title.asc
2397-
let undefined_secrets_mock = mock_server.mock(|when, then| {
2397+
let undefined_settings_mock = mock_server.mock(|when, then| {
23982398
when.method(GET)
2399-
.path("/v4/edge-apps/secrets/undefined")
2399+
.path("/v4/edge-apps/settings/undefined")
24002400
.header("Authorization", "Token token")
24012401
.header(
24022402
"user-agent",
@@ -2416,7 +2416,7 @@ settings:
24162416
get_version_mock.assert();
24172417
installation_mock.assert();
24182418
installation_mock_create.assert();
2419-
undefined_secrets_mock.assert();
2419+
undefined_settings_mock.assert();
24202420

24212421
assert!(!&result.is_ok());
24222422
assert!(result

src/commands/edge_app_manifest.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -601,7 +601,8 @@ settings:
601601
}
602602

603603
#[test]
604-
fn test_ensure_manifest_is_valid_when_required_string_field_has_no_default_value_should_fail() {
604+
fn test_ensure_manifest_is_valid_when_required_string_field_has_no_default_value_should_succeed(
605+
) {
605606
let dir = tempdir().unwrap();
606607
let file_name = "screenly.yml";
607608
let content = r#"---
@@ -617,8 +618,7 @@ settings:
617618
write_to_tempfile(&dir, file_name, content);
618619
let file_path = dir.path().join(file_name);
619620
let result = EdgeAppManifest::ensure_manifest_is_valid(&file_path);
620-
assert!(result.is_err());
621-
assert!(result.unwrap_err().to_string().contains("Setting \"username\" is of type \"string\" and is not optional, it must have a default value"));
621+
assert!(result.is_ok());
622622
}
623623

624624
#[test]

src/commands/edge_app_server.rs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,6 @@ pub async fn run_server(
5353
.and(warp::path("screenly.js"))
5454
.and(warp::query::<HashMap<String, String>>())
5555
.and_then({
56-
let dir_path = dir_path;
5756
move |params: HashMap<String, String>| {
5857
let dir_path = dir_path.clone();
5958
let secrets_clone = secrets_clone.clone();

src/commands/edge_app_settings.rs

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -72,15 +72,6 @@ where
7272
setting.title
7373
)));
7474
}
75-
if setting.type_ == SettingType::String
76-
&& !setting.optional
77-
&& setting.default_value.is_none()
78-
{
79-
return Err(serde::de::Error::custom(format!(
80-
"Setting \"{}\" is of type \"string\" and is not optional, it must have a default value",
81-
setting.title
82-
)));
83-
}
8475
}
8576

8677
settings.sort_by_key(|s| s.title.clone());

src/commands/mod.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -109,8 +109,8 @@ pub enum CommandError {
109109
InitializationError(String),
110110
#[error("Asset processing error: {0}")]
111111
AssetProcessingError(String),
112-
#[error("Warning: these secrets are undefined: {0}.")]
113-
UndefinedSecrets(String),
112+
#[error("Warning: these settings are required to be defined: {0}.")]
113+
UndefinedSettings(String),
114114
#[error("App id is required. Either in manifest or with --app-id.")]
115115
MissingAppId,
116116
#[error("App id cannot be empty. Provide it either in manifest or with --app-id.")]

0 commit comments

Comments
 (0)