From ea936eaae461cd7043c5c809e37472f266e8a9f2 Mon Sep 17 00:00:00 2001
From: William Walker <wnwalker@ucsc.edu>
Date: Tue, 25 Mar 2025 10:10:06 -0700
Subject: [PATCH] fix: add new user_status field added by 2025.2.0

--Add new user_status field to User model (new platform API release from vendor)
--Add test to generate report listing all test student users with no email
---
 .../kotlin/edu/ucsc/its/temerity/model/Users.kt |  3 +++
 .../ucsc/its/temerity/test/ProdUtilityTests.kt  | 17 ++++++++++++++++-
 2 files changed, 19 insertions(+), 1 deletion(-)

diff --git a/temerity/src/commonMain/kotlin/edu/ucsc/its/temerity/model/Users.kt b/temerity/src/commonMain/kotlin/edu/ucsc/its/temerity/model/Users.kt
index 70832e0..2d57605 100644
--- a/temerity/src/commonMain/kotlin/edu/ucsc/its/temerity/model/Users.kt
+++ b/temerity/src/commonMain/kotlin/edu/ucsc/its/temerity/model/Users.kt
@@ -28,6 +28,9 @@ import kotlinx.serialization.Serializable
 public data class User(
   @SerialName("login_id")
   val loginId: String = "",
+  
+  @SerialName("user_status")
+  val userStatus: String = "",
 
   @SerialName("email_address")
   val emailAddress: String = "",
diff --git a/temerity/src/jvmTest/kotlin/edu/ucsc/its/temerity/test/ProdUtilityTests.kt b/temerity/src/jvmTest/kotlin/edu/ucsc/its/temerity/test/ProdUtilityTests.kt
index 4dfbc5f..fe76ae5 100644
--- a/temerity/src/jvmTest/kotlin/edu/ucsc/its/temerity/test/ProdUtilityTests.kt
+++ b/temerity/src/jvmTest/kotlin/edu/ucsc/its/temerity/test/ProdUtilityTests.kt
@@ -19,11 +19,14 @@
 
 package edu.ucsc.its.temerity.test
 
+import edu.ucsc.its.temerity.util.currentDate
 import io.kotest.common.ExperimentalKotest
 import io.kotest.common.KotestInternal
 import io.kotest.engine.runBlocking
 import kotlin.time.Duration.Companion.hours
 import kotlin.time.Duration.Companion.minutes
+import org.jetbrains.kotlinx.dataframe.api.toDataFrame
+import org.jetbrains.kotlinx.dataframe.io.writeCSV
 
 private class ProdUtilityTests : TemProdFunSpec() {
 
@@ -48,5 +51,17 @@ private class ProdUtilityTests : TemProdFunSpec() {
         kermit.d("Deleted $deletedUsers test student users.")
       }
     }
-  }
+    
+    test("Generate a report listing all Canvas Test Student users").config(blockingTest = true, timeout = 12.hours) {
+        runBlocking {
+          val testStudentList = testTemerity.getUsers().filter {
+            it.firstName.startsWith("test", ignoreCase = true) &&
+              it.lastName.startsWith("student", ignoreCase = true) &&
+              it.emailAddress.isEmpty()
+          }
+          kermit.d("Found ${testStudentList.size} test student users.")
+          testStudentList.toDataFrame().writeCSV("test-student-users-${currentDate()}.csv")
+        }
+      }
+    }
 }
-- 
GitLab