diff --git a/openbsc/tests/sgsn/Makefile.am b/openbsc/tests/sgsn/Makefile.am
index f822aac..0e5d009 100644
--- a/openbsc/tests/sgsn/Makefile.am
+++ b/openbsc/tests/sgsn/Makefile.am
@@ -6,6 +6,9 @@
 noinst_PROGRAMS = sgsn_test
 
 sgsn_test_SOURCES = sgsn_test.c
+sgsn_test_LDFLAGS = \
+	-Wl,--wrap=sgsn_update_subscriber_data
+
 sgsn_test_LDADD = \
 	$(top_builddir)/src/gprs/gprs_llc_parse.o \
 	$(top_builddir)/src/gprs/gprs_llc.o \
@@ -16,6 +19,8 @@
 	$(top_builddir)/src/gprs/sgsn_vty.o \
 	$(top_builddir)/src/gprs/sgsn_libgtp.o \
 	$(top_builddir)/src/gprs/sgsn_auth.o \
+	$(top_builddir)/src/gprs/gprs_subscriber.o \
+	$(top_builddir)/src/libcommon/libcommon.a \
 	$(LIBOSMOCORE_LIBS) \
 	$(LIBOSMOGSM_LIBS) \
 	$(LIBOSMOGB_LIBS) \
diff --git a/openbsc/tests/sgsn/sgsn_test.c b/openbsc/tests/sgsn/sgsn_test.c
index 533c393..2eb6f38 100644
--- a/openbsc/tests/sgsn/sgsn_test.c
+++ b/openbsc/tests/sgsn/sgsn_test.c
@@ -23,6 +23,7 @@
 #include <openbsc/sgsn.h>
 #include <openbsc/gprs_gmm.h>
 #include <openbsc/debug.h>
+#include <openbsc/gsm_subscriber.h>
 
 #include <osmocom/gprs/gprs_bssgp.h>
 
@@ -55,6 +56,18 @@
 	return 0;
 }
 
+/* override, requires '-Wl,--wrap=sgsn_update_subscriber_data' */
+void __real_sgsn_update_subscriber_data(struct sgsn_mm_ctx *, struct gsm_subscriber *);
+void (*update_subscriber_data_cb)(struct sgsn_mm_ctx *, struct gsm_subscriber *) =
+    &__real_sgsn_update_subscriber_data;
+
+void __wrap_sgsn_update_subscriber_data(struct sgsn_mm_ctx *mmctx,
+					struct gsm_subscriber *subscr)
+{
+	(*update_subscriber_data_cb)(mmctx, subscr);
+}
+
+
 static int count(struct llist_head *head)
 {
 	struct llist_head *cur;
@@ -146,6 +159,88 @@
 	OSMO_ASSERT(count(gprs_llme_list()) == 0);
 }
 
