joey shelton / LED_Demo

Dependencies:   MAX44000 PWM_Tone_Library nexpaq_mdk

Fork of LED_Demo by Maxim nexpaq

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers test_m2msecurity.cpp Source File

test_m2msecurity.cpp

00001 /*
00002  * Copyright (c) 2015 ARM Limited. All rights reserved.
00003  * SPDX-License-Identifier: Apache-2.0
00004  * Licensed under the Apache License, Version 2.0 (the License); you may
00005  * not use this file except in compliance with the License.
00006  * You may obtain a copy of the License at
00007  *
00008  * http://www.apache.org/licenses/LICENSE-2.0
00009  *
00010  * Unless required by applicable law or agreed to in writing, software
00011  * distributed under the License is distributed on an AS IS BASIS, WITHOUT
00012  * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00013  * See the License for the specific language governing permissions and
00014  * limitations under the License.
00015  */
00016 #include "CppUTest/TestHarness.h"
00017 #include "test_m2msecurity.h"
00018 #include "m2mobject_stub.h"
00019 #include "m2mobjectinstance_stub.h"
00020 #include "m2mresource_stub.h"
00021 #include "m2mresourceinstance_stub.h"
00022 #include "m2mbase_stub.h"
00023 
00024 class Callback : public M2MObjectCallback {
00025 
00026 public:
00027 
00028     Callback(){}
00029     ~Callback(){}
00030     void notification_update(uint16_t obj_instance_id) {
00031         visited = true;
00032     }
00033 
00034     void clear() {visited = false;}
00035     bool visited;
00036 };
00037 
00038 Test_M2MSecurity::Test_M2MSecurity()
00039 {
00040     callback = new Callback();
00041     m2mobject_stub::inst = new M2MObjectInstance("name",*callback);
00042     m2mresource_stub::bool_value = true;
00043     m2mobjectinstance_stub::create_resource = new M2MResource(*m2mobject_stub::inst,"name","type",M2MResourceInstance::STRING,M2MBase::Dynamic);
00044     security = new M2MSecurity(M2MSecurity::Bootstrap);
00045 
00046     delete m2mobjectinstance_stub::create_resource;
00047     m2mobjectinstance_stub::create_resource = NULL;
00048 }
00049 
00050 Test_M2MSecurity::~Test_M2MSecurity()
00051 {
00052     delete m2mobject_stub::inst;
00053     m2mobject_stub::inst = NULL;
00054     m2mobject_stub::clear();
00055     m2mobjectinstance_stub::clear();
00056     m2mresource_stub::clear();
00057     m2mbase_stub::clear();
00058     delete security;
00059     delete callback;
00060 }
00061 
00062 void Test_M2MSecurity::test_create_resource_int()
00063 {
00064     m2mobjectinstance_stub::create_resource = new M2MResource(*m2mobject_stub::inst,"name","type",M2MResourceInstance::STRING,M2MBase::Dynamic);
00065 
00066     CHECK(security->create_resource(M2MSecurity::M2MServerUri,10) == NULL);
00067     CHECK(security->create_resource(M2MSecurity::BootstrapServer,10) == NULL);
00068     CHECK(security->create_resource(M2MSecurity::SecurityMode,10) == NULL);
00069     CHECK(security->create_resource(M2MSecurity::PublicKey,10) == NULL);
00070     CHECK(security->create_resource(M2MSecurity::ServerPublicKey,10) == NULL);
00071     CHECK(security->create_resource(M2MSecurity::Secretkey,10) == NULL);
00072     CHECK(security->create_resource(M2MSecurity::SMSBindingKey,10) == NULL);
00073     CHECK(security->create_resource(M2MSecurity::SMSBindingSecretKey,10) == NULL);
00074 
00075     CHECK(security->create_resource(M2MSecurity::M2MServerSMSNumber,10) != NULL);
00076     CHECK(security->create_resource(M2MSecurity::ShortServerID,10) != NULL);
00077     CHECK(security->create_resource(M2MSecurity::ClientHoldOffTime,10) != NULL);
00078     CHECK(security->create_resource(M2MSecurity::SMSSecurityMode,10) != NULL);
00079 
00080     delete m2mobjectinstance_stub::create_resource;
00081     m2mobjectinstance_stub::create_resource = NULL;
00082 }
00083 
00084 void Test_M2MSecurity::test_delete_resource()
00085 {
00086     m2mresourceinstance_stub::bool_value = true;
00087     m2mobjectinstance_stub::resource = new M2MResource(*m2mobject_stub::inst,"name","type",M2MResourceInstance::STRING,M2MBase::Dynamic);
00088 
00089     CHECK(security->delete_resource(M2MSecurity::SMSBindingSecretKey) == false);
00090     CHECK(security->delete_resource(M2MSecurity::SMSBindingKey) == false);
00091     CHECK(security->delete_resource(M2MSecurity::M2MServerUri) == false);
00092     CHECK(security->delete_resource(M2MSecurity::Secretkey) == false);
00093     CHECK(security->delete_resource(M2MSecurity::ServerPublicKey) == false);
00094     CHECK(security->delete_resource(M2MSecurity::BootstrapServer) == false);
00095     CHECK(security->delete_resource(M2MSecurity::PublicKey) == false);
00096     CHECK(security->delete_resource(M2MSecurity::SecurityMode) == false);
00097 
00098     m2mobjectinstance_stub::bool_value = true;
00099 
00100     CHECK(security->delete_resource(M2MSecurity::M2MServerSMSNumber) == true);
00101     CHECK(security->delete_resource(M2MSecurity::ShortServerID) == true);
00102     CHECK(security->delete_resource(M2MSecurity::ClientHoldOffTime) == true);
00103     CHECK(security->delete_resource(M2MSecurity::SMSSecurityMode) == true);
00104 
00105     delete m2mobjectinstance_stub::resource;
00106     m2mobjectinstance_stub::resource = NULL;
00107 }
00108 
00109 void Test_M2MSecurity::test_set_resource_value_string()
00110 {
00111     m2mresourceinstance_stub::bool_value = true;
00112     m2mobjectinstance_stub::resource = new M2MResource(*m2mobject_stub::inst,"name","type",M2MResourceInstance::STRING,M2MBase::Dynamic);
00113 
00114     CHECK(security->set_resource_value(M2MSecurity::M2MServerUri,"test") == true);
00115 
00116     CHECK(security->set_resource_value(M2MSecurity::M2MServerSMSNumber,"test") == false);
00117     CHECK(security->set_resource_value(M2MSecurity::ShortServerID,"test") == false);
00118     CHECK(security->set_resource_value(M2MSecurity::SMSBindingKey,"test") == false);
00119     CHECK(security->set_resource_value(M2MSecurity::SMSBindingSecretKey,"test") == false);
00120     CHECK(security->set_resource_value(M2MSecurity::ClientHoldOffTime,"test") == false);
00121     CHECK(security->set_resource_value(M2MSecurity::SMSSecurityMode,"test") == false);
00122     CHECK(security->set_resource_value(M2MSecurity::Secretkey,"test") == false);
00123     CHECK(security->set_resource_value(M2MSecurity::ServerPublicKey,"test") == false);
00124     CHECK(security->set_resource_value(M2MSecurity::PublicKey,"test") == false);
00125     CHECK(security->set_resource_value(M2MSecurity::BootstrapServer,"test") == false);
00126     CHECK(security->set_resource_value(M2MSecurity::SecurityMode,"test") == false);
00127 
00128     delete m2mobjectinstance_stub::resource;
00129     m2mobjectinstance_stub::resource = NULL;
00130 }
00131 
00132 void Test_M2MSecurity::test_set_resource_value_int()
00133 {
00134     m2mresourceinstance_stub::bool_value = true;
00135     m2mobjectinstance_stub::resource = new M2MResource(*m2mobject_stub::inst,"name", "name", M2MResourceInstance::STRING,M2MBase::Dynamic);
00136 
00137     CHECK(security->set_resource_value(M2MSecurity::M2MServerUri,10) == false);
00138     CHECK(security->set_resource_value(M2MSecurity::SMSBindingKey,10) == false);
00139     CHECK(security->set_resource_value(M2MSecurity::SMSBindingSecretKey,10) == false);
00140     CHECK(security->set_resource_value(M2MSecurity::Secretkey,10) == false);
00141     CHECK(security->set_resource_value(M2MSecurity::ServerPublicKey,10) == false);
00142     CHECK(security->set_resource_value(M2MSecurity::PublicKey,10) == false);
00143     CHECK(security->set_resource_value(M2MSecurity::BootstrapServer,10) == false);
00144 
00145     CHECK(security->set_resource_value(M2MSecurity::SecurityMode,10) == true);
00146     CHECK(security->set_resource_value(M2MSecurity::SMSSecurityMode,10) == true);
00147     CHECK(security->set_resource_value(M2MSecurity::M2MServerSMSNumber,10) == true);
00148     CHECK(security->set_resource_value(M2MSecurity::ShortServerID,10) == true);
00149     CHECK(security->set_resource_value(M2MSecurity::ClientHoldOffTime,10) == true);
00150 
00151     delete m2mobjectinstance_stub::resource;
00152     m2mobjectinstance_stub::resource = NULL;
00153 }
00154 
00155 void Test_M2MSecurity::test_set_resource_value_buffer()
00156 {
00157     m2mresourceinstance_stub::bool_value = true;
00158 
00159     uint8_t value[] = {"value"};
00160     uint16_t length = (uint16_t)sizeof(value);
00161 
00162     m2mobjectinstance_stub::resource = new M2MResource(*m2mobject_stub::inst,"name","type",M2MResourceInstance::STRING,M2MBase::Dynamic);
00163 
00164     CHECK(security->set_resource_value(M2MSecurity::Secretkey,value,length) == true);
00165     CHECK(security->set_resource_value(M2MSecurity::ServerPublicKey,value,length) == true);
00166     CHECK(security->set_resource_value(M2MSecurity::PublicKey,value,length) == true);
00167 
00168     CHECK(security->set_resource_value(M2MSecurity::M2MServerUri,value,length) == false);
00169     CHECK(security->set_resource_value(M2MSecurity::SMSBindingKey,value,length) == false);
00170     CHECK(security->set_resource_value(M2MSecurity::SMSBindingSecretKey,value,length) == false);
00171     CHECK(security->set_resource_value(M2MSecurity::BootstrapServer,value,length) == false);
00172 
00173     CHECK(security->set_resource_value(M2MSecurity::SecurityMode,value,length) == false);
00174     CHECK(security->set_resource_value(M2MSecurity::SMSSecurityMode,value,length) == false);
00175     CHECK(security->set_resource_value(M2MSecurity::M2MServerSMSNumber,value,length) == false);
00176     CHECK(security->set_resource_value(M2MSecurity::ShortServerID,value,length) == false);
00177     CHECK(security->set_resource_value(M2MSecurity::ClientHoldOffTime,value,length) == false);
00178 
00179     delete m2mobjectinstance_stub::resource;
00180     m2mobjectinstance_stub::resource = NULL;
00181 }
00182 
00183 void Test_M2MSecurity::test_resource_value_int()
00184 {
00185     m2mresourceinstance_stub::bool_value = true;
00186 
00187     uint8_t value[] = {"10"};
00188     //m2mresourceinstance_stub::value = (uint8_t*)malloc((uint32_t)sizeof(value));
00189     uint8_t size = 0;
00190     m2mresourceinstance_stub::value = String::convert_integer_to_array(10,size);
00191     /*memset(m2mresourceinstance_stub::value,0,(uint32_t)size);
00192     memcpy(m2mresourceinstance_stub::value, 10, size);*/
00193     m2mresourceinstance_stub::int_value = (uint16_t)size;
00194 
00195     m2mobjectinstance_stub::resource = new M2MResource(*m2mobject_stub::inst,
00196                                                        "name",
00197                                                        "type",
00198                                                        M2MResourceInstance::INTEGER,
00199                                                        M2MBase::Dynamic);
00200 
00201     CHECK(security->resource_value_int(M2MSecurity::SecurityMode) == 10);
00202     CHECK(security->resource_value_int(M2MSecurity::SMSSecurityMode) == 10);
00203     CHECK(security->resource_value_int(M2MSecurity::M2MServerSMSNumber) == 10);
00204     CHECK(security->resource_value_int(M2MSecurity::ShortServerID) == 10);
00205     CHECK(security->resource_value_int(M2MSecurity::ClientHoldOffTime) == 10);
00206     CHECK(security->resource_value_int(M2MSecurity::BootstrapServer) == 0);
00207     CHECK(security->resource_value_int(M2MSecurity::PublicKey) == 0);
00208     CHECK(security->resource_value_int(M2MSecurity::ServerPublicKey) == 0);
00209     CHECK(security->resource_value_int(M2MSecurity::Secretkey) == 0);
00210     CHECK(security->resource_value_int(M2MSecurity::SMSBindingSecretKey) == 0);
00211     CHECK(security->resource_value_int(M2MSecurity::SMSBindingKey) == 0);
00212     CHECK(security->resource_value_int(M2MSecurity::M2MServerUri) == 0);
00213 
00214     security->clear_resources();
00215     CHECK(security->resource_value_int(M2MSecurity::SecurityMode) == 0);
00216     CHECK(security->resource_value_int(M2MSecurity::SMSSecurityMode) == 0);
00217     CHECK(security->resource_value_int(M2MSecurity::M2MServerSMSNumber) == 0);
00218     CHECK(security->resource_value_int(M2MSecurity::ShortServerID) == 0);
00219     CHECK(security->resource_value_int(M2MSecurity::ClientHoldOffTime) == 0);
00220     CHECK(security->resource_value_int(M2MSecurity::BootstrapServer) == 0);
00221     CHECK(security->resource_value_int(M2MSecurity::PublicKey) == 0);
00222     CHECK(security->resource_value_int(M2MSecurity::ServerPublicKey) == 0);
00223     CHECK(security->resource_value_int(M2MSecurity::Secretkey) == 0);
00224     CHECK(security->resource_value_int(M2MSecurity::SMSBindingSecretKey) == 0);
00225     CHECK(security->resource_value_int(M2MSecurity::SMSBindingKey) == 0);
00226     CHECK(security->resource_value_int(M2MSecurity::M2MServerUri) == 0);
00227 
00228     delete m2mobjectinstance_stub::resource;
00229     m2mobjectinstance_stub::resource = NULL;
00230 
00231     free(m2mresourceinstance_stub::value);
00232     m2mresourceinstance_stub::value = NULL;
00233 }
00234 
00235 void Test_M2MSecurity::test_resource_value_string()
00236 {
00237     m2mresourceinstance_stub::bool_value = true;
00238     String test = "string";
00239     uint8_t value[] = {"string"};
00240     m2mresourceinstance_stub::value = (uint8_t*)malloc((uint32_t)sizeof(value));
00241     memset(m2mresourceinstance_stub::value,0,(uint32_t)sizeof(value));
00242     memcpy(m2mresourceinstance_stub::value,value,sizeof(value));
00243     m2mresourceinstance_stub::int_value = (uint16_t)sizeof(value);
00244 
00245     m2mobjectinstance_stub::resource = new M2MResource(*m2mobject_stub::inst,"name","type",M2MResourceInstance::STRING,M2MBase::Dynamic);
00246 
00247     CHECK(security->resource_value_string(M2MSecurity::M2MServerUri) == test);
00248 
00249     CHECK(security->resource_value_string(M2MSecurity::SMSBindingKey) == "");
00250     CHECK(security->resource_value_string(M2MSecurity::SMSBindingSecretKey) == "");
00251     CHECK(security->resource_value_string(M2MSecurity::Secretkey) == "");
00252     CHECK(security->resource_value_string(M2MSecurity::ServerPublicKey) == "");
00253     CHECK(security->resource_value_string(M2MSecurity::PublicKey) == "");
00254     CHECK(security->resource_value_string(M2MSecurity::BootstrapServer) == "");
00255     CHECK(security->resource_value_string(M2MSecurity::ClientHoldOffTime) == "");
00256     CHECK(security->resource_value_string(M2MSecurity::ShortServerID) == "");
00257     CHECK(security->resource_value_string(M2MSecurity::M2MServerSMSNumber) == "");
00258     CHECK(security->resource_value_string(M2MSecurity::SMSSecurityMode) == "");
00259     CHECK(security->resource_value_string(M2MSecurity::SecurityMode) == "");
00260 
00261     delete m2mobjectinstance_stub::resource;
00262     m2mobjectinstance_stub::resource = NULL;
00263 
00264     free(m2mresourceinstance_stub::value);
00265     m2mresourceinstance_stub::value = NULL;
00266 }
00267 
00268 void Test_M2MSecurity::test_resource_value_buffer()
00269 {
00270     m2mresourceinstance_stub::bool_value = true;
00271 
00272     uint8_t value[] = {"buffer"};
00273     uint8_t *out_value = NULL;
00274 
00275     m2mresourceinstance_stub::value = (uint8_t*)malloc((uint32_t)sizeof(value));
00276     memset(m2mresourceinstance_stub::value,0,(uint32_t)sizeof(value));
00277     memcpy(m2mresourceinstance_stub::value,value,sizeof(value));
00278     m2mresourceinstance_stub::int_value = (uint16_t)sizeof(value);
00279 
00280     m2mobjectinstance_stub::resource = new M2MResource(*m2mobject_stub::inst,"name","type",M2MResourceInstance::STRING,M2MBase::Dynamic);
00281 
00282     CHECK(security->resource_value_buffer(M2MSecurity::Secretkey,out_value) != 0);
00283     CHECK(security->resource_value_buffer(M2MSecurity::ServerPublicKey,out_value) != 0);
00284     CHECK(security->resource_value_buffer(M2MSecurity::PublicKey,out_value) != 0);
00285 
00286     CHECK(security->resource_value_buffer(M2MSecurity::M2MServerUri,out_value) == 0);
00287 
00288     CHECK(security->resource_value_buffer(M2MSecurity::SMSBindingKey,out_value) == 0);
00289     CHECK(security->resource_value_buffer(M2MSecurity::SMSBindingSecretKey,out_value) == 0);
00290     CHECK(security->resource_value_buffer(M2MSecurity::BootstrapServer,out_value) == 0);
00291     CHECK(security->resource_value_buffer(M2MSecurity::ClientHoldOffTime,out_value) == 0);
00292     CHECK(security->resource_value_buffer(M2MSecurity::ShortServerID,out_value) == 0);
00293     CHECK(security->resource_value_buffer(M2MSecurity::M2MServerSMSNumber,out_value) == 0);
00294     CHECK(security->resource_value_buffer(M2MSecurity::SMSSecurityMode,out_value) == 0);
00295     CHECK(security->resource_value_buffer(M2MSecurity::SecurityMode,out_value) == 0);
00296 
00297     const uint8_t *outvalue = NULL;
00298     CHECK(security->resource_value_buffer(M2MSecurity::Secretkey,outvalue) != 0);
00299     CHECK(security->resource_value_buffer(M2MSecurity::ServerPublicKey,outvalue) != 0);
00300     CHECK(security->resource_value_buffer(M2MSecurity::PublicKey,outvalue) != 0);
00301 
00302     free(out_value);
00303     out_value = NULL;
00304 
00305     delete m2mobjectinstance_stub::resource;
00306     m2mobjectinstance_stub::resource = NULL;
00307 
00308     free(m2mresourceinstance_stub::value);
00309     m2mresourceinstance_stub::value = NULL;
00310 }
00311 
00312 void Test_M2MSecurity::test_is_resource_present()
00313 {
00314     m2mobjectinstance_stub::resource = new M2MResource(*m2mobject_stub::inst,"name","type",M2MResourceInstance::STRING,M2MBase::Dynamic);
00315 
00316     CHECK(security->is_resource_present(M2MSecurity::M2MServerUri) == true);
00317 
00318     delete m2mobjectinstance_stub::resource;
00319     m2mobjectinstance_stub::resource = NULL;
00320 
00321     CHECK(security->is_resource_present(M2MSecurity::ClientHoldOffTime) == false);
00322 }
00323 
00324 void Test_M2MSecurity::test_total_resource_count()
00325 {
00326     M2MResource *res = new M2MResource(*m2mobject_stub::inst,"test","test",M2MResourceInstance::STRING,M2MBase::Dynamic);
00327 
00328     m2mobjectinstance_stub::resource_list.push_back(res);
00329     M2MResource *res2 = new M2MResource(*m2mobject_stub::inst,"test","test",M2MResourceInstance::STRING,M2MBase::Dynamic);
00330 
00331     m2mobjectinstance_stub::resource_list.push_back(res2);
00332 
00333     CHECK(security->total_resource_count() == 2);
00334 
00335     m2mobjectinstance_stub::resource_list.clear();
00336 
00337     delete res2;
00338     delete res;
00339 }
00340 
00341 void Test_M2MSecurity::test_m2m_server_constructor()
00342 {
00343     m2mobjectinstance_stub::create_resource = new M2MResource(*m2mobject_stub::inst,"name","type",M2MResourceInstance::STRING,M2MBase::Dynamic);
00344 
00345     M2MSecurity* sec = new M2MSecurity(M2MSecurity::M2MServer);
00346     CHECK(M2MSecurity::M2MServer == sec->server_type());
00347 
00348     delete sec;
00349     delete m2mobjectinstance_stub::create_resource;
00350     m2mobjectinstance_stub::create_resource = NULL;
00351 }
00352 
00353 void Test_M2MSecurity::test_server_type()
00354 {
00355     CHECK(M2MSecurity::Bootstrap ==security->server_type());
00356 }