+struct gsm_subscriber *last_updated_subscr = NULL;
+void my_dummy_sgsn_update_subscriber_data(struct sgsn_mm_ctx *mmctx,
+					  struct gsm_subscriber *subscr)
+{
+	fprintf(stderr, "Called %s, mmctx = %p, subscr = %p\n",
+		__func__, mmctx, subscr);
+	last_updated_subscr = subscr;
+}
+
+static void test_subscriber(void)
+{
+	struct gsm_subscriber *s1, *s2, *s1found, *s2found;
+	const char *imsi1 = "1234567890";
+	const char *imsi2 = "9876543210";
+
+	update_subscriber_data_cb = my_dummy_sgsn_update_subscriber_data;
+
+	printf("Testing core subscriber data API\n");
+
+	/* Check for emptiness */
+	OSMO_ASSERT(gprs_subscr_get_by_imsi(imsi1) == NULL);
+	OSMO_ASSERT(gprs_subscr_get_by_imsi(imsi2) == NULL);
+
+	/* Allocate entry 1 */
+	s1 = gprs_subscr_get_or_create(imsi1);
+	s1->flags |= GSM_SUBSCRIBER_FIRST_CONTACT;
+	s1found = gprs_subscr_get_by_imsi(imsi1);
+	OSMO_ASSERT(s1found == s1);
+	OSMO_ASSERT(gprs_subscr_get_by_imsi(imsi2) == NULL);
+	subscr_put(s1found);
+
+	/* Allocate entry 2 */
+	s2 = gprs_subscr_get_or_create(imsi2);
+	s2->flags |= GSM_SUBSCRIBER_FIRST_CONTACT;
+	s1found = gprs_subscr_get_by_imsi(imsi1);
+	s2found = gprs_subscr_get_by_imsi(imsi2);
+	OSMO_ASSERT(s1found == s1);
+	OSMO_ASSERT(s2found == s2);
+	subscr_put(s1found);
+	subscr_put(s2found);
+
+	/* Update entry 1 */
+	last_updated_subscr = NULL;
+	gprs_subscr_update(s1);
+	OSMO_ASSERT(last_updated_subscr == s1);
+
+	/* Because of the update, it won't be freed on delete now */
+	gprs_subscr_delete(s1);
+	s1found = gprs_subscr_get_by_imsi(imsi1);
+	OSMO_ASSERT(s1found != NULL);
+	s1 = s1found;
+
+	/* Cancel it, so that delete will free it.
+	 * Refcount it to make sure s1 won't be freed here */
+	last_updated_subscr = NULL;
+	gprs_subscr_put_and_cancel(subscr_get(s1));
+	OSMO_ASSERT(last_updated_subscr == s1);
+
+	/* Cancelled entries are still being found */
+	s1found = gprs_subscr_get_by_imsi(imsi1);
+	OSMO_ASSERT(s1found != NULL);
+	subscr_put(s1found);
+
+	/* Free entry 1 */
+	gprs_subscr_delete(s1);
+	s1 = NULL;
+	s2found = gprs_subscr_get_by_imsi(imsi2);
+	OSMO_ASSERT(gprs_subscr_get_by_imsi(imsi1) == NULL);
+	OSMO_ASSERT(s2found == s2);
+	subscr_put(s2found);
+
+	/* Free entry 2 */
+	gprs_subscr_delete(s2);
+	s2 = NULL;
+	OSMO_ASSERT(gprs_subscr_get_by_imsi(imsi1) == NULL);
+	OSMO_ASSERT(gprs_subscr_get_by_imsi(imsi2) == NULL);
+
+	OSMO_ASSERT(llist_empty(&active_subscribers));
+
+	update_subscriber_data_cb = __real_sgsn_update_subscriber_data;
+}
+
 /*
  * Test that a GMM Detach will remove the MMCTX and the
  * associated LLME.
@@ -778,7 +873,6 @@
 	sgsn->cfg.auth_policy = saved_auth_policy;
 }
 
-
 static struct log_info_cat gprs_categories[] = {
 	[DMM] = {
 		.name = "DMM",
@@ -841,8 +935,10 @@
 	tall_msgb_ctx = talloc_named_const(tall_bsc_ctx, 0, "msgb");
 
 	sgsn_auth_init();
+	gprs_subscr_init(sgsn);
 
 	test_llme();
+	test_subscriber();
 	test_gmm_detach();
 	test_gmm_detach_power_off();
 	test_gmm_detach_no_mmctx();
diff --git a/openbsc/tests/sgsn/sgsn_test.ok b/openbsc/tests/sgsn/sgsn_test.ok
index db96311..1ee80be 100644
--- a/openbsc/tests/sgsn/sgsn_test.ok
+++ b/openbsc/tests/sgsn/sgsn_test.ok
@@ -1,4 +1,5 @@
 Testing LLME allocations
+Testing core subscriber data API
 Testing GMM detach
 Testing GMM detach (power off)
 Testing GMM detach (no MMCTX)